weil es ja eben bei HotKeySet keine Maustasten gibt.
Wer behauptet denn so etwas?
Das hatte mich auch gestört, das ist dabei heraus gekommen: MouseHotKey - Beispiel
weil es ja eben bei HotKeySet keine Maustasten gibt.
Wer behauptet denn so etwas?
Das hatte mich auch gestört, das ist dabei heraus gekommen: MouseHotKey - Beispiel
Dir fehlt eine Arbeitsschleife:
[autoit]While 1
Sleep(100)
WEnd
Da du im OnEventMode arbeitest, brauchst du diese Schleife um das Skript 'am Laufen' zu halten.
Aber in der Func _GUIEvents verwendest du GuiGetMsg!! Beides gleichzeitig geht nicht. Und innerhalb einer Funktion GuiGetMsg anzuwenden ist nur in seltenen Fällen sinnvoll.
Nein, dadran kann es nicht liegen. GuiGetMsg() bewirkt defacto auch ein Sleep().
Ich schau es mal genauer an.
z.B. so:
; 2GUI_GUIGetMsg_1
#include<GUIConstantsEx.au3>
Local $gui1, $gui2, $btn1, $btn2, $msg
$gui1 = GUICreate('GUI 1')
$btn1 = GUICtrlCreateButton('Zeige GUI 2', 10, 20, 100, 20)
$gui2 = GUICreate('GUI 2')
$btn2 = GUICtrlCreateButton('Button 2', 10, 20, 100, 20)
GUISetState(@SW_SHOW, $gui1)
[/autoit] [autoit][/autoit] [autoit]While 1
$msg = GUIGetMsg(1)
Switch $msg[1] ; Window Handle
Case $gui1
Switch $msg[0] ; Event
Case $GUI_EVENT_CLOSE
ExitLoop
Case $btn1
GUISetState(@SW_HIDE, $gui1)
GUISetState(@SW_SHOW, $gui2)
EndSwitch
Case $gui2
Switch $msg[0]
Case $GUI_EVENT_CLOSE
GUISetState(@SW_SHOW, $gui1)
GUISetState(@SW_HIDE, $gui2)
Case $btn2
MsgBox(0, '', 'Button 2 geklickt')
EndSwitch
EndSwitch
WEnd
GUIDelete($gui1)
GUIDelete($gui2)
Ohne Code müssen wir raten.
Es wird irgendwo eine Schleife laufen und dort gehört ein Sleep rein: (50) langt.
Besser wirds so:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
GUICreate("Test", 900, 600)
Dim $Button[8]
For $i = 1 To 7 Step 1
$Button[$i] = GUICtrlCreateButton("Nummer: " & $i, 10, 30 * $i)
Next
GUISetState(@SW_SHOW)
Sleep(1000)
While 1
$msg = GUIGetMsg()
For $i = 1 To 7 Step 1
If $msg = $Button[$i] Then MsgBox(0, 'Klicked', ControlGetText('', '', $Button[$i]))
Next
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Ich nehm dazu GIMP.
- Bild laden
- Farbe zu Transparenz (Farbe wählen)
- fertig
Falls dabei Bestandteile des eigentlichen Bildes heraussubtrahiert werden da Farbgleichheit mit Hintergrund:
- neues Bild gleicher Größe erstellen mit Hintergrund Transparenz
- das eigentliche Bild sauber ausschneiden (mit Lasso fangen geht recht gut) und als neue Ebene auf die transparente packen
- Ebenen vereinen und abspeichern
[OT]
ps dein latein bringt dir da allerdings nicht viel....plural von Datum ist Daten
Völlig korrekt, laut Duden ist der Plural Daten. Da aber somit keine klare Abgrenzung gegen den Informatikbegriff 'Daten' besteht, wird häufig auf Termine zurückgegriffen. In Datenbanken findet man auch noch seltsame Auswüchse wie 'Datumme'. Das wird als Feldbezeichner für Datumswerte Singular und Plural verwendet. ![]()
[/OT]
Transparenz = PNG
Wie kommst du dadrauf? GIF mit Transparenz ist immer noch GIF. PNG ist ein völlig anderes Format.
Darf ich fragen mit welchem Programm du das GUI erstellt hast? Mit dem Koda Designer?
Ja, in diesem Fall habe ich mal Koda verwendet, da 3-mal dieselbe Gruppierung zu erstellen war. Das macht sich dort gut mit Copy&Paste.
Im Normalfall mache ich das alles zu Fuß. ![]()
was ist ein Freud'scher Versprecher?
http://de.wikipedia.org/wiki/Freud'scher_Versprecher
Hier mal ein Muster, kannst ja noch einbauen, dass die Zeiten in einer INI gespeichert werden. So läuft es bis die GUI geschlossen wird (minimieren geht natürlich).
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
Local $sTime = '', $aQuarter[4] = ['00','15','30','45']
For $i = 0 To 23
For $j = 0 To 3
$sTime &= StringRight('0' & $i, 2) & ':' & $aQuarter[$j] & '|'
Next
Next
$sTime = StringTrimRight($sTime, 1)
Global $aCombo[6], $aWatchTime[6]
$gui = GUICreate("Terminstart", 331, 373, 355, 162)
GUISetOnEvent($GUI_EVENT_CLOSE, "TerminstartClose")
$aCombo[0] = GUICtrlCreateCombo("", 48, 67, 97, 25)
$aCombo[1] = GUICtrlCreateCombo("", 175, 67, 97, 25)
$Group1 = GUICtrlCreateGroup(" Termin 1 ", 32, 24, 257, 81)
$Label1 = GUICtrlCreateLabel("Von", 72, 48, 23, 17)
$Label2 = GUICtrlCreateLabel("Bis", 208, 48, 18, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup(" Termin 2 ", 32, 127, 257, 81)
$Label3 = GUICtrlCreateLabel("Von", 72, 151, 23, 17)
$Label4 = GUICtrlCreateLabel("Bis", 208, 151, 18, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$aCombo[2] = GUICtrlCreateCombo("", 51, 176, 97, 25)
$aCombo[3] = GUICtrlCreateCombo("", 178, 176, 97, 25)
$Group3 = GUICtrlCreateGroup(" Termin 3 ", 32, 229, 257, 81)
$Label5 = GUICtrlCreateLabel("Von", 72, 253, 23, 17)
$Label6 = GUICtrlCreateLabel("Bis", 208, 253, 18, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$aCombo[4] = GUICtrlCreateCombo("", 48, 272, 97, 25)
$aCombo[5] = GUICtrlCreateCombo("", 175, 272, 97, 25)
$btStart = GUICtrlCreateButton("Start", 32, 328, 105, 25, $WS_GROUP)
GUICtrlSetOnEvent(-1, "btStartClick")
$btEnde = GUICtrlCreateButton("Ende", 184, 328, 105, 25, $WS_GROUP)
GUICtrlSetOnEvent(-1, "TerminstartClose")
GUISetState(@SW_SHOW)
For $i = 0 To 5
GUICtrlSetData($aCombo[$i], $sTime, '12:00')
Next
While 1
Sleep(100)
WEnd
Func TerminstartClose()
Exit
EndFunc
Func btStartClick()
For $i = 0 To 5
$aWatchTime[$i] = GUICtrlRead($aCombo[$i]) ; <== Hour : Min
Next
AdlibEnable('CheckTime', 60*1000) ; <== 1-mal pro Minute aufrufen
EndFunc
Func CheckTime()
Local $time = @HOUR & ':' & @MIN
For $i = 0 To 5
If $aWatchTime[$i] = $time Then Return startFunc($i +1)
Next
EndFunc
Func startFunc($i)
Switch $i
Case 1 ; Termin 1 - Von
; Funktionsaufruf
Case 2 ; Termin 1 - Bis
; Funktionsaufruf
Case 3 ; Termin 2 - Von
; Funktionsaufruf
Case 4 ; Termin 2 - Bis
; Funktionsaufruf
Case 5 ; Termin 3 - Von
; Funktionsaufruf
Case 6 ; Termin 3 - Bis
; Funktionsaufruf
EndSwitch
EndFunc
3. Kann man das verschieben der Spalten ausschallten? (das ist nicht so wichtig)
Dafür hatte ich schon mal ein Bsp. erstellt:
#include <ListViewConstants.au3>
#include <StructureConstants.au3>
#include<GUIConstantsEx.au3>
#include<WindowsConstants.au3>
#include <GUIListView.au3>
$gui = GUICreate('test')
$hListView = GUICtrlCreateListView('Spalte1|Spalte2', 10, 10, 300, 200)
_GUICtrlListView_SetColumnWidth($hListView, 0, 146)
_GUICtrlListView_SetColumnWidth($hListView, 1, $LVSCW_AUTOSIZE_USEHEADER)
For $i = 1 To 10
GUICtrlCreateListViewItem('Zeile ' & $i & ' Spalte 1|Zeile ' & $i & ' Spalte 2', $hListView)
Next
; hier für Vergleich die Spaltenbreite speichern:
Global $aColumnWidth[_GUICtrlListView_GetColumnCount($hListView)]
For $i = 0 To UBound($aColumnWidth) -1
$aColumnWidth[$i] = _GUICtrlListView_GetColumnWidth($hListView, $i)
Next
GUISetState()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
[/autoit] [autoit][/autoit] [autoit]Do
$msg = GUIGetMsg()
Until $msg = $GUI_EVENT_CLOSE
Func _Columnwidth()
For $i = 0 To UBound($aColumnWidth) -1
If _GUICtrlListView_GetColumnWidth($hListView, $i) <> $aColumnWidth[$i] Then
_GUICtrlListView_SetColumnWidth($hListView, $i, $aColumnWidth[$i])
EndIf
Next
EndFunc
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView
$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")
Switch $hWndFrom
Case $hWndListView
Switch $iCode
Case -12 ; Spaltenbreite wurde verändert
_Columnwidth()
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
Der Hintergrund ist recht simpel.
Raupi hatte grad ein schöpferisches Tief und lechzte nach neuen Aufgaben ![]()
Da ich diese Erweiterung noch in meine Listview-Format-UDF einbauen will, hab ich Raupi empfohlen, sich dadran zu versuchen.
Hintergrund war eigentlich die Problemstellung in eine laufende WM_NOTIFY-Funtion weitere Abfragen auf andere Ctrl und Events zu ermöglichen ohne die Funktion selbst zu verändern.
Bsp.:
Mit der StartUp-Func aus der Listview-Format-UDF wird die im Include laufende WM_NOTIFY-Funtion gestartet. Sollen jetzt weitere WM_NOTIFY-Events verwertet werden, müßte die Include-Datei geändert werden. Und das sollte möglichst vermieden werden.
Ein evtl. einfacherer Programmiervorgang für WM_NOTIFY-Events wäre dann ein angenehmer Nebeneffekt.
#include <ListViewConstants.au3>
#include<GUIConstantsEx.au3>
#include <GUIListView.au3>
$gui = GUICreate('test')
$hListView = GUICtrlCreateListView('Spalte1|Spalte2', 10, 10, 300, 200, -1, BitOR($LVS_EX_TRACKSELECT,$LVS_EX_CHECKBOXES))
_GUICtrlListView_SetColumnWidth($hListView, 0, 146)
_GUICtrlListView_SetColumnWidth($hListView, 1, $LVSCW_AUTOSIZE_USEHEADER)
For $i = 1 To 10
GUICtrlCreateListViewItem('Zeile ' & $i & ' Spalte 1|Zeile ' & $i & ' Spalte 2', $hListView)
Next
GUISetState()
Do
$msg = GUIGetMsg()
Until $msg = $GUI_EVENT_CLOSE
Da ich erst seit Donnerstag Autoit beherrsche weiß ich leider garnicht wie ich an sowas rangehen soll.
Ein gelungener Freud'scher Versprecher.
Was noch von Interesse ist: Soll die Funktion innerhalb der festzulegenden Zeiträume mehrfach oder nur einmalig ausgeführt werden? Wenn mehrfach: In welchen Intervallen?
Programmtechnisch kein großer Aufwand.
Uhrzeit bekommst du per Makros: @Hour, @Min, @Sec
In einer Schleife die Zeit abfragen, vergleichen ob in dem gegebenen Zeitlimit, wenn ja: Funktion starten.
Die Funktion _Feiertage() habe ich erweitert. Es wird zusätzlich der Gültigkeitsbereich ausgegeben (BG = Bundesweit Gesetzlich; ISO-Kürzel BB, BE, BY... für Regionale Gesetzliche Feiertage).
Die Daten können jetzt wahlweise gegliedert nach fixen und variablen Feiertagen (innerhalb sortiert) oder alle Feiertage gemeinsam sortiert ausgegeben werden.
s. Post #1
'BF'
guckst du: [ offen ] Wo sind ö/ä/ü bei _IsPressed?
Das kommt hin, normal befüllter PC
- bei mir 4600 Zeilen ;-).
Da tippe ich mal auf Vista, bei mir sind es etwa 3 Sekunden. ![]()