Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Probleme mit SearchDialog (https://www.delphipraxis.net/47190-probleme-mit-searchdialog.html)

snapman 7. Jun 2005 17:08


Probleme mit SearchDialog
 
Hallo,
habe mich durch verschiedene SearchDialog Beispiele gearbeitet und so und hab nun folgende Lösung:

Delphi-Quellcode:
 var
  x: integer;
begin

x:=memo1.FindText(SearchFind1.Dialog.FindText,0,memo1.GetTextLen,[stWholeWord,
                                       stMatchCase]);

SendMessage(memo1.Handle,EM_SETSEL,x,x+Length(SearchFind1.Dialog.FindText));
    memo1.Refresh;
Gibt auch andere aber die gehen aufs gleiche heraus.
Das Problem: Die Textstelle wird zwar markiert, aber erst nachdem dich den SearchDialog schliesse..was ja aber nichtso sein soll, der Button heisst ja nicht umsonst WEITERsuchen.
Und zweitens scrollt das Memo nicht automatisch dahin, wo der Text ist.

Wisst ihr wie ich das lösen kann?

Keldorn 7. Jun 2005 17:39

Re: Probleme mit SearchDialog
 
Hallo

irgendwie haust du hier was durcheinander. Findtext gibt es nicht bei einem Memo, nur beim Richedit. Für das Richedit ist ein Beispiel in Verbindung mit Finddialog in der Hilfe.
Es wäre außerdem interessant, WO dein code steht.

Mfg Frank

snapman 8. Jun 2005 02:04

Re: Probleme mit SearchDialog
 
Naja das war vorher ne Memo, ist aber richedit heisst nur noch memo lol

das steht bei OnFind.

Luckie 8. Jun 2005 02:27

Re: Probleme mit SearchDialog
 
Steht HideSelection auf True? Wenn ja, setz es mal auf False.
Zitat:

Determines whether the visual indication of the selected text remains when focus shifts to another control.

snapman 8. Jun 2005 02:36

Re: Probleme mit SearchDialog
 
Hat sich erledigt hab das Beispiel aus der Delphi Hilfe genommen.

Delphi-Quellcode:

procedure TForm1.SearchFind1FindDialogFind(Sender: TObject);
var
  I, J, PosReturn, SkipChars: Integer;
begin
  for I := 0 to Memo1.Lines.Count do
  begin
    PosReturn := Pos(SearchFind1.Dialog.FindText,Memo1.Lines[I]);
    if PosReturn <> 0 then {found!}
    begin
      SkipChars := 0;
      for J := 0 to I - 1 do
        SkipChars := SkipChars + Length(Memo1.Lines[J]);
      SkipChars := SkipChars + (I*2);
      SkipChars := SkipChars + PosReturn - 1;

      Memo1.SetFocus;
      Memo1.SelStart := SkipChars;
      Memo1.SelLength := Length(SearchFind1.Dialog.FindText);
      Break;
    end;
  end;
Aber

Delphi-Quellcode:

   for J := 0 to I - 1 do
        SkipChars := SkipChars + Length(Memo1.Lines[J]);
      SkipChars := SkipChars + (I*2);
      SkipChars := SkipChars + PosReturn - 1;
das check ich nichtso ganz..-kanns mir jemand erklären?


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz