Unterprogrammfenster schließen und Focus setzen
Moderator: Moderatoren
-
- Rookie
- Beiträge: 5
- Registriert: Mo, 22. Dez 2008 13:42
Unterprogrammfenster schließen und Focus setzen
Hallo Forum!
Um eines vorweg zu sagen: Ich bin noch recht neu in der objektorientierten Programmierung mit Xbase++.
Und ich nehme an/hoffe das die frage eigentlich relativ trivial ist, aber ich hab schon mehrere Sachen ausprobiert und auch schon die SUFU genutzt und nichts gefunden, also bitte helft mir!
Was ich vorhabe:
Es wird eine Suche nach Personen durchgeführt. Als suchwort dienst der Nachname. wenn nun mehrere Person mit demsleben nachnamen vorhanden sind geht ein fenster auf mit einer listbox. dort soll der user die gewünschte person dann auswählen und auf "Ok" klicken. daraufhin soll sich das fenster wieder schließen und der richtige datensatz angezeigt werden.
Ich hab also eine UDF geschrieben mit nem neuen Fenster und ner Listbox und den gewünschten Pushbuttons. Alles kein Problem. Ich weis nur nicht was ich in den CallbackSlot des OK Buttons schreiben soll, damit sich das Fenster wieder schließt. Ursprünglich hatte ich gedacht,ich schreib ein "Return" rein und fertig ist die sache. Doch dann schmeißt mir der Compiler "Reserved Keyword" raus. wenn ich aber mit XbeP_Close arbeite dann schließt sich auch das Hautpfenster.
Ein weiteres, aber relativ kleines Problem ist, dass ich den FOcus nicht auf das kleine Fenster legen kann. ich hab es mit SetAppFocus() versucht, aber das Fenster bleibt "grau". Wäre schön wenn jemand dazu noch eine Lösung hätte.
Falls jetzt noch Fragen zum Problem auftauchen, einfach rückfragen, da das hier auch mein erstes Posting in dem Forum hier ist undich nciht genau weis wie ich das Problem treffend beschreiben soll.....
Ich würde mich sehr freuen wenn mit jemand unter die Arme greifen könnte, ich sehe im Moment einfach keine Lösungsmöglichkeit mehr.
Danke im Vorraus
Dixi
Um eines vorweg zu sagen: Ich bin noch recht neu in der objektorientierten Programmierung mit Xbase++.
Und ich nehme an/hoffe das die frage eigentlich relativ trivial ist, aber ich hab schon mehrere Sachen ausprobiert und auch schon die SUFU genutzt und nichts gefunden, also bitte helft mir!
Was ich vorhabe:
Es wird eine Suche nach Personen durchgeführt. Als suchwort dienst der Nachname. wenn nun mehrere Person mit demsleben nachnamen vorhanden sind geht ein fenster auf mit einer listbox. dort soll der user die gewünschte person dann auswählen und auf "Ok" klicken. daraufhin soll sich das fenster wieder schließen und der richtige datensatz angezeigt werden.
Ich hab also eine UDF geschrieben mit nem neuen Fenster und ner Listbox und den gewünschten Pushbuttons. Alles kein Problem. Ich weis nur nicht was ich in den CallbackSlot des OK Buttons schreiben soll, damit sich das Fenster wieder schließt. Ursprünglich hatte ich gedacht,ich schreib ein "Return" rein und fertig ist die sache. Doch dann schmeißt mir der Compiler "Reserved Keyword" raus. wenn ich aber mit XbeP_Close arbeite dann schließt sich auch das Hautpfenster.
Ein weiteres, aber relativ kleines Problem ist, dass ich den FOcus nicht auf das kleine Fenster legen kann. ich hab es mit SetAppFocus() versucht, aber das Fenster bleibt "grau". Wäre schön wenn jemand dazu noch eine Lösung hätte.
Falls jetzt noch Fragen zum Problem auftauchen, einfach rückfragen, da das hier auch mein erstes Posting in dem Forum hier ist undich nciht genau weis wie ich das Problem treffend beschreiben soll.....
Ich würde mich sehr freuen wenn mit jemand unter die Arme greifen könnte, ich sehe im Moment einfach keine Lösungsmöglichkeit mehr.
Danke im Vorraus
Dixi
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Unterprogrammfenster schließen und Focus setzen
Hallo, Dixi.
Ein Codeschnipsel würde es vereinfachen, Dir zu helfen.
Kann der andere Benutzer "Dixi" gelöscht werden? Du hast Dich m.E. zweimal angemeldet.
Ein Codeschnipsel würde es vereinfachen, Dir zu helfen.
Kann der andere Benutzer "Dixi" gelöscht werden? Du hast Dich m.E. zweimal angemeldet.
Herzlich,
Tom
Tom
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Unterprogrammfenster schließen und Focus setzen
Dixi,
Aber wie Tom schon sagte: Ein wenig von Deinem Code könnte helfen, den richtigen Lösungsansatz herauszufinden.
Jan
Beides ist korrekt. Einfach nur RETURN in dem Close-Slot kann nicht gehen, und XbeP_Close schließt immer die komplette Anwendung. Du must explizit angeben, was denn nun geschlossen werden soll. Also z. B. ein oDlg:destroy() könnte passen.Dixi hat geschrieben:Ursprünglich hatte ich gedacht,ich schreib ein "Return" rein und fertig ist die sache. Doch dann schmeißt mir der Compiler "Reserved Keyword" raus. wenn ich aber mit XbeP_Close arbeite dann schließt sich auch das Hautpfenster.
Aber wie Tom schon sagte: Ein wenig von Deinem Code könnte helfen, den richtigen Lösungsansatz herauszufinden.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1930
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Unterprogrammfenster schließen und Focus setzen
Hallo Dixi,
ich habe dies bei mir so gelöst:
oParent ist natürlich die vorherige Maske. Diese muß an diese Function übergeben werden. In diesem Fall ist ein
XbpPushButton definiert und beim activate wird die entsprechende Operation durchgeführt und das Fenster wird geschlossen.
Auch wenn du auf das "Kreuz" klickst.
Vielleicht hilft es dir
ich habe dies bei mir so gelöst:
Code: Alles auswählen
oXbp:activate := {|| aBest1:=NeuBest(aObj,aBest1,oStatic2,aObj2),PostAppEvent( xbeP_Close ) }
oDlg:show()
oBrowse:show()
SetAppFocus(oBrowse)
nEvent := xbe_None
DO WHILE nEvent <> xbeP_Close
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
oDlg:destroy()
oParent:enable()
SetAppFocus(oParent)
XbpPushButton definiert und beim activate wird die entsprechende Operation durchgeführt und das Fenster wird geschlossen.
Auch wenn du auf das "Kreuz" klickst.
Vielleicht hilft es dir
-
- Rookie
- Beiträge: 5
- Registriert: Mo, 22. Dez 2008 13:42
Re: Unterprogrammfenster schließen und Focus setzen
An rolf:
Wenn ich das so mache schließt doch das gnaze Programm, wie es oben beschrieben wurde oder?
und hier mein Code:
Ich hoffe das ist jetzt der Relevante Code
Wenn ich das so mache schließt doch das gnaze Programm, wie es oben beschrieben wurde oder?
und hier mein Code:
Code: Alles auswählen
oXbp := XbpPushButton():new( drawingArea, , {24,36}, {96,24}, { { XBP_PP_BGCLR, XBPSYSCLR_BUTTONMIDDLE }, { XBP_PP_FGCLR, -58 } } )
// Das hier ist der "ok" button, er springt zum Datensatz und anschließénd halt das nicht funktionierende "Return"
oXbp:caption := "Ok"
oXbp:tabStop := .T.
oXbp:create()
oXbp:activate := {|| aArray:=olist:getdata(),dbgoto(arecno[aArray[1]],omul:destroy(), Return Nil}
//Hier der "Abbruch" Button, es ist wahrscheinlich hierdran auszuprobieren, ob das fenster schließt oder nicht
oXbp := XbpPushButton():new( drawingArea, , {180,36}, {96,24}, { { XBP_PP_BGCLR, XBPSYSCLR_BUTTONMIDDLE }, { XBP_PP_FGCLR, -58 } } )
oXbp:caption := "Abbruch"
oXbp:tabStop := .T.
oXbp:create()
oXbp:activate := { omul:destroy() }
//Hiermit fülle ich die Listbox
Do WHILE alltrim(upper(NACHNAME))=alltrim(upper(cname))
olist:additem(alltrim(NACHNAME)+", "+alltrim(VORNAME)+" Klasse: "+alltrim(Klasse))
aadd(arecno,recno())
dbskip(1)
ENDDO
omul:show()
Setappfocus(omul) //Dieser Focus funktioniert nicht
Return NIL
Ich hoffe das ist jetzt der Relevante Code
- Manfred
- Foren-Administrator
- Beiträge: 21199
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Unterprogrammfenster schließen und Focus setzen
Hi Dixi,
wenn die Pushbutton gedrückt werden, dann wird omul zerstört. Danach kann kein Show, oder SetappFocus mehr darauf gemacht werden. Ich hoffe ich sehe das jetzt richtig...
wenn die Pushbutton gedrückt werden, dann wird omul zerstört. Danach kann kein Show, oder SetappFocus mehr darauf gemacht werden. Ich hoffe ich sehe das jetzt richtig...
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
-
- Rookie
- Beiträge: 5
- Registriert: Mo, 22. Dez 2008 13:42
Re: Unterprogrammfenster schließen und Focus setzen
ICh glaube die stelle auf die du dich beziehst, hat eher was mit dem fesnter schließ problem zu tun als mit dem focus. ich setz den focus ja nich im pushbuttonManfred hat geschrieben:Hi Dixi,
wenn die Pushbutton gedrückt werden, dann wird omul zerstört. Danach kann kein Show, oder SetappFocus mehr darauf gemacht werden. Ich hoffe ich sehe das jetzt richtig...
- Manfred
- Foren-Administrator
- Beiträge: 21199
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Unterprogrammfenster schließen und Focus setzen
Hm,
wenn Du den Pushbutton drückst, dann wird ein omul:destroy() gemacht. Das Objekt ist weg. Es gibt dann kein :show, oder SetAppFocus() mehr. Das meinte ich.
wenn Du den Pushbutton drückst, dann wird ein omul:destroy() gemacht. Das Objekt ist weg. Es gibt dann kein :show, oder SetAppFocus() mehr. Das meinte ich.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
-
- Rookie
- Beiträge: 5
- Registriert: Mo, 22. Dez 2008 13:42
Re: Unterprogrammfenster schließen und Focus setzen
Achsoooo
ich glaub wir haben uns missverstanden, zumindeest ich dich.
der focus wird nicht mit dem pushbutton gesetzt, der soll direkt beim aufruf des fensters gesetzt werden, und um das nochmal zu verdeutlichen, der hier gepostete code ist aus der UDF und nicht vom hauptfenster. in dem callbackslot mit omul:destroy soll das fenster geschlossen werde und das unterprogramm beendet werden. wenn ich omul:destroy() mache dann wird omul zwar verworfen, aber nciht das programm beendet, so zumindest meine logik
ich glaub wir haben uns missverstanden, zumindeest ich dich.
der focus wird nicht mit dem pushbutton gesetzt, der soll direkt beim aufruf des fensters gesetzt werden, und um das nochmal zu verdeutlichen, der hier gepostete code ist aus der UDF und nicht vom hauptfenster. in dem callbackslot mit omul:destroy soll das fenster geschlossen werde und das unterprogramm beendet werden. wenn ich omul:destroy() mache dann wird omul zwar verworfen, aber nciht das programm beendet, so zumindest meine logik
-
- Rookie
- Beiträge: 5
- Registriert: Mo, 22. Dez 2008 13:42
Re: Unterprogrammfenster schließen und Focus setzen
Hallo nochmal,
Dass Problem hat sich gelöst. :destroy() wra schon richtig, hatte aber noch nen andren fehler gemacht....
Gruss und danke
Dixi
PS: Schöne Feiertage
Dass Problem hat sich gelöst. :destroy() wra schon richtig, hatte aber noch nen andren fehler gemacht....
Gruss und danke
Dixi
PS: Schöne Feiertage