Focus (Cursor-Marke) in Textfeld von Dialogen setzen?
Moderator: Moderatoren
Focus (Cursor-Marke) in Textfeld von Dialogen setzen?
Hallo zusammen,
ich suche nach einem Code, um in einem Dialog per Checkbox ein TextFeld zu aktivieren und auch gleichzeitig die Cursormarke reinzusetzen, um direkt losschreiben zu können.
Ich habe im Handbuch von OpenOffice nur die Methode "getFocus" gefunden. Finde aber keine Möglichkeit diese anzuwenden (jedenfalls nicht ohne Fehlermeldung!)
Jemand ne Idee??
ich suche nach einem Code, um in einem Dialog per Checkbox ein TextFeld zu aktivieren und auch gleichzeitig die Cursormarke reinzusetzen, um direkt losschreiben zu können.
Ich habe im Handbuch von OpenOffice nur die Methode "getFocus" gefunden. Finde aber keine Möglichkeit diese anzuwenden (jedenfalls nicht ohne Fehlermeldung!)
Jemand ne Idee??
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Focus (Cursor-Marke) in Textfeld von Dialogen setzen?
"Im Prinzip, Ja: RTFM"der.milco hat geschrieben:Jemand ne Idee??
Hole Dir XRay zum Untersuchen Deiner Objekte.
Lese den mitgelieferten Basic-Code: Bibliothek: FormWizard, Modul: Layouter
Code: Alles auswählen
If Not IsMissing(FocusControlName) Then
DlgFormDB.GetControl(FocusControlName).SetFocus()
End If
Etwas Recherche (hier oder über Tante Google) beantwortet solchen Standardfragen auch.
Viel Erfolg noch!
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Focus (Cursor-Marke) in Textfeld von Dialogen setzen?
Super, das funktioniert!
Hast du jetzt vielleicht noch ne Idee zum Markieren von Text, wenn schon etwas in der Textbox steht, sodass ich den Text direkt überschreiben kann??

Hast du jetzt vielleicht noch ne Idee zum Markieren von Text, wenn schon etwas in der Textbox steht, sodass ich den Text direkt überschreiben kann??
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Focus (Cursor-Marke) in Textfeld von Dialogen setzen?
Ja.der.milco hat geschrieben:Hast du jetzt vielleicht noch ne Idee
Nehme -wie oben angegeben- XRay und Du siehst, dass DlgFormDB.GetControl(FocusControlName) auch eine .setSelectedText()-Methode hat.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Focus (Cursor-Marke) in Textfeld von Dialogen setzen?
Klappt NICHT!
Mit der .setSelectedText()-Methode bekomm ich ne Fehlermeldung: BASIC-Laufzeitfehler. Eigenschaft oder Methode nicht gefunden.
Habe jetzt das XrayTool installiert. Dort habe ich diese Methode aber auch nicht gefunden. Lediglich GET statt SET finde ich - die funktioniert aber auch nicht.
Wenn ich das probiere, wählt das Makro die Auswahl ab!
Zur Kontrolle mal mein Code:
Mit der .setSelectedText()-Methode bekomm ich ne Fehlermeldung: BASIC-Laufzeitfehler. Eigenschaft oder Methode nicht gefunden.
Habe jetzt das XrayTool installiert. Dort habe ich diese Methode aber auch nicht gefunden. Lediglich GET statt SET finde ich - die funktioniert aber auch nicht.
Wenn ich das probiere, wählt das Makro die Auswahl ab!
Zur Kontrolle mal mein Code:
Code: Alles auswählen
Sub CursorDialogStarten
DialogLibraries.LoadLibrary("Standard")
Dlg = CreateUnoDialog(DialogLibraries.Standard.Cursor)
dlg.execute()
End Sub
Sub TextMarkieren
If Not IsMissing("TextField1") Then
Dlg.GetControl("TextField1").getSelectedText()
End If
End Sub
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Focus (Cursor-Marke) in Textfeld von Dialogen setzen?
Sorry, Fehler von mir.
Du hast heraus gefunden, dass es die Methode nicht gibt.
Mein XRay sagte mir aufsetSelection ( aSelection as struct )
Die Suche im engl. Forum nach setSelection ergab als einer der Treffer dieses Posting von DannyB, Ausschnitt:
Kommst Du damit zurecht?
Du hast heraus gefunden, dass es die Methode nicht gibt.
Mein XRay sagte mir auf
Code: Alles auswählen
oTextfeld = oDialog.getControl( "TextField1" )
xray oTextfeld
Die Suche im engl. Forum nach setSelection ergab als einer der Treffer dieses Posting von DannyB, Ausschnitt:
Code: Alles auswählen
'[...]
' Now change the selection to select the words "an example".
oControl.setSelection( MakeSelection( 5, 15 ) )
End Sub
Function MakeSelection( ByVal nMin As Long, ByVal nMax As Long ) As com.sun.star.awt.Selection
oSelection = createUnoStruct( "com.sun.star.awt.Selection" )
With oSelection
.Min = nMin
.Max = nMax
End With
MakeSelection = oSelection
End Function
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Focus (Cursor-Marke) in Textfeld von Dialogen setzen?
JEPP!
Zwar etwas umständlicher als ich mir das vorgestellt habe, aber egal: Hauptsache es klappt!
Genau so wollte ich es haben.
Danke @ komma4
ergänzender HINWEIS:
Der o.g. Code markiert den Text "nicht sichtbar"!
Wenn man dem Code nach Aufruf der Funktion MakeSelection noch die Zeile
hinzufügt, wird die Markierung sichtbar und der Cursor blinkt am Ende der Markierung.
Zwar etwas umständlicher als ich mir das vorgestellt habe, aber egal: Hauptsache es klappt!
Genau so wollte ich es haben.
Danke @ komma4
ergänzender HINWEIS:
Der o.g. Code markiert den Text "nicht sichtbar"!
Wenn man dem Code nach Aufruf der Funktion MakeSelection noch die Zeile
Code: Alles auswählen
oDlg.GetControl("TextField1").SetFocus()