Cursorposition in einem EDIT-Control

praetor

Mitglied
Registriert
24.10.04
Beiträge
2.157
Ort
Berlin
Trophäen
{**!!!}**!!!!! !!!!! !!
Ich suche nach einer Möglichkeit, in einem EDIT-Control die aktuelle Cursorposition zu bestimmen (z.B. vor dem 43. Zeichen). Dann wäre es möglich in einem bestehenden Text an der Cursorposition etwas einzufügen, nachdem zwischenzeitlich ein anderes Control den Fokus hatte.

Hat da evtl. jemand eine Idee ? Wenn es im Moment gar nicht gehen sollte, wäre natürlich eine diesbezügliche Erweiterung der Skriptingmöglichkeiten prima ;)
 
AW: Cursorposition in einem EDIT-Control

Code:
Const EM_GETSEL = &H00B0
Const EM_SETSEL = &H00B1

[COLOR="Green"]'Fügt Text in ein Textfeld an Cursorposition ein[/COLOR]
Sub InsertInTextBox(sDlg, sControl, sText)
	Dim lPos
	Dim lSelStart
	Dim lSelEnd
	Dim sControlText
	
	lPos = CLng(FF_SendControl(sDlg, sControl, EM_GETSEL, 0, 0))
	lSelStart = lPos And &HFFFF&
	lSelEnd = (lPos \ &HFFFF&)
	sControlText = FF_GetControl(sDlg, sControl)
	FF_SetControl sDlg, sControl, Left(sControlText, lSelStart) & sText & Mid(sControlText, lSelEnd + 1)
End Sub
 
AW: Cursorposition in einem EDIT-Control

Hallo Werner,
getestet und für gut befunden. Danke!
Woher weiß man so etwas?
 
AW: Cursorposition in einem EDIT-Control

Hatte mal das gleiche Problem und habe Joachim gefragt.
Darauf kam das Stichwort FF_SendControl und der Hinweis auf die Win API.
 
AW: Cursorposition in einem EDIT-Control

Danke Werner, das fluppt :D
Auf der Spur von FF_SendControl und EM_GETSEL war ich jetzt schon, aber die richtige Parameterangabe wollte noch klappen.
Das kommt auf jeden Fall in's Skriptwiki. FF_SendControl bietet sicher noch etliche interessante Möglichkeiten.
 
AW: Cursorposition in einem EDIT-Control

Hallo Werner,

wenn der Text eingefügt wurde, steht der Cursor danach stets ganz am Anfang des EDIT-Control, erwarten würde man ihn aber am Ende es eingefügten Textes. Ich vermute, dass Du auch dafür eine Lösung kennst, die Zuweisung
Code:
Const EM_SETSEL = &H00B1
in Deinem Beispiel deutet das zumindest an. Ich habe probiert:
Code:
FF_SendControl sDlg, sControl, EM_GETSEL, 5, 5	'Cursor an 5. Position
Das zeigt aber keine Wirkung. Hast Du eine Idee?
 
AW: Cursorposition in einem EDIT-Control

Hallo Andreas,

SetSel bringt Dir nichts, da wenn Du das Textcontrol wieder betrittst, automatisch das ganze Control als markiert gekennzeichnet wird; d. h. SelStart = 0, SelLength = TextLength

Wenn ich mich richtig erinnere, habe ich damals ziemlich lange probiert und es dann aufgegeben. Codeschnipsel habe ich keine mehr davon. Was ich noch gefunden habe, sind andere Konstanten, bei denen einige eine Wirkung haben, andere nicht.
 
Zurück
Oben