Zmiana pozycji kursora w TMemo

0

Witam,

Potrzebuję zrobić efekt przeciągania obrazków do componentu TMemo. Tzn, aby po przeciągnięciu obrazka nad TMemo i jego upuszcznie wklejał się w tekście jego ścieżka URL.
I w zasadzie wszystko mam już zrobione poza jednym. Kiedy przeciągam nad TMemo obrazek i go upuszczę to kod wkleja się w miejscu gdzie poprzednio znajdował sie znaczek zachęty.

Tak wyglądaja mniej więcej kod:

procedure TForm1.ImagesMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if ssLeft in Shift then
  begin
    TJvImagesViewer(Sender).BeginDrag(FALSE);
  end;
end;

procedure TForm1.Memo1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
Accept := Sender <> Source;
end;

procedure TForm1.Memo1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
   TMemo(Sender).SelText:=TJvImagesViewer(Source).Items[TJvImagesViewer(Source).SelectedIndex].Caption;
end;

Pytanie brzmi jak zrobić, żeby tekst z adresem obrazka wklejał się bezpośrednio pod kursorem w komponencie TMemo.

Z góry wielkie dzięki za pomoc.

0
CreateCaret
DestroyCaret
GetCaretBlinkTime
GetCaretPos
HideCaret
SetCaretBlinkTime
SetCaretPos
ShowCaret
0

OK, znalazłem rozwiązanie na moje bolączki.

procedure TForm1.SetCaretPos(Memo: TMemo; LinePos, CharPos: integer);
var
  idx: integer; 
begin 
  idx := SendMessage(Memo.Handle, EM_LINEINDEX, LinePos, 0); 
  Memo.SelStart := idx+CharPos; 
  Memo.SelLength := 0; 
end; 

I wtedy procedura TForm1.Memo1DragOver wygląda następująco:
procedure TForm1.Memo1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
var
ret: Longint;
begin
Accept := Sender <> Source;
if Sender<>Source then

begin
ret := memo1.perform( EM_CHARFROMPOS, 0, MakeLParam( X, y ));
SetCaretPos(Memo1,{HiWord(ret)}0,LoWord(ret));
end;

Dzięki za pomoc i pozdrowionka. [browar]

1 użytkowników online, w tym zalogowanych: 0, gości: 1