Fokus in Writer-Formular setzen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

goetz
Beiträge: 3
Registriert: Mo, 07.07.2003 10:52

Fokus in Writer-Formular setzen

Beitrag von goetz »

Hallo, Leute!
Ich habe Ich habe ein Formular im writer entwickelt. Es besteht aus einem Textgerüst (Briefbogen) und diversen Eingabefeldern.
Das Textgerüst habe ich über "Einfügen-Bereiche" geschützt, damit dem User hier kein Faux-Pas unterläuft.
So weit funktioniert auch alles prima, bis auf den Start: Wenn ich das Dokument öffne (oder auch als stw ein neues erzeuge), steht der Cursor immer irgendwo im geschützten Text. Ich möchte aber, dass er im ersten Eingabefeld steht.
Über die Mailing-Liste habe ich jetzt erfahren, dass ich ein Makro und hier die Methode "SetFocus" benutzen muss. um zum Ziel zu gelangen. Code-Schnipsel, wie ich so was in Dialogen mache, habe ich gefunden, aber ich habe ja keinen Dialog, meine Kontrollfelder stehen einfach mitten im Text.
Kann mir bitte jemand mit etwas Beispielcode helfen?
VDiV & Gruß, Götz
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Götz,
Kann mir bitte jemand mit etwas Beispielcode helfen?
Einen Beispielcode kann ich dir geben, schwierig wird es allerdings, das Makro zu einem gewünschten Ereignis zu binden. Da musst du experimentieren. Ist der Code im Dokument gespeichert und du bindest ihn an das Ereignis "Dokument erzeugen", funktioniert er nicht, da der Controller noch nicht initialisiert ist. Da musst du ein wenig experimentieren. Ansosnten setzt du den Fokus aud das im Formular (1. Formular im Dokument) definierte Feld mit Namen "Textbox":

Code: Alles auswählen

sub FormularAktivieren
oDoc = thisComponent
	oForm = oDoc.drawpage.forms.getbyindex(0)
	oCon = oDoc.getCurrentController
	oFormFeld=oForm.getbyname("TextBox")
	oCon.getControl(oFormFeld).setFocus
end sub
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
goetz
Beiträge: 3
Registriert: Mo, 07.07.2003 10:52

Beitrag von goetz »

Vielen Dank, Thomas,
dein Code hat mir sehr geholfen und das mit dem Ereignis werde ich per "trial & error" sicher irgendwie hinbiegen!
Ein frohes und möglichst geruhsames Fest für dich und deine Familie,
Götz (sich auf dein Buch über StarBasic freuend, damit er endlich kapiert, was der CurrentController ist..., :wink: )
ck
Beiträge: 6
Registriert: Mo, 07.02.2005 16:56
Wohnort: Tambach-Dietharz

Beitrag von ck »

Hallo Götz,

ich hatte das gleiche Problem wie Du. Stutzig wurde ich jedoch, als in einem Dokument nach dem Öffnen jedesmal der Kursor richtig im 1. Eingabefeld stand, im nächsten Dokument jedoch mitten im gesperrten Textbereich.
Nach einigem Suche habe ich folgendes gefunden:

1. Formularfunktionen aufrufen
2. Automatischer Kontrollelement-Fokus aktivieren
3. zu jedem Kontrollelement Tabstop auf ja und Reihenfolge >=1 setzen.

Nach diesen Einstellungen funktioniert es in allen meinen Formularen perfekt, ohne eine Zeile Programmcode schreiben zu müssen.

Ich hoffe dieser Tip kommt nicht zu spät für Dich? (Wenn ja hilft er vielleicht einem anderen OO-Fan)
Viele Grüße aus dem Thüringer Wald,

Carsten
Antworten