| |
|
|
Thorsten Friedrichs | Salut,
comment fragt on am sichersten ab si un Button [create(button...)] angeklickt wurde?
Salut Thorsten |
|
|
| ------------------------------------------------------------------------------------------ XProfan 9/Win98&undWinXP/PRFellow/ TCP.DLL Profaner seit 4.5 /einige Jahre (mit Programmierpausen) | 04.10.2004 ▲ |
|
|
|
|
Rolf Koch | |
|
| |
|
|
|
| allô Rolf...
je denke la fois, oui c'est ca cela voulais il pas avons. @GETFOCUS liefert seulement zurück, si un Button une Concentrer hat, pas si il gedrückt wurde. je prends en supplément: KompilierenMarqueSéparation encore besser wäre es, den Button sur @CONTROL selbst trop erzeugen et einer ID trop versehen. cet ID peux on ensuite sur %MENUITEM abfragen et SETMENUITEM 0 wieder zurücksetzen (Beispielcode ici im Forum sous Quellcodes). |
|
|
| |
|
|
|
Andreas Miethe
| [quote-part:3cde066f52=AH] encore besser wäre es, den Button sur @CONTROL selbst trop erzeugen et einer ID trop versehen. cet ID peux on ensuite sur %MENUITEM abfragen et SETMENUITEM 0 wieder zurücksetzen (Beispielcode ici im Forum sous Quellcodes).[/quote-part:3cde066f52] cela allez aussi avec Créer(Button...), une ID bekommt qui Button aussi. Angefangen chez 1000 volonté chaque Controls qui avec Créer(..) erstellt volonté avec einer aufsteigenden ID versehen.
Beispiel : KompilierenMarqueSéparation $H windows.ph
Declare Ende&,Button&
cls
Button& = Create("BUTTON",%hwnd,"OK",10,10,80,24)
Whilenot ende&
Waitinput
If ~GetDlgItem(%hwnd,%MenuItem*-1) = Button&
Print "Hoppla"
Endif
Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 04.10.2004 ▲ | |
|
|
|
|
| allô Andreas...
Vollkommen richtig! Bloß venez ensuite quelque chose Rechnerei en supplément - besonders si on très viele Buttons dans seinem Programme erstellt hat et zusätzlich encore avec @CREATETEXT arbeitet wird cela ganze très unübersichtlich. avec @CONTROL läßt sich chaque Contrôle une spezielle ID zuweisen, avec @CREATEBUTTON wird ca automatisch de Profan getan (aufsteigende IDs ab 2000 volonté vergeben, si je mich droite erinnere). ici encore la fois quoi zur manifestation aus meiner Kramkiste: KompilierenMarqueSéparationWINDOWSTYLE 31
WINDOWTITLE "Hauptprogramm"
WINDOW 0,0-640,440
Declare DIALOG&,Button&,message&,Window&,Dialogtext$,ENDE&,Zeit$,Zähler&
Declare Listbox&
PROC Messagefenster
PARAMETERS Überschrift$,Text$ Überschrift$ identifiziert das geschlossene Fenster, Text$ ist ein Meldungstext
WINDOWSTYLE 16 Fenster ohne Menü
Am Aussehen läßt sich bestimmt noch eine Menge verbessern..
Let Dialogtext$="Hinweis von Hauptprogramm " Wichtig, um zu erkennen, ob ein Dialogfensterbutton gedrückt wurde
LET DIALOG&=@Create("Window",%Desktop,@add$(Dialogtext$,Überschrift$),0,0,300,110) Erstellung des Dialoges auf dem Desktop
@Create("Button",Dialog&,"OK",100,50,80,25) Button zum Wegklicken
@create("Text",,Dialog&,TEXT$,0,0,300,40) Meldungstext
SetWindowPos Dialog&=@rnd(@sub(%MAXX,300)),@rnd(@sub(%MAXY,110))-300,110;-1 Dialgfenster immer im Vordergrund
endproc
Jetzt kommt das Hauptprogramm
LET LISTBOX&=@Create("Listbox",%HWND,"",10,160,600,100) Für die Rückmeldung
LET ENDE&=@Create("Button",%HWND,"Ende",230,350,100,25) Button schadet nichts
WHILENOT @GETFOCUS(ENDE&) Solange nicht Ende gedrückt wurde
If @gt(@Height(%HWND),20) Nur, wenn das Hauptfenster ncht minimiert ist...
Drawtext 0,100,@add$(@str$(&GETTICKCOUNT)," ") Nur, damit man sieht, daß das Programm weiterläuft.
Drawtext 0,0,@add$(@str$(%MENUITEM)," ") Nur für mich, ist unwichtig!
endif
IF @neq$(Zeit$,Time$(0)) Jede Minute wird ein Popup erzeugt!
LET ZÄHLER&=ZÄHLER&+1 Das ist für den Dialog-Fenstertitel
LET ZEIT$=TIME$(0) Damit das Programm merkt, das eine Minute vergangen ist.
Messagefenster @str$(Zähler&), @add$("Aktuelle Zeit: ",Zeit$) Prozedur zum Erzeugen des Dialoges wird aufgerufen.
endif
IF @lt(%MENUITEM,-999) Wenn irgendwo ein Button gedrückt wurde..
LET WINDOW&=@getactivewindow() Holt sich das Handle des Fensters mit dem gedrückten Button.
IF @gt(@len(@GetText$(WINDOW&)),@sub(@len(Dialogtext$),1)) Damits bei der nächsten Abfrage keinen Fehler gibt!
IF @equ$(@mid$(@GetText$(WINDOW&),1,@len(Dialogtext$)),Dialogtext$) Wenn das dann ein Dialogfenster deines Programmes ist..
@addstring(Listbox&,@GetText$(WINDOW&)+" um "+@time$(0)+" Uhr weggeklickt!") Schreibt in die Listbox das weggeklickte Fenster.
@destroywindow(Window&) Löscht das Dialogfenster
setmenuitem 0 Zurücksetzen des Buttonklicks
endif
endif
endif
'./../../funktionsreferenzen/XProfan/Wend/'>Wend
|
|
|
| |
|
|
|
| UPS...
Habe Andreass API entier übersehen! Über cela Handle gehts naturellement aussi sans Rechnerei! |
|
|
| |
|
|
|
Uwe ''Pascal'' Niemeier | allô gens!
sur qui péril hin, mich trop blamieren... chez mir funktioniert im Normalfall (Eingabeschleife avec WaitInput, mais sans Minuteur o.ä.) ca:
def GetFocusEx(1) getfocus(&(1))*(%key=255)
avec cela peux on aussi per <Tab> den Concentrer weitergeben et <Enter> quittieren.
SeeYou Pascal |
|
|
| |
|
|
|
Rolf Koch | Hi AH, nagut la hâte mich überredet Rolf |
|
|
| |
|
|
|
Thorsten Friedrichs | [quote-part:5c933acd40=AH]allô Rolf...
je denke la fois, oui c'est ca cela voulais il pas avons. @GETFOCUS liefert seulement zurück, si un Button une Concentrer hat, pas si il gedrückt wurde. je prends en supplément: KompilierenMarqueSéparation $H windows.ph Déclarer Ende&,Button& cls Button& = Créer(BUTTON,%hwnd,OK,10,10,80,24) Whilenot ende& Waitinput Si ~GetDlgItem(%hwnd,%MenuItem*-1) = Button& Imprimer Hoppla Endif Wend [/quote-part:5c933acd40] Hi, oui c'est ca dass. Es sollte pas avec Getfocus travailler et si possible sans Waitinput. alors merci pour cet beiden Propositions. je hab déjà longtemps rien plus avec Profan gemacht, wußte mais encore, cela getfocus pas richtig klappt.
merci pour qui Aider. Thorsten Nachtrag de iF: nie gemacht Doppelposting la fois beseitigt... |
|
|
| ------------------------------------------------------------------------------------------ XProfan 9/Win98&undWinXP/PRFellow/ TCP.DLL Profaner seit 4.5 /einige Jahre (mit Programmierpausen) | 04.10.2004 ▲ |
|
|
|