Français
Comprend

Buttons.inc - très simple et problemlos avec Buttons travail

 

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.
 
06.09.2005  
 




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.
 
06.10.2005  
 



répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

8.743 Views

Untitledvor 0 min.
Uwe Lang26.07.2024
Detlef Jagolski23.07.2023
Normann Strübli06.02.2023
Joachim Fourmont12.01.2022
plus...

Themeninformationen

cet Thema hat 2 participant:

Peter Mallow (3x)
iF (2x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie