Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - wie kann ich "gehe zu zeile"-funktion realisieren


Harry M. - Mi 27.10.04 02:46
Titel: wie kann ich "gehe zu zeile"-funktion realisieren
wie kann ich eine "gehe zu zeile"-funktion in einem editor realisieren?


Moderiert von user profile iconTino: Topic aus Sonstiges verschoben am Mi 27.10.2004 um 10:29


NeWsOfTzzz - Mi 27.10.04 02:51

Vielleicht mal konkreter werden? ich kann mir da leider nix genau drunter vorstellen..


Harry M. - Mi 27.10.04 04:00

na in einem memo. zb gehe zu zeile 200 schau dir mal die funktion des notepade bei
"bearbeiten -> gehe zu" an. sowas meine ich in eine bestimmte zeile in einem momo springen.


blackbirdXXX - Mi 27.10.04 04:13

Bei einem Synmemo mit:

Delphi-Quelltext
1:
SynMemo1.GotoLineAndCenter(ZEILENNUMMER);                    


Bei einem Memo hätte ich es so getan:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var i, c: Integer;
begin
    for i := 0 to ZEILENNUMMER do
        begin
            c := c + Length(Memo1.Lines[i]);
        end;
    Memo1.SelStart := c;
    Memo1.SelLength := 0;
end;

(nicht getestet)

Hoffe ich konnte helfen


Harry M. - Mi 27.10.04 04:32

Synmemo??? kenn ich leider nicht. hat meine delphi-hilfe auch nicht ausgespuckt.

beim 2. code beispiel springt der cursor bis in die letzte zeile nicht in die gewünschte. ich versuche mir aber das prinzip umzubauen

thx


Sprint - Mi 27.10.04 05:50
Titel: Re: wie kann ich "gehe zu zeile"-funktion realisie
User-Xy2004 hat folgendes geschrieben:
wie kann ich eine "gehe zu zeile"-funktion in einem editor realisieren?



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure ScrollToLine(AMemo: TMemo; Line: Integer);
var
  I: Integer;
  Counter: Integer;
begin

  Counter := 0;

  for I := 0 to Line - 2 do
    Counter := Counter + Length(AMemo.Lines.Strings[I]) + 2;

  with AMemo do
  begin
    SelStart := Counter;
    SelLength := 0;
    SetFocus;
  end;

end;


.Chef - Mi 27.10.04 09:43


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure GotoZ(Zeile : Integer);
var
  a : Integer;
begin
  a:=Memo.Perform(EM_GETFIRSTVISIBLELINE,0,0);
  Memo.Perform(EM_LINESCROLL,0,Zeile-a);
end;


Gruß,
Jörg


Tino - Mi 27.10.04 10:29
Titel: Re: wie kann ich "gehe zu zeile"-funktion realisie
Hallo!

User-Xy2004 hat folgendes geschrieben:
wie kann ich eine "gehe zu zeile"-funktion in einem editor realisieren?

Schau dir mal bitte diesen FAQ Beitrag an: ...die Zeile/Spalte in Memos lesen/setzen? [http://www.delphi-forum.de/topic_die+ZeileSpalte+in+Memos+lesensetzen_3877.html]

Gruß
Tino


Harry M. - Mi 27.10.04 12:24

problem behoben. habe die lösung von @Sprint übernommen.

nun gehts.

danke an alle bemühten