[DELPHI] Jak wstawić tekst do MEMO, ale w następną

0

Do wstawienia tekstu za kursorem służy Memo1.SelText. A jak wstawić tekst nie za kursorem lecz pod kursorem ?

0

Chyba o to ci chodzi :
memo.lines.add('jakis tekst');--GOGLE is the best :)
Pozdrowienia Chodek

0

Nie o to mi nie chodzi, bo memo.lines.add wstawia tekst zawsze w następnej linii bez względu gdze jest umieszczony kursor. A ja chcę wstawić tekst pod kursorem.
Np. w memo mam zapisamych 5 lini. Kursor przesunąłem na wysokość 3 lini. I teraz chce żeby jakiś tekst został wstawiony w 4 lini.

Jeżeli użyje memo.lines.add to tekst zostanie wstawiony do 6 lini.

0

nie wiem jak w memo, ale w RichEdit dziala na 100% :-)

procedure TForm1.Button1Click(Sender: TObject);
var
pozycja : TPoint;
linia : string;
begin
pozycja := RichEdit1.CaretPos;
linia := 'dodana linia';
RichEdit1.Lines.Strings[pozycja.Y] := RichEdit1.Lines.Strings[pozycja.Y] + #13#10 + linia;
end;--Source of life - Programming,
Skateboarding,
Metal.

0

Moj pomysl

function TForm1.GetCursor: TPoint;
begin
Result.Y := Memo1.Perform(EM_LINEFROMCHAR, -1, 0);
Result.X := Memo1.SelStart - Memo1.Perform(EM_LINEINDEX, -1, 0);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
Cursor: TPoint;
begin
Memo1.SetFocus; * tylko dla urody
Cursor:=GetCursor;
If Cursor.Y=Memo1.Lines.Count then
Memo1.Lines.Add(IntToStr(Random(555))+Edit1.Text) *lub to co ma byc wstawione
else
Memo1.Lines.Insert(Succ(Cursor.Y), IntToStr(Random(555))+Edit1.Text); * jw

Memo1.SelStart := Memo1.Perform(EM_LINEINDEX, Cursor.Y, 0);
Memo1.SelStart := Memo1.Perform(EM_LINEINDEX, Cursor.Y, 0) + Cursor.X;
*ostatnie dwie linijki zeby kursor zostal tam gdzie byl
end;

Na podstawie:
http://www.4programmers.net/delphi/gotowce/index.php?action=show&id=11
--Pawel {Delphi 6 Personal}

Po pierwsze: naciśnij F1

0

No to trzeba polaczyc oba pomysly:

procedure TForm1.Button2Click(Sender: TObject);
var
Pozycja : TPoint;
Linia : string;
begin
Memo1.SetFocus;
Pozycja := Memo1.CaretPos;
Linia := 'dodana linia'+IntToStr(Random(5555555));
if Pozycja.y=Memo1.Lines.Count then
Memo1.Lines.Add(Linia)
else
memo1.Lines.Strings[Pozycja.Y] := Memo1.Lines.Strings[Pozycja.Y] + #13#10 + Linia;

Memo1.SelStart := Memo1.Perform(EM_LINEINDEX, Pozycja.Y, 0);
Memo1.SelStart := Memo1.Perform(EM_LINEINDEX, Pozycja.Y, 0) + Pozycja.X;
end;
--Pawel {Delphi 6 Personal}

Po pierwsze: naciśnij F1

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