| |
|
|
Peter Mallow | travailler avec Buttons était pour mich toujours stressig. si je un Button avec Créer(Button... erstellt habe, avons sich qui Buttons pas so verhalten, comment je es voulais bzw. aussi pas comme dans Windows üblich ist. qui Alternative avec Contrôle(Button... ist pas mal, seulement wusste je irgendwann pas plus, welches MenuItem maintenant trop welchen Button est.
Um cela alles extrem trop simplifier et à Vue d'ensemble herzustellen, habe je cet INC-File geschrieben. je sais qui Solution ist pas qui eleganteste, cependant qui einfachste et besonders pour ältere Profanversion 8- une peut-être wertvolle Erweiterung, là es seulement ab Profan 9 den Befehl Clicked() donnais. mais aussi cette Befehl hat pour mich Nachteile. z.B. funktioniert cette seulement, si auparavant un WaitIput erfolgte. KompilierenMarqueSéparation################################################################
# BUTTONS.INC Version 1.2 #
#==============================================================#
# Erleichtert extrem die Buttonverwaltung im Programm #
# #
# C o p y r i g h t 2 0 0 5 b y P e t e r M a l l o w #
################################################################
Def @LoadImage(6) !"USER32","LoadImageA"
Def @ALoadImage(6) ! "USER32","LoadImageA"
Def @ExtractIcon(3) ! "SHELL32","ExtractIconA"
Declare ButtonID%,MerkeButton%[100] MerkeButton%[100] Merkt sich das Buttonhandle, Max 100 Buttons (standart)
Proc Button
Parameters Handle%,ButtonText$,X1%,Y1%,X2%,Y2%
Button wird erstellt. Diese Procedure hat die gleichen
Parameter wie CreateButton.
Inc ButtonID%
MerkeButton%[ButtonID%] = @Control("Button",ButtonText$,$40000000+$10000000,X1%,Y1%,X2%,Y2%,Handle%,ButtonID%+4000,%HINSTANCE)
Return ButtonID%
EndProc
Proc CheckButton
Parameters Button%
Diese Funktion gibt True zurück, wenn der Button% geklickt
wurde. PRAKTISCH ist, dass nach der Ausführung dieser Procedure
der MenuItem-Status wieder auf 0 gesetzt wird.
If Button%=0
Return 0
ElseIf @Abs(%MenuItem)=Button%+4000
SetMenuItem 0
Return 1
Else
Return 0
EndIf
EndProc
Proc GetButtonHandle
Parameters Button%
Diese Funktion liefert den echten Handle vom Button zurück.
Damit kann dann jede beliebige Funktion wie "DestroyWindow"
normal angesteuert werden:
Bsp. -> DestroyWindow(GetButtonHandle(Button%))
Return MerkeButton%[Button%]
EndProc
Proc DestroyButton
Parameters Button%
Die Buttons, die mit der Procedure "Button" erstellt werden,
die können nur mit dieser Funktion zerstrört werden oder Sie
verwenden: -> DestroyButton(MerkeButton%[ButtonHandel%]) <-
DestroyWindow(MerkeButton%[Button%])
EndProc
Proc EnableButton
Parameters Button%, Type%
Die Buttons, die mit der Procedure "Button" erstellt werden,
die können nur mit dieser Funktion zerstrört werden oder Sie
verwenden: -> EnableWindow MerkeButton%[ButtonHandel%],0 <-
EnableWindow MerkeButton%[Button%],Type%
EndProc
Proc SetButtonText
Parameters Button%, String$
Die Buttons, die mit der Procedure "Button" erstellt werden,
die können nur mit dieser Funktion zerstrört werden oder Sie
verwenden: -> EnableWindow MerkeButton%[ButtonHandel%],0 <-
SetText MerkeButton%[Button%]ng$
ENDPROC
cet Include peux on naturellement um BmpButton(), AniButton ou bien IconButton(), ... beliebig erweitern.
si je mich irren sollte, et on ca aussi viel einfacher realisieren peux, ensuite s'il te plaît répondre aussi sur Propositions, Erweiterungen, Kritik et Verbesserungen suis je mich
MfG Peter Mallow |
|
|
| WinXP Pro SP2, XProfan 9 + XPSE AMD Athlon 64 X2 3800 | 06.09.2005 ▲ |
|
|
|
|
| eh bien - une Schönheitsfehler vois je sur Anhieb - Du benutzt Integer statt Longs. Es wird zwar zumeinst quand même marcher - cependant gibt qui Funktion Control nunmal une Long statt une Integer zurück.
Salve, iF. |
|
|
| |
|
|
|
Peter Mallow | Ok werde je faire.
Sry! Diesen Fil gibt es oui déjà :/ je Trottel habe oublier qc, dass es ihn déjà donnais. alors s'il te plaît eines qui beiden Threads effacer!!!
Sorry, voulais pas spammen |
|
|
| WinXP Pro SP2, XProfan 9 + XPSE AMD Athlon 64 X2 3800 | 07.09.2005 ▲ |
|
|
|
|
Peter Mallow | ici qui Version 2.0 de qui Buttons.inc KompilierenMarqueSéparation################################################################
# BUTTONS.INC Version 2.0 #
#==============================================================#
# Erleichtert extrem die Buttonverwaltung im Programm #
# #
# C o p y r i g h t 2 0 0 5 b y P e t e r M a l l o w #
################################################################
Def @LoadImage(6) !"USER32","LoadImageA"
Def @ALoadImage(6) !"USER32","LoadImageA"
Def @ExtractIcon(3) !"SHELL32","ExtractIconA"
Def @GetDlgCtrlID(1) !"USER32","GetDlgCtrlID" Par: Handle; Return %MenuItem
Declare ButtonID%,bmp#
ButtonID% = 4000 Startwert
Proc CheckButton
Parameters b&
Diese Funktion gibt True zurück, wenn der Button% geklickt
wurde. PRAKTISCH ist, dass nach der Ausführung dieser Procedure
der MenuItem-Status wieder auf 0 gesetzt wird.
If (@Abs(%MenuItem) = @GetDlgCtrlID(b&)) And (b& > 0)
SetMenuItem 0
Return 1
Else
Return 0
EndIf
EndProc
Proc CButton ein Button als Checkbox
Parameters Wnd&,t$,X%,Y%,SizeX%,SizeY%
Inc ButtonID%
Return @Control("Button",t$,$50001000+3,X%,Y%,SizeX%,SizeY%,Wnd&,ButtonID%,%Hinstance)
EndProc
----------------------------------------------------------------------
- Folgende Funktionen und Prozeduren sind nur noch zu Kompatibilität -
- zur alten Version von der Button.inc vorhanden. --------------------
----------------------------------------------------------------------
Proc Button
Parameters Wnd&,t$,X1%,Y1%,X2%,Y2%
Inc ButtonID%
Return @Control("Button",t$,$50000000,X1%,Y1%,X2%,Y2%,Wnd&,ButtonID%,%HInstance)
EndProc
Proc GetButtonHandle
Parameters Button&
Return Button&
EndProc
Proc DestroyButton
Parameters Button&
@DestroyWindow(Button&)
EndProc
Proc EnableButton
Parameters Button&,t%
EnableWindow @Button&,t%
EndProc
Proc SetButtonText
Parameters Button&,t$
SetText Button ENDPROC
j'ai avant kurzen qui API GetDlgCtrlID entdeckt. là viel mir juste Verbesserungen pour qui Button.inc un. qui grand Vorteil cette Version ist, dass Button() maintenant cela echte Handle zurückliefert. Dadurch volonté qui Funtionen GetButtonHandle(), DestroyButton(), EnableButton() et SetButtonText() pas plus nécessaire, habe vous mais encore à cause de Kompatibilität dans qui Button.inc aufgenommen. Aussi peut avec qui Funktion CheckButton() aussi avec CreateButton() erstellte Buttons abgefragt volonté. dans cette Version habe je aussi den le conseil de IF berücksichtigt. récente ist aussi qui Funktion CButton(), avec qui on Buttons erstellen peux, qui sich comment une CheckBox einrasten laisser - Alors, comment un commutateur.
Allerdings muss je en supplément dire, dass on avec qui aktuellen Version geringe Geschwindigkeitsverluste dans achat prendre muss. cela liegt daran, dass cela Abfragen qui API Getdlgctrlid() quelque chose länger dauert. mais qui dans seinem Program sowieso un WaitInput verwendet, dem peux es égal son. avec qui Funktion Clicked() peux allerdings aucun qui beiden Versionen mithalten, cependant ist es meines Wissens pour sinnlos Clicked() dans einer Boucle sans WaitInput ou bien WaitMouse trop verwenden.
alors fällt cette le tort Schonmal raus
qui ne...aucune Profan 9 hat peux sich selbst qui Funktion Clicked() erstellen: KompilierenMarqueSéparation |
|
|
| WinXP Pro SP2, XProfan 9 + XPSE AMD Athlon 64 X2 3800 | 06.10.2005 ▲ |
|
|
|
|
| Huch - qui Api GetDlgCtrlID ist oui sogar déjà dans qui OnlineDoku gelistet. |
|
|
| |
|
|