| |
|
|
Thorsten Friedrichs | ¡Hola,
como fragt uno al sichersten de si una Button [create(button...)] angeklickt wurde?
Saludo Thorsten |
|
|
| ------------------------------------------------------------------------------------------ XProfan 9/Win98&undWinXP/PRFellow/ TCP.DLL Profaner seit 4.5 /einige Jahre (mit Programmierpausen) | 04.10.2004 ▲ |
|
|
|
|
Rolf Koch | |
|
| |
|
|
|
| ¡Hola Rolf...
Yo denke veces, genau el quería él no haben. @GETFOCUS liefert sólo zurück, si una Button una Foco ha, no si él gedrückt wurde. Yo nehme dazu: KompilierenMarcaSeparación Noch mejor wäre lo, el Button encima @CONTROL incluso a erzeugen y uno ID a versehen. Diese ID puede ser entonces encima %MENUITEM abfragen y SETMENUITEM 0 otra vez zurücksetzen (Beispielcode hier en el Foro bajo Quellcodes). |
|
|
| |
|
|
|
Andreas Miethe
| [quote:3cde066f52=AH] Noch mejor wäre lo, el Button encima @CONTROL incluso a erzeugen y uno ID a versehen. Diese ID puede ser entonces encima %MENUITEM abfragen y SETMENUITEM 0 otra vez zurücksetzen (Beispielcode hier en el Foro bajo Quellcodes).[/quote:3cde066f52] Es auch con Crear(Button...), una ID bekommt el Button auch. Angefangen en 1000 voluntad cada Controls el con Crear(..) erstellt voluntad con uno aufsteigenden ID versehen.
Ejemplo : KompilierenMarcaSeparación $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 ▲ | |
|
|
|
|
| ¡Hola Andreas...
Vollkommen correcto! Bloß kommt entonces algo Rechnerei dazu - besonders si uno muy viele Buttons en seinem Programa erstellt ha y zusätzlich todavía con @CREATETEXT arbeitet se todos muy unübersichtlich. Mit @CONTROL läßt se cada Control una spezielle ID zuweisen, con @CREATEBUTTON se dies automáticamente de Profano getan (aufsteigende IDs de 2000 voluntad vergeben, si yo mich bastante erinnere). Hier una vez más qué a Demonstration de meiner Kramkiste: KompilierenMarcaSeparaciónWINDOWSTYLE 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...
Posesiones Andreass API bastante übersehen! Über el Handle gehts natürlich auch sin Rechnerei! |
|
|
| |
|
|
|
Uwe ''Pascal'' Niemeier | ¡Hola Personas!
Auf el Gefahr hin, mich a blamieren... En me funktioniert en el Normalfall (Eingabeschleife con WaitInput, aber sin Temporizador o.ä.) dies:
def GetFocusEx(1) getfocus(&(1))*(%key=255)
Damit puede ser auch por <Tab> el Focus weitergeben y <Enter> quittieren.
SeeYou Pascal |
|
|
| |
|
|
|
Rolf Koch | Hi AH, nagut hast mich überredet Rolf |
|
|
| |
|
|
|
Thorsten Friedrichs | [quote:5c933acd40=AH]¡Hola Rolf...
Yo denke veces, genau el quería él no haben. @GETFOCUS liefert sólo zurück, si una Button una Foco ha, no si él gedrückt wurde. Yo nehme dazu: KompilierenMarcaSeparación $H windows.ph Declarar Ende&,Button& cls Button& = Crear(BUTTON,%hwnd,OK,10,10,80,24) Sinestar encargado ende& Waitinput If ~GetDlgItem(%hwnd,%MenuItem*-1) = Button& Imprimir Hoppla Endif wend [/quote:5c933acd40] Hi, genau dass. Lo debería no con Getfocus trabajo y si posible sin Waitinput. Also danke para esta beiden Propuestas. Yo ya largo nichts mehr con Profano gemacht, wußte aber todavía, el getfocus no correcto klappt.
Gracias para el Ayuda. Thorsten Apéndice de IF: Yo tener el Doppelposting veces beseitigt... |
|
|
| ------------------------------------------------------------------------------------------ XProfan 9/Win98&undWinXP/PRFellow/ TCP.DLL Profaner seit 4.5 /einige Jahre (mit Programmierpausen) | 04.10.2004 ▲ |
|
|
|