Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Textcursor unter Mouscursor setzen


fritzoskar - Mo 16.10.06 16:26
Titel: Textcursor unter Mouscursor setzen
Hallo!


Ich möchte den Textcursor mittels onmousemove Event genau unter die Mousposition setzen, ohne den Mousbutton zu drücken.

Beim Stöbern im DF habe ich die Lösung für dieses Probelem bei einen TRichEdit gefunden.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.RichEdit2MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var iCharIndex: Integer;
    Pt: TPoint;
begin
  with Tcustomedit(sender) do
  begin
    SetFocus;
    Pt := Point(X, Y);
    iCharIndex := Perform(EM_CHARFROMPOS, 0, Integer(@Pt));
    selStart:=icharindex;
  end;

end;


wieso funktioniert das bei der TMemo-Komponente nicht

thx für jede hilfe


Lannes - Mo 16.10.06 22:23

Hallo,
user profile iconfritzoskar hat folgendes geschrieben:
...wieso funktioniert das bei der TMemo-Komponente nicht...
genau kann ich das nicht erklären, aber es ist wohl abhängig von der Komponente wie mit EM_CHARFROMPOS umgegangen werden muss.

Bei einem Memo funktioniert es so:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Memo1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var lParam: Integer;
begin
  with TCustomEdit(Sender) do
    begin
    SetFocus;
    lParam := Y shl 16 + X;
    selStart := LoWord(Perform(EM_CHARFROMPOS, 0, lParam));
    end;
end;


Oder auch so, swissdelphicenter:
...die Cursor Position im TMemo der Maus folgen lassen? [http://www.swissdelphicenter.ch/de/showcode.php?id=1538]

//Edit: Link entfernt(war Quatsch), anderen Link hinzugefügt.


fritzoskar - Di 17.10.06 09:42

Danke, funktioniert wunderbar