| |
|
|
Jörg Sellmeyer | Wenn man mehrere gleiche Controls erzeugt, ist die Abfrage mit XProfan X2 leichter geworden. Wenn die Handles in einem Array gespeichert werden, kann man die Abfrage mit IndexOf sehr komfortabel lösen.
Declare cb&[10],btn&[10]
Proc ClickedMultiItem
Parameters b&[]
Declare I%
I% = IndexOf(b&[],%getfocus)
If (I%) > -1
Return Clicked(%getfocus)
EndIf
EndProc
Cls
WhileLoop 0,9
cb&[&Loop] = Create("CheckBox",%hwnd,"CheckBox " + Str$(&Loop + 1),310,10 + &Loop * 25,120,24)
btn&[&Loop] = Create("Button",%hwnd,"Button " + Str$(&Loop + 1),440,10 + &Loop * 25,120,24)
Wend
While 1
WaitInput
If ClickedMultiItem(cb&[])
Print GetText$(%getfocus),"Hier sind die Checkboxen"
ElseIf ClickedMultiItem(btn&[])
Print GetText$(%getfocus),"Hier sind die Buttons"
EndIf
Wend
|
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 28.10.2011 ▲ |
|
|
|
|
Jörg Sellmeyer | Auch den rechten Mausklick kann man abfangen:
Declare cb&[10],ed&[10]
Var Taste$ = "linken,rechten"
Proc RClicked
Parameters h&
Return (%childMessage = 516) And (&wparam = h&)
EndProc
Proc RClickedMultiItem
Parameters b&[]
Declare I%
I% = IndexOf(b&[],&wparam)
If (%childMessage = 516) And (I% > -1)
Return &wparam
Endif
EndProc
Proc ClickedMultiItem
Parameters b&[]
Declare I%
I% = IndexOf(b&[],%getfocus)
If (I%) > -1
Return Clicked(%getfocus)
EndIf
EndProc
Cls
WhileLoop 0,9
cb&[&Loop] = Create("CheckBox",%hwnd,"CheckBox " + Str$(&Loop + 1),310,10 + &Loop * 25,120,24)
ed&[&Loop] = Create("Edit",%hwnd,"Edit " + Str$(&Loop + 1),440,10 + &Loop * 25,120,24)
Wend
While 1
WaitInput
If ClickedMultiItem(cb&[])
Print GetText$(%getfocus),"Dies ist ein "+ ClassOf(%getfocus)
ElseIf RClickedMultiItem(cb&[])
CreateMenu
AppendMenu 100,GetText$(&wparam) + " Dies ist ein "+ ClassOf(&wparam)
TrackMenu()
ElseIf ClickedMultiItem(ed&[])
Print GetText$(%getfocus),"Dies ist ein "+ ClassOf(%getfocus) + " auf das mit der " + SubStr$(Taste$,%mousepressed,",") + " Maustaste geklicked wurde"
ElseIf RClickedMultiItem(ed&[])
'so kann man auch das windowsinterne Menü per Edits aushebeln
CreateMenu
AppendMenu 100,"\q" + GetText$(&wparam) + "\q Dies ist ein "+ ClassOf(&wparam) + " auf das mit der " + SubStr$(Taste$,%mousepressed,",") + " Maustaste geklicked wurde"
Separator
AppendMenu 101,"Ausschneiden"
AppendMenu 102,"kopieren"
AppendMenu 103,"einfügen"
AppendMenu 103,"löschen"
TrackMenu()
EndIf
Wend
|
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 28.10.2011 ▲ |
|
|
|