Cursor auf 1. xbpSLE setzen
Moderator: Moderatoren
Cursor auf 1. xbpSLE setzen
Hallo,
ich habe mit dem Formdesigner(Roger hat leider noch nicht geliefert)
ein Formular entworfen.
Beim Start sehe ich den Cursor erst dann, wenn ich mit der Maus auf
das xbpSLE zeige. Was muß ich tun, damit er beim Start sofort auf diesem
Feld steht.
Gruß
Alfred
ich habe mit dem Formdesigner(Roger hat leider noch nicht geliefert)
ein Formular entworfen.
Beim Start sehe ich den Cursor erst dann, wenn ich mit der Maus auf
das xbpSLE zeige. Was muß ich tun, damit er beim Start sofort auf diesem
Feld steht.
Gruß
Alfred
- brandelh
- Foren-Moderator
- Beiträge: 15695
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Hi,
in der CREATE() Methode vor SHOW() (oder war es danach ...) diese beiden Zeilen einfügen
SetAppFocus(self) // zuerst den Dialog
SetAppFocus(::MyFrirstControl) // dann das gewünschte Objekt
das ist jetzt Classcode. Wenn du Funktionscode verwendest, hast du eventuell nur das oXbp für alle Xbp. Dann mußt du eine eigene Local Variable erstellen.
in der CREATE() Methode vor SHOW() (oder war es danach ...) diese beiden Zeilen einfügen
SetAppFocus(self) // zuerst den Dialog
SetAppFocus(::MyFrirstControl) // dann das gewünschte Objekt
das ist jetzt Classcode. Wenn du Funktionscode verwendest, hast du eventuell nur das oXbp für alle Xbp. Dann mußt du eine eigene Local Variable erstellen.
Gruß
Hubert
Hubert
- Jan
- Marvin
- Beiträge: 14651
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Genau das ist manchmal ein Problem. Ich habe früher aus verschiedenen Gründen allen SLE den gleichen Namen gegeben. Was Vorteile haben kann.
Für mich war wichtig, daß ich den Code durch Arrays und Schleifenbildungen übersichtlicher gestalten konnte. Das geht mit unterschiedlichen zwar Variablennamen auch, aber die müssend dann immer PUBLIC sein. Wovon ich mich nach der entsprechenden Diskussion hier im Forum ganz schnell getrennt habe. Das war dann mein persönlicher Zwischenschritt. Hat man keine Arbeit, macht man sich halt welche .
Der Hauptnachteil ist aber, daß man dann die einzelnen Felder nicht mehr gezielt ansprechen kann. Da ich anders als Hubert nicht mit Klassencode arbeite, springe ich die Felder dann mit SetAppFocus(oSle) an. Gleiches gilt natürlich auch für die Buttons, also etwa "Abbruch" und "OK". Auch das geht natürlich nur mit unterschiedlichen Namen für die Buttons.
Wie man es auch macht, alles hat so seine Vor- und Nachteile. Mir ist inzwischen wichtiger, die einzelenen XbParts gezielt anspringen zu können. Wer weiß, vielleicht mache ich das in 5 Jahren (oder schon früher?) wieder anders. Man ist ja lernfähig
Jan
Für mich war wichtig, daß ich den Code durch Arrays und Schleifenbildungen übersichtlicher gestalten konnte. Das geht mit unterschiedlichen zwar Variablennamen auch, aber die müssend dann immer PUBLIC sein. Wovon ich mich nach der entsprechenden Diskussion hier im Forum ganz schnell getrennt habe. Das war dann mein persönlicher Zwischenschritt. Hat man keine Arbeit, macht man sich halt welche .
Der Hauptnachteil ist aber, daß man dann die einzelnen Felder nicht mehr gezielt ansprechen kann. Da ich anders als Hubert nicht mit Klassencode arbeite, springe ich die Felder dann mit SetAppFocus(oSle) an. Gleiches gilt natürlich auch für die Buttons, also etwa "Abbruch" und "OK". Auch das geht natürlich nur mit unterschiedlichen Namen für die Buttons.
Wie man es auch macht, alles hat so seine Vor- und Nachteile. Mir ist inzwischen wichtiger, die einzelenen XbParts gezielt anspringen zu können. Wer weiß, vielleicht mache ich das in 5 Jahren (oder schon früher?) wieder anders. Man ist ja lernfähig
Jan
Hallo Hubert,
vielen Dank. Es klappt prima und ein paar noch nicht gestellte Fragen zur
Cursorsteuerung sind damit gleich mit gelöst.
Ich verwende Funktionscode und habe den SetAppFocus(oSLE1) nach dem
show gesetzt.
Da ich dass mit Classcode oder Funktionscode noch nicht verstanden
habe, generiere ich Funktionscode und jedes Steuererelement bekommt
manuell einen eindeutigen Namen(z.B. oSEL1) und dann läßt sich dass
einzelne Element direkt ansprechen.
Gruß
Alfred
vielen Dank. Es klappt prima und ein paar noch nicht gestellte Fragen zur
Cursorsteuerung sind damit gleich mit gelöst.
Ich verwende Funktionscode und habe den SetAppFocus(oSLE1) nach dem
show gesetzt.
Da ich dass mit Classcode oder Funktionscode noch nicht verstanden
habe, generiere ich Funktionscode und jedes Steuererelement bekommt
manuell einen eindeutigen Namen(z.B. oSEL1) und dann läßt sich dass
einzelne Element direkt ansprechen.
Gruß
Alfred
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: Cursor auf 1. xbpSLE setzen
hi,
gruss by OHR
Jimmy
SetAppFocus( oForm:Childlist()[1] )Alfred hat geschrieben:
ich habe mit dem Formdesigner(Roger hat leider noch nicht geliefert)
ein Formular entworfen.
Beim Start sehe ich den Cursor erst dann, wenn ich mit der Maus auf
das xbpSLE zeige. Was muß ich tun, damit er beim Start sofort auf diesem
Feld steht.
gruss by OHR
Jimmy
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1930
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
- Jan
- Marvin
- Beiträge: 14651
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Rolf,
was passiert denn bei Dir?
Wenn Du das machst wie Jimmy das vorschlägt springt der eben auf den 1. Child des Dialoges, egal wie der heißt und was das ist. hat den Vorteil daß Du im Code nicht fest hinterlegen mußt wie das Teil heißt, hat aber den Nachteil daß Du aufpassen mußt, was der 1. Child denn wirklich ist. Wenn das nicht der 1. ist: Zähl durch und trage die Nummer statt der 1 ein.
Jan
was passiert denn bei Dir?
Wenn Du das machst wie Jimmy das vorschlägt springt der eben auf den 1. Child des Dialoges, egal wie der heißt und was das ist. hat den Vorteil daß Du im Code nicht fest hinterlegen mußt wie das Teil heißt, hat aber den Nachteil daß Du aufpassen mußt, was der 1. Child denn wirklich ist. Wenn das nicht der 1. ist: Zähl durch und trage die Nummer statt der 1 ein.
Jan
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1930
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
- Jan
- Marvin
- Beiträge: 14651
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Rolf,
da gibt es 2 Möglichkeiten: Die einfach-mal-Nachsehen-Methode, indem du folgende Schleife einbaust (nicht getestet, mal eben schnell geraten):
Dann siehst Du ja, an welcher Stelle Dein SLE steht.
2. Möglichkeit: Du springst das SLE mit seinem eindeutigen Namen an.
Jan
da gibt es 2 Möglichkeiten: Die einfach-mal-Nachsehen-Methode, indem du folgende Schleife einbaust (nicht getestet, mal eben schnell geraten):
Code: Alles auswählen
FOR i := 1 TO LEN(oForm:ChildList[])
MsgBox(oForm:ChildList()[i])
NEXT
2. Möglichkeit: Du springst das SLE mit seinem eindeutigen Namen an.
Jan
- brandelh
- Foren-Moderator
- Beiträge: 15695
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Hi,
also in der ChildList stehen ALLE XbParts, die Childs dieser drawingarea sind. Das erste Element kann auch ein FixedText oder PushBotton sein.
Man könnte das Richtige suchen, indem man die caption abfragt oder vorher einen setName Eintrag macht und über childbyname (oder so ähnlich) sucht.
ABER
man kann sich das Leben auch einfacher machen und gleich Class-Code verwenden
also in der ChildList stehen ALLE XbParts, die Childs dieser drawingarea sind. Das erste Element kann auch ein FixedText oder PushBotton sein.
Man könnte das Richtige suchen, indem man die caption abfragt oder vorher einen setName Eintrag macht und über childbyname (oder so ähnlich) sucht.
ABER
man kann sich das Leben auch einfacher machen und gleich Class-Code verwenden
Gruß
Hubert
Hubert