Autor Beitrag
Snoop007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 50



BeitragVerfasst: Mi 30.10.02 20:12 
hi,
ich benutze die Komponente FindDialog zum suchen in einem Ritchedit - feld

wie kann ich zu einem gefundenen wort runter bzw. seitwärts scrollen ?
O'rallY
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 563



BeitragVerfasst: Mi 30.10.02 22:40 
EDH hat folgendes geschrieben:

Auch alle nicht in der Delphi-VCL gekapselten Funktionen kann man durch
ein PostMessage() der Nachricht WM_VSCROLL an das Memo erreichen.
Hier einige Beispiele:

an den Anfang des Textes:

PostMessage(Memo1.Handle,WM_VSCROLL,SB_TOP,0);

ans Ende des Textes:

PostMessage(Memo1.Handle,WM_VSCROLL,SB_BOTTOM,0);

eine Zeile hoch:

PostMessage(Memo1.Handle,WM_VSCROLL,SB_LINEUP,0);

eine Zeile runter:

PostMessage(Memo1.Handle,WM_VSCROLL,SB_LINEDOWN,0);

eine Seite hoch:

PostMessage(Memo1.Handle,WM_VSCROLL,SB_PAGEUP,0);

eine Seite runter:

PostMessage(Memo1.Handle,WM_VSCROLL,SB_PAGEDOWN,0);

Bewegungen innerhalb einer Zeile sind entsprechend mit der Nachricht WM_HSCROLL möglich...


Dürfte dir eigentlich weiterhelfen. Falls noch unklarheiten bestehen, einfach nochmal posten!

_________________
.oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...
Snoop007 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 50



BeitragVerfasst: Mi 30.10.02 23:57 
das mit dem scrollen wusste ich schon, aber woher weiss ich, in welcher zeile ( Tstrings ) das wort steht, ich habe wenn ja nur die text position ( string )
O'rallY
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 563



BeitragVerfasst: Do 31.10.02 15:43 
Ich weiß nicht ob 's da schon eine Funktion gibt, aber eine möglichkeit wäre, solange Length(RichEdit1.Lines[i]) zu einer Variable dazu zu zählen, bis sie größer ist als die Position des Wortes. Verstehst du was ich meine? So ungefähr könnte es funktionieren:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
function TForm1.FindLine(position: integer): integer;
var
  i, letters: integer;
begin
  Result := -1;
  letters := 0;
  if position = -1 then
     exit;
  for i := 0 to RichEdit1.Lines.Count - 1 do
  begin
   if (position >= letters) and (position <= (letters + Length(RichEdit1.Lines[i]))) then
    break;
   Inc(letters, Length(RichEdit1.Lines[i]));
  end;

  Result := i;

end;


Quelltext hat bei mir funktioniert! Hoffe nur, dass ich das nicht umsonst gemacht habe, fals so ne Funktion schon existiert *g*.

_________________
.oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...