Autor Beitrag
lemming
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 470

Mac OS 10.3.1
Delphi 6 Pro, Kylix 3
BeitragVerfasst: Do 12.08.04 10:22 
Hi!

Ich habe ein Memo mit viel viel Text. Jetzt möchte ich gerne das der Cursor steuern lässt. Nach link und Recht mache ich es mit Dec(Memo.SelStart) und Inc(Memo.SelStart); Ich möchte den Cursor aber auch nach oben und unten - eine Zeile höher oder tiefer - befördern können. Wie mache ich das am dümmsten?

lemming
lemming Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 470

Mac OS 10.3.1
Delphi 6 Pro, Kylix 3
BeitragVerfasst: Do 12.08.04 10:44 
Hab was gefunden
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
Procedure GetMemoLinePos(Memo:TMemo;var MemoRow,MemoCol:Integer);
Begin
  With Memo do Begin
    MemoRow := SendMessage(Handle,EM_LINEFROMCHAR,SelStart,0);
    MemoCol := SelStart - SendMessage(Handle,EM_LINEINDEX,MemoRow,0);
  End;
End;

Procedure SetMemoLinePos(Memo:TMemo;MemoRow,MemoCol:Integer );
Begin
  If MemoRow <= Memo.Lines.Count
    Then Memo.SelStart := SendMessage(Memo.Handle,EM_LINEINDEX,MemoRow,0) + MemoCol
    Else Memo.SelStart := SendMessage(Memo.Handle,EM_LINEINDEX,Memo.Lines.Count,0) + MemoCol
End;


Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt.
Crowbar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 180

WinXP, SP2
D6 Enterprise
BeitragVerfasst: Do 12.08.04 10:53 
Hallo,
ich habe hier auch noch ein Beispiel, wie man den Cursor in einem Memofeld neu plazieren kann und zu dieser Position scrollen kann:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure TForm1.Button3Click(Sender: TObject);
begin
 with Memo1 do
 begin
 // Zur letzten Zeile Scrollen:
    SelStart := Length(Text);
    Perform(EM_SCROLLCARET, 00);
 
 // Zur ersten Zeile Scrollen:
    selstart:=perform(EM_LineIndex,0,0);
    Perform(EM_SCROLLCARET, 0 , 0);

 // Cursor auf Linie 5, Postion 3 setzen:
    selstart:=perform(EM_LineIndex,5,0)+3;
    perform(EM_SCROLLCARET,0,0);

 // Den Fokus setzten:
    SetFocus;
 end;
end;


cu
Crowbar


Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt.