Focus (Cursor-Marke) in Textfeld von Dialogen setzen?

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Focus (Cursor-Marke) in Textfeld von Dialogen setzen?

Re: Focus (Cursor-Marke) in Textfeld von Dialogen setzen?

von der.milco » Di, 25.11.2008 10:31

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

Code: Alles auswählen

oDlg.GetControl("TextField1").SetFocus()
hinzufügt, wird die Markierung sichtbar und der Cursor blinkt am Ende der Markierung.

Re: Focus (Cursor-Marke) in Textfeld von Dialogen setzen?

von komma4 » Do, 20.11.2008 00:47

Sorry, Fehler von mir.
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
setSelection ( aSelection as struct )


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
Kommst Du damit zurecht?

Re: Focus (Cursor-Marke) in Textfeld von Dialogen setzen?

von der.milco » Mi, 19.11.2008 19:15

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:

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

Re: Focus (Cursor-Marke) in Textfeld von Dialogen setzen?

von komma4 » Di, 18.11.2008 23:06

der.milco hat geschrieben:Hast du jetzt vielleicht noch ne Idee
Ja.
Nehme -wie oben angegeben- XRay und Du siehst, dass DlgFormDB.GetControl(FocusControlName) auch eine .setSelectedText()-Methode hat.

Re: Focus (Cursor-Marke) in Textfeld von Dialogen setzen?

von der.milco » Di, 18.11.2008 20:11

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??

Re: Focus (Cursor-Marke) in Textfeld von Dialogen setzen?

von komma4 » So, 16.11.2008 21:55

der.milco hat geschrieben:Jemand ne Idee??
"Im Prinzip, Ja: RTFM"
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	
Nehme BTL2 zum leichteren Lesen.

Etwas Recherche (hier oder über Tante Google) beantwortet solchen Standardfragen auch.


Viel Erfolg noch!

Focus (Cursor-Marke) in Textfeld von Dialogen setzen?

von der.milco » So, 16.11.2008 19:30

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??

Nach oben