die Aufforderung dieser WebSite mich mit Nutzernamen und Passwort zu identifizieren.
Dieses Anmelde-Fenster erscheint bereits beim Laden dieses Threads! Sehr merkwürdig.
die Aufforderung dieser WebSite mich mit Nutzernamen und Passwort zu identifizieren.
Dieses Anmelde-Fenster erscheint bereits beim Laden dieses Threads! Sehr merkwürdig.
Die Vornullen lassen sich mit einer Skriptzeile realisieren:
[autoit]For $i = 0 To 999
ConsoleWrite(StringRight("00" & $i, 3) & @CRLF)
Next
Hier mein Gedankengang mal als PAP:
Die Nummerierung der Menüeinträge für die user.properties solltest du nicht mit fixen Werten belegen. Deine Installation würde meine properties abschießen, da alle diese Nummern bereits vergeben sind ![]()
Du mußt disch schon entscheiden:
Entweder verwendest du OnEvent-Mode oder GuiGetMsg-Mode - beides zusammen geht nicht. ![]()
Bei den ganzen funktionen die listview anbietet kann ich mir gar nicht vorstellen das dem wirklich so ist!
Glaub es ruhig. Lösung bisher so:
#include <ListViewConstants.au3>
#include <StructureConstants.au3>
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>
#include <WindowsConstants.au3>
Opt('MustDeclareVars', 1)
[/autoit] [autoit][/autoit] [autoit]Global $hListView, $B_DESCENDING
GUICreate("ListView SimpleSort", 400, 300)
$hListView = GUICtrlCreateListView("col1|col2|col3", 2, 2, 394, 268)
GUICtrlSendMsg($hListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
GUICtrlSendMsg($hListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
GUICtrlCreateListViewItem("line4|5|more_a", $hListView)
GUICtrlCreateListViewItem("line5|4.50 |more_c", $hListView)
GUICtrlCreateListViewItem("line5|4.0 |more_c", $hListView)
GUICtrlCreateListViewItem("line3|23|more_e", $hListView)
GUICtrlCreateListViewItem("line2|0.34560 |more_d", $hListView)
GUICtrlCreateListViewItem("line1|1.0 |more_b", $hListView)
GUICtrlCreateListViewItem("line1|0.1 |more_b", $hListView)
GUICtrlCreateListViewItem("line1|10|more_b", $hListView)
_GUICtrlListView_SetColumnWidth($hListView, 0, 75)
_GUICtrlListView_SetColumnWidth($hListView, 1, 75)
_GUICtrlListView_SetColumnWidth($hListView, 2, 75)
GUISetState()
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
Global $B_DESCENDING[_GUICtrlListView_GetColumnCount($hListView)]
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete()
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
#forceref $hWnd, $iMsg, $iwParam
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo
$hWndListView = $hListView
If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)
$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
If ($hWndFrom = $hWndListView) And ($iCode = $LVN_COLUMNCLICK) Then
$tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
_GUICtrlListView_SimpleSort($hWndListView, $B_DESCENDING, DllStructGetData($tInfo, "SubItem"))
EndIf
EndFunc ;==>WM_NOTIFY
Alizame:
Hast du keine Shift-Taste auf deiner Tastatur?
Es gehört zum guten Umgangston, seinem Gegenüber einen lesbaren Text zu präsentieren. Nur Kleinschreibung ist genauso unmöglich, wie Schreiben ohne Interpunktion.
Beachte das bitte in Zukunft.
Der Aufruf der Funktionen muß innerhalb der WM_NOTIFY erfolgen, im:
Case $NM_CUSTOMDRAW
Ob er wirksam ist hab ich noch nicht getestet.
Kannst ja die Funktionen direkt verwenden:
; BeginUpdate
_SendMessage($hListView, 0x000B)
; EndUpdate
_SendMessage($hListView, 0x000B, 1)
Da ich den Inhalt des ListViews immer wieder verändere, sollte auch das Redraw gestoppt werden, während ich z.B. die Spaltenbreite einstelle.
Normalerweise gibt es dazu ja _GUICtrlListView_BeginUpdate und _GUICtrlListView_EndUpdate, aber das scheint den WM_NOTIFY nicht wirklich zu interessieren, oder gibt es da auch was dazu?
Bei jeder Aktion, die eine Änderung der Darstellung bewirkt, wird ein Listview (bzw. der sichtbare Teil) neugezeichnet. Wenn keine Farben im Spiel sind ist das kaum merkbar. Um die wechselnden Farben zu realisieren ist es erforderlich auf jede Veränderung zu reagieren. Ein BeginUpdate/EndUpdate läßt sich nicht verwirklichen - woher sollte WM_NOTIFY wissen, dass keine Veränderung mehr erfolgt und erst dann alles bisherige neuzeichnen?
Man könnte evtl. über eine Zeit-Variable eine erste Änderung registrieren und _BeginUpdate setzen und wenn innerhalb einer Zeit X keine weitere Änderung erfolgt _EndUpdate setzen. Kannst du ja mal testen.
Einmal heißt der Array ja auch $aNKo2 und einmal $aNko2
Da muß ich dich korrigieren. AutoIt unterscheidet nicht zwischen Groß-/Kleinschreibung der Variablennamen. Das ist absolut egal. Eine $VARIABLE kannst du mit $variable weiterbenutzen. ![]()
Ich hab es aus einem größeren Skript auf das Wesentliche reduziert.
Aber die Includes fehlten noch:
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <StructureConstants.au3>
#include <WindowsConstants.au3>
Damit läuft es.
Wegen der anderen Sachen schau ich mal.
Edit:
Also zu den anderen Dingen:
_ArrayFindAll() ist nur begrenzt brauchbar, da im Gegensatz zu dem, was der Funktionsname erwarten läßt, nur die Vorkommen in einer Spalte gefunden werden. Das ist auch der einzige Unterschied zu _ArraySearch(), welches nur das erste Vorkommen in einer Spalte findet.
Um wirklich ALLE Vorkommen zu finden kannst du so vorgehen:
#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]Local $a[4][2] = [[11,22],[12,22],[22,13],[11,15]]
[/autoit] [autoit][/autoit] [autoit]; _ArrayFindAll arbeitet nur innerhalb einer Spalte!
; Um wirklich ALLE Vorkommen zu finden, muß es auf jede Spalte angewendet werden
$search = 22
$sFound = ''
For $i = 0 To UBound($a, 2) -1
$found = _ArrayFindAll($a, $search,0,0,0,0,$i)
For $j = 0 To UBound($found) -1
$sFound &= $found[$j] & ',' & $i & '|'
Next
Next
$sFound = StringTrimRight($sFound, 1)
$aFound = StringSplit($sFound, '|', 2)
[/autoit] [autoit][/autoit] [autoit]Local $aFoundIndexes[UBound($aFound)][2]
For $i = 0 To UBound($aFound) -1
$var = StringSplit($aFound[$i], ',', 2)
$aFoundIndexes[$i][0] = $var[0]
$aFoundIndexes[$i][1] = $var[1]
Next
_ArraySort($aFoundIndexes)
_ArrayDisplay($aFoundIndexes) ; Fundstelle als: [0]=Item/ [1]=SubItem
; === Unterschied beider Funktionen
; _ArraySearch findet das ERSTE Vorkommen des Suchbegriffs in EINER Spalte
; _ArrayFindAll findet ALLE Vorkommen des Suchbegriffs in EINER Spalte
Gibt es auch eine Alternative für den reihenweisen Farbwechsel, also die Alternative zu
GUICtrlSetBkColor($GuiListView, $ColorLVungerade) ; Farbe ungerade Zeilen
GUICtrlSetBkColor($GuiListView, $GUI_BKCOLOR_LV_ALTERNATE)
wenn man das ListView mit _GUICtrlListView_AddArray befüllt?
Klar, kein Problem mit WM_NOTIFY:
$gui = GUICreate('Test 2')
$ListView1 = GUICtrlCreateListView("Col 1|Col 2", 15, 15, 300, 250)
$hLV = GUICtrlGetHandle(-1)
_GUICtrlListView_SetColumnWidth($hLV, 0, 148)
_GUICtrlListView_SetColumnWidth($hLV, 1, 148)
Local $aToFill[30][2]
For $i = 0 To 29
$aToFill[$i][0] = Random(10000, 1000000, 1)
$aToFill[$i][1] = Random(10000, 1000000, 1)
Next
_GUICtrlListView_AddArray($hLV, $aToFill)
GUIRegisterMsg($WM_NOTIFY, 'WM_NOTIFY')
GUISetState()
Do
Until GUIGetMsg() = -3
GUIDelete($gui)
Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam)
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR
$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
If $hWndFrom = $hLV Then
Switch $iCode
Case $NM_CUSTOMDRAW
Local $tCustDraw = DllStructCreate($tagNMLVCUSTOMDRAW, $lParam)
Local $iDrawStage, $iItem, $iSubitem, $hDC, $tRect
$iDrawStage = DllStructGetData($tCustDraw, 'dwDrawStage')
Switch $iDrawStage
Case $CDDS_ITEMPREPAINT
Return $CDRF_NOTIFYSUBITEMDRAW
Case BitOR($CDDS_ITEMPREPAINT, $CDDS_SUBITEM)
$iItem = DllStructGetData($tCustDraw, 'dwItemSpec')
Switch Mod($iItem, 2)
Case 0 ; geradzahlig
DllStructSetData($tCustDraw, 'clrTextBk', 0x23FFFF)
Case 1 ; ungeradzahlig
DllStructSetData($tCustDraw, 'clrTextBk', 0x0044FF)
EndSwitch
Return $CDRF_NEWFONT
EndSwitch
EndSwitch
EndIf
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
Wenn man wirklich eine größere Anzahl Checkboxen verwalten möchte, bietet sich zum Bsp. solche Lösung an:
; Muster Checkbox-Bearbeitung
; Ziel: einfache Abfrage, welche CB aktiviert sind
#include <GUIConstants.au3>
Opt('GUIOnEventMode', 1)
Opt("MustDeclareVars", 1)
Global $bCheckAll, $bUnCheckAll, $GUI, $i, $str
Global $arCB[20][2] ; Array für Handle und Dual-Wert der CB
For $i = 0 To UBound($arCB) -1
$arCB[$i][1] = 2^$i ; Zuweisung eindeutiger Wert
Next
Global $Checked = 0 ; Variable nimmt Status ALLER Checkboxen in einem Wert auf,
; Startstatus für alle: UNCHECKED
Global $w = 500, $h = 20*30+40, $l = (@DesktopWidth-$w)/2, $t = (@DesktopHeight-$h)/2
Global $top = -10
$GUI = GUICreate('Test Checkbox', $w, $h, $l, $t)
GUISetOnEvent($GUI_EVENT_CLOSE, '_Ende')
For $i = 0 To UBound($arCB) -1
$top += 30
$arCB[$i][0] = GUICtrlCreateCheckbox('CheckBox_' & $i+1, 40, $top, 120)
GUICtrlSetOnEvent(-1, '_ClickCB')
Next
$bCheckAll = GUICtrlCreateButton('Alle markieren', 250, 20, 150, 21)
GUICtrlSetOnEvent(-1, '_CheckAll')
$bUnCheckAll = GUICtrlCreateButton('Markierung aufheben', 250, 50, 150, 21)
GUICtrlSetOnEvent(-1, '_UnCheckAll')
GUISetState()
While 1
Sleep(100)
WEnd
Func _Ende()
Exit
EndFunc
Func _ClickCB()
For $i = 0 To UBound($arCB) -1
If $arCB[$i][0] = @GUI_CtrlId Then
$Checked = BitXOR($Checked, $arCB[$i][1])
_ReadCB()
ExitLoop
EndIf
Next
EndFunc
Func _CheckAll()
For $i = 0 To UBound($arCB) -1
If Not BitAND($Checked, $arCB[$i][1]) Then
GUICtrlSetState($arCB[$i][0], $GUI_CHECKED)
$Checked = BitXOR($Checked, $arCB[$i][1])
EndIf
Next
_ReadCB()
EndFunc
Func _UnCheckAll()
For $i = 0 To UBound($arCB) -1
If BitAND($Checked, $arCB[$i][1]) Then
GUICtrlSetState($arCB[$i][0], $GUI_UNCHECKED)
$Checked = BitXOR($Checked, $arCB[$i][1])
EndIf
Next
_ReadCB()
EndFunc
Func _ReadCB() ; Fkt. dient nur zur Ausgabe, welche CB markiert sind
Local $str = 'Markiert: '
For $i = 0 To UBound($arCB) -1
If BitAND($Checked, $arCB[$i][1]) Then $str &= $i+1 & ', '
Next
WinSetTitle($GUI, '', StringTrimRight($str, 2))
EndFunc
Wenn du keinen tatsächlichen Button benötigst, mal dir einfach einen Rahmen auf das Hintergrundbild, damit der User weiß, wo er klicken muß:
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#include <Winapi.au3>
#include <Constants.au3>
#include <FrameConstants.au3>
#include <FontConstants.au3>
Global $guiMain, $hDC, $hBrush, $tRECT
[/autoit] [autoit][/autoit] [autoit]Local $iBar = _WinAPI_GetSystemMetrics(4)
Local $iBorder = _WinAPI_GetSystemMetrics(6)
Local $hFont, $hOldFont
; Werte 'Pseudo-Button' (left,top,right,bottom)
Global $sButton = 'Pseudo-Button' ; Button-Text
Local $iFontSize = 16 ; Schriftgröße
Local $iFontWidth = 400 ; 400 = normal, 600 = fett
Local $bItalic = False ; kursiv
Local $bUnderline = False ; unterstrichen
Local $bStrikeout = False ; durchgestrichen
Local $sFont = 'Comic Sans MS'
Local $ctrl_L = 74
Local $ctrl_T = 130
Local $ctrl_R = $ctrl_L + 100 ; Left +Breite
Local $ctrl_B = $ctrl_T + 20 ; Top +Höhe
$tRECT = DllStructCreate('int;int;int;int;')
DllCall("user32", 'long', 'SetRect', 'ptr', DllStructGetPtr($tRECT), 'long', $ctrl_L, 'long', $ctrl_T, 'long', $ctrl_R, 'long', $ctrl_B)
Local $imgW = 248, $imgH = 281
Local $mPos, $old
$guiMain = GUICreate('Test', $imgW, $imgH, -1, -1)
GUICtrlCreatePic(@SystemDir & '\oobe\images\wpakey.jpg', $iBorder, $iBorder, $imgW, $imgH)
GUICtrlSetState(-1, $GUI_DISABLE)
; === Zeichenfläche / Font / Farben
$hDC = _WinAPI_GetDC($guiMain)
$hBrush = _WinAPI_CreateSolidBrush(0xFF0000)
$hFont = _WinAPI_CreateFont($iFontSize, 0, 0, 0, $iFontWidth, $bItalic, $bUnderline, $bStrikeout, $DEFAULT_CHARSET, _
$OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, $sFont)
_WinAPI_SetTextColor($hDC, 0xFF0000)
_WinAPI_SetBkColor($hDC, 0x000000)
_WinAPI_SelectObject($hDC, $hFont)
_WinAPI_SetBkMode($hDC, $TRANSPARENT)
GUISetState(@SW_SHOW, $guiMain)
GUIRegisterMsg($WM_MOVE, '_WM_MOVE')
_Draw()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While True
Switch GUIGetMsg ()
Case $GUI_EVENT_PRIMARYDOWN
$old = Opt('MouseCoordMode', 0)
$mPos = MouseGetPos()
Opt('MouseCoordMode', $old)
$mPos[1] -= $iBar + 2*$iBorder ; !! Maus hat 0 bei Fensterrand - RECT unterhalb Titelleiste !!
$ret = DllCall("user32.dll", "bool", "PtInRect", "ptr", DllStructGetPtr($tRECT), "long", $mPos[0], "long", $mPos[1])
If $ret[0] > 0 Then
; innerhalb Rectangle geklickt
MsgBox(0, '', 'Klick')
EndIf
Case $GUI_EVENT_RESTORE, $GUI_EVENT_MAXIMIZE
_Draw()
Case -3
Exit
EndSwitch
WEnd
_WinAPI_DeleteObject($hBrush)
_WinAPI_ReleaseDC($guiMain, $hDC)
_WinAPI_SelectObject($hDC, $hOldFont)
_WinAPI_DeleteObject($hFont)
_WinAPI_ReleaseDC(0, $hDC)
_WinAPI_InvalidateRect(0, 0)
Func _WM_MOVE()
_Draw()
EndFunc
Func _Draw()
_WinAPI_FrameRect($hDC, DllStructGetPtr($tRECT), $hBrush)
_WinAPI_DrawText($hDC, $sButton, $tRECT, BitOR($DT_SINGLELINE,$DT_CENTER,$DT_VCENTER))
EndFunc
Edit:
Hab mal noch Beschriftung des "Button" hinzugefügt.
Wie funktionieren Arrays?? Ich weiß was das ist und wozu sie gebraucht werden hab aber keine ahnung wie ich die anwende?
Wenn du weißt, was Arrays sind und wozu man sie verwendet, verstehe ich deine Fragestellung nicht. Möchtest du die speicherinternen Abläufe wissen oder worauf bezieht sich deine Frage?
(Kannst auch mal einen Blick in mein Tut werfen - s. Signatur)
Also ich bekomme genau das heraus, was rauskommen soll ;-):
ConsoleWrite(convert('To be or not to be, that is the question', 'mysecretkey') & @CRLF)
[/autoit] [autoit][/autoit] [autoit]Func convert($text, $key = '')
;~ // return text unaltered if the key is blank
;~ if ($key == '') {
;~ return $text;
;~ }
If $key = '' Then Return $text
;~ // remove the spaces in the key
;~ $key = str_replace(' ', '', $key);
;~ if (strlen($key) <
{
;~ exit('key error');
;~ }
$key = StringReplace($key, Chr(20), '')
Local $key_len = StringLen($key)
If $key_len < 8 Then Return SetError(0)
;~ // set key length to be no more than 32 characters
;~ $key_len = strlen($key);
;~ if ($key_len > 32) {
;~ $key_len = 32;
;~ }
If $key_len > 32 Then $key = StringLeft($key, 32)
;~ $k = array(); // key array
;~ // fill key array with the bitwise AND of the ith key character and 0x1F
;~ for ($i = 0; $i < $key_len; ++$i) {
;~ $k[$i] = ord($key{$i}) & 0x1F;
;~ }
Local $k = StringSplit($key, '', 2)
For $i = 0 To UBound($k) -1
$k[$i] = BitAND(Asc($k[$i]), 0x1F)
Next
;~ // perform encryption/decryption
;~ for ($i = 0, $j = 0; $i < strlen($text); ++$i) {
;~ $e = ord($text{$i});
;~ // if the bitwise AND of this character and 0xE0 is non-zero
;~ // set this character to the bitwise XOR of itself and the jth key element
;~ // else leave this character alone
;~ if ($e & 0xE0) {
;~ $text{$i} = chr($e ^ $k[$j]);
;~ }
;~ // increment j, but ensure that it does not exceed key_len-1
;~ $j = ($j + 1) % $key_len;
;~ }
Local $aText = StringSplit($text, '', 2), $j = 0, $e, $outText = ''
For $i = 0 To UBound($aText) -1
$e = Asc($aText[$i])
If BitAND($e, 0xE0) Then $aText[$i] = Chr(BitXOR($e, $k[$j]))
$j = Mod($j+1, $key_len)
$outText &= $aText[$i]
Next
;~ return $text;
;~ }
Return $outText
EndFunc
Ich habe deinen Code nicht im Detail geprüft - aber einen Fehler habe ich noch gesehen: Du hast "^" als Potenz interpretiert. In php ist das aber BitXOR.
Ich habe gerade keine Möglichkeit zum Testen (sitze in einem Vortrag und poste vom Handy), werde aber heute abend mal testen.
Schleife in Zeile 20-22 ist falsch. Laut Vorgabe gehört dort BitAND hin - du verwendest BitXOR.
OK, ich hab dir hier ein funktionsfähiges Bsp. erstellt.
Das Makro in der Arbeitsmappe speichern, dann klappt das.
#cs === Das Makro zentriert die ausgewählte Zelle:
[/autoit] [autoit][/autoit] [autoit]Sub Align_Z()
'
' Align_Z Makro
' Makro am 18.06.2010 von Standard aufgezeichnet
'
' Tastenkombination: Strg+Umschalt+Z
'
Selection.HorizontalAlignment = xlCenter
End Sub
#ce
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Local $sheet = "C:\test_1\test.xls"
Local $Obj1 = ObjGet($sheet)
If Not IsObj($Obj1) Then Exit MsgBox(0, 'Fehler', 'Excel-Objekt konnte nicht erstellt werden.')
GUICreate('Embedded Excel', 800, 600, -1, -1, $WS_MINIMIZEBOX +$WS_SYSMENU + $WS_CLIPCHILDREN)
$GUI_Excel = GUICtrlCreateObj($Obj1, 10, 60, 780, 470)
$btMacro = GUICtrlCreateButton('Makro: Zentrieren', 260, 540, 100)
; Alle Befehlsschaltflächen deaktivieren:
;~ For $Bar In $Obj1.CommandBars
;~ If $Bar.Enabled = True Then $Bar.Enabled = False
;~ If $Bar.Visible = True Then $Bar.Visible = False
;~ Next
$Obj1.Application.DisplayFormulaBar = False
$Obj1.Application.CommandBars("Shadow Settings").Visible = False
$Obj1.Application.DisplayScrollBars = True
$Obj1.Application.DisplayStatusBar = False
GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]While 1
Switch GUIGetMsg()
Case $btMacro
$Obj1.Application.Run("Align_Z")
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Edit:
Ich hab nochmal geschaut, wo dein Fehler war:
Du hast die Methoden (.Run / .Close) direkt auf das Objekt angewendet - das geht nicht. Diese globalen Operationen müssen immer auf die Applikation bezogen sein: $ObjVariable.Application.Methode(Parameter)
Ich hab hier mal ein Bsp. für Embedded gefunden, weiß nicht mehr, wer das mal gepostet hatte:
#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]$Form1 = GUICreate('Embedded Excel', 600, 600, -1, -1)
For $i = 1 To 3
Switch $i
Case 1
$Obj1 = ObjCreate('OWC.Spreadsheet') ; OWC 9.0 = Excel 2000
Case 2
$Obj1 = ObjCreate('OWC10.Spreadsheet')
Case 3
$Obj1 = ObjCreate('OWC11.Spreadsheet')
EndSwitch
If IsObj($Obj1) Then ExitLoop
Next
If Not IsObj($Obj1) Then Exit MsgBox(0, 'Fehler', 'Excel-Objekt konnte nicht erstellt werden.')
$Obj1_ctrl = GUICtrlCreateObj($Obj1,50, 50,500,500)
[/autoit] [autoit][/autoit] [autoit]With $Obj1
.AutoFit=0
.DisplayGridlines=-1
.DisplayHorizontalScrollBar=0
.DisplayTitleBar=0
.DisplayToolbar=0
.DisplayVerticalScrollBar=0
.EnableEvents=-1
.MoveAfterReturn=-1
.RightToLeft=0
.ViewableRange='1:26'
EndWith
With $Obj1
.range("A1:D1").Font.Size = 16
.range("A1:D1").Font.Color = 0xffffff
.range("A1:D1").Font.Bold = TRUE
.range("A1:D1").Interior.Color = 0x8888ff
.range("C1:D1").Interior.Color = 0xff8888
#region - NICHT mit Excel 2000:
;~ .range("A1:D1").HorizontalAlignment = -4108; -4108 = center, -4131 = left, -4152 = right
;~ .range("A1:D1").VerticalAlignment = -4108; -4108 = center, -4107 = bottom, -4130 = justify, -4160 = top
;~ .Columns("A:G").ColumnWidth = 14
;~ .Rows("1:1").RowHeight = 25
#endregion - NICHT mit Excel 2000
.range('A1').value = 'aaa'
.range('A2').value = '65'
.range('A3').value = '75'
.range('B1').value = 'bbb'
.range('C1').value = 'ccc'
.range('D1').value = 'ddd'
.range('A19').value = 'SUM(A2:A18)'
.range('A20').formula = '=SUM(A2:A18)'
; NICHT mit Excel 2000:
;~ .range('A1').activate
Endwith
GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd