Cursorposition in SLE

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
g1b
Rookie
Rookie
Beiträge: 6
Registriert: Di, 16. Mär 2010 8:45

Cursorposition in SLE

Beitrag von g1b »

Um eine eigene Behandlung der Eingabe in SLE-Felder zu implementieren, bräuchte ich die Position des Eingabe-Cursors im Feld.
Wie komme ich an die ran?
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15706
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 70 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Cursorposition in SLE

Beitrag von brandelh »

Hi,

schau mal was ich hier gemacht habe, vielleicht ist ja was passendes dabei ...

http://www.xbaseforum.de/viewtopic.php?f=16&t=4038

Cursorposition
abfragen: :queryMarked() --> aStartEnd
festlegen: :setMarked(aStartEnd)

dann gibt es noch cut, paste und copy Marked().

GANZ WICHTIG: statt :getData() :editBuffer() verwenden, sonst wird gespeichert !
Gruß
Hubert
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Cursorposition in SLE

Beitrag von Herbert »

Hubert, getData() speichert nur, wenn du im Datalink auf ein Datenbankfeld verweist.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Cursorposition in SLE

Beitrag von Herbert »

http://msdn.microsoft.com/en-us/library ... 85%29.aspx

Vielleicht klappts so:

Code: Alles auswählen

#define WM_USER 1024	/* 0x0400 */
#define EM_GETSEL	        (WM_USER+0)
#define EM_SETSEL	        (WM_USER+1)
STATIC DLLFUNCTION SendMessageA( nHWND, nMsg, nMp1, nMp2 )        ;
       USING STDCALL                                              ;
       FROM  USER32.DLL
...
   SendMessageA(::SLE:getHWND(),EM_SETSEL,3,3)   // Setzen des Cursors
  nPos :=  SendMessageA(::SLE:getHWND(),EM_GETSEL,0,0)   // Abfragen des Cursors
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15706
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 70 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Cursorposition in SLE

Beitrag von brandelh »

Herbert hat geschrieben:Hubert, getData() speichert nur, wenn du im Datalink auf ein Datenbankfeld verweist.
möchest du beim nachträglichen Einfügen eines datalink jedesmal die eigene SLE-Klasse überarbeiten ?

natürlich hast du Recht mit deiner Aussage, aber wenn man eigene SLE Klassen ableiten will, dann
nimmt man dafür die richtige vorgesehene Methode :editBuffer().
Auch die SendMessageA API Funktion braucht man nicht zu bemühen, das XbpSLE kann das mit den eigenen Methoden auch ;-)
Gruß
Hubert
g1b
Rookie
Rookie
Beiträge: 6
Registriert: Di, 16. Mär 2010 8:45

Re: Cursorposition in SLE

Beitrag von g1b »

Vielen Dank,
der Hinweis auf queryMarked() und das Beispiel waren sehr hilfreich.
Antworten