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 FindDialog??? (https://www.delphipraxis.net/6855-finddialog.html)

Piro 24. Jul 2003 22:36


FindDialog???
 
Hallo

ich komme irgendwie mit diesem FinDialog nicht klar.

Wenn ich alles selber erstelle(Komponenten) und suche, klappt es. Ich möchte aber gerne den Dialog benutzen bzw. wissen wie das geht.

Also folgendes:

StringGrid mit nur einer Spalte.

Somit rufe ich den Dialog auf.

Delphi-Quellcode:
  procedure TForm1.menusuchenvornameClick(Sender: TObject);
  begin
   FindDialog1.Execute;
  end;
Das ist die Findprocedure:

Delphi-Quellcode:
 procedure TForm1.FindDialog1Find(Sender: TObject);
 var
  suchtext: string;
  i: integer;
 begin
  suchtext := FindDialog1.FindText;
  for i:=0 to StringGrid1.RowCount -1 do
  begin
      if StringGrid1.cells[0,i] = suchtext then
      begin
         ShowMessage('gefunden');
      end;
  end;
 end;
So jetzt ist mein Problem, wie ich die beiden verbinde. Und wenn ich den Suchtext eingebe, übernimmt er ihn nicht. Bzw wie ich überhaupt die einzelnen Elemente in dem Suchfenster ansprechen kann.

Ich brauch einfach mal einen Tipp oder Denkanstoss, der mich vielleicht auf einen anderen Weg bringt. Danke

Daniel B 24. Jul 2003 22:49

Re: FindDialog???
 
Hallo,

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
  if FindDialog1.Execute then
  begin
    //Hier der Code der zweiten Prozedur
  end;
end;
Grüsse, Daniel :hi:

Piro 25. Jul 2003 06:01

Re: FindDialog???
 
Danke für die schnelle Antwort.

Delphi-Quellcode:
procedure TForm1.btnsuchenClick(Sender: TObject);
var
 i:integer;
 suchtext: string;
begin
 if FindDialog1.Execute then
 begin
     suchtext := FindDialog1.FindText; // bleibt leer obwohl ich den Suchtext eingebe
     for i:=0 to SringGrid1.RouCount -1 do
     begin
         if StringGrid1.cells[0,i] = suchtext then
         begin
             ShowMessage('gefunden');
         end;
     end;
 end;
end;
Ja irgendwie passiert nichts. Das hatte ich dauernd. Warum?

APP 25. Jul 2003 07:21

Re: FindDialog???
 
Hallo,
FindDialog funkt nicht so wie die anderen Dialoge:

Delphi-Quellcode:
// This example requires a TRichEdit, a TButton, and a TFindDialog.
// Clicking the button click will display a Find Dialog to the right of
// the edit control. Filling in the "Find what" text and pressing the
// Find Next button will select the first matching string in the
// Rich Edit control that follows the previous selection.

procedure TForm1.Button1Click(Sender: TObject);

begin
  FindDialog1.Position := Point(RichEdit1.Left + RichEdit1.Width, RichEdit1.Top);
  FindDialog1.Execute;
end;

procedure TForm1.FindDialog1Find(Sender: TObject);
var
  FoundAt: LongInt;
  StartPos, ToEnd: Integer;
begin
  with RichEdit1 do
  begin
    { begin the search after the current selection if there is one }
    { otherwise, begin at the start of the text }
    if SelLength <> 0 then

      StartPos := SelStart + SelLength
    else

      StartPos := 0;

    { ToEnd is the length from StartPos to the end of the text in the rich edit control }

    ToEnd := Length(Text) - StartPos;

    FoundAt := FindText(FindDialog1.FindText, StartPos, ToEnd, [stMatchCase]);
    if FoundAt <> -1 then
    begin
      SetFocus;
      SelStart := FoundAt;
      SelLength := Length(FindDialog1.FindText);
    end;
  end;
end;
Die Delphi-Hilfe ist Dein Freund :mrgreen: :roll: :mrgreen:

Nalincah 25. Jul 2003 07:27

Re: FindDialog???
 
Ich hab das bei mir mal ausprobiert und komischerweise durchläuft das Programm den Quellcode der nach "finddialog1.execute" steht, ohne das ich auf "Weitersuchen" klicke. Versteh das nciht

Piro 25. Jul 2003 09:30

Re: FindDialog???
 
@General2003

ja genau das ist ja mein Problem. Ich möchte die Suche ja auch erst
starten wenn ich den FindText eingegeben habe.

Und erst wenn ich nachdem auf weitersuchen klicke, soll die Suche
anfangen.

Wahrscheinlich ist es besser sich seinen eigenen Suchdialog zu bauen. Da weiss man wenigsten wie man die die einzelnen Komponenten ansprechen kann.

Oder einer ist so gütig und verrät mir den Umgang mit diesem Finddalog.
Mal ehrlich geagt, die Hilfe ist zwar gut aber irgendwie nicht umbedingt ausreichend für mein Problem.

Ansonsten an Alle: vielen Dank für euere Hilfe.

Tom 25. Jul 2003 10:25

Re: FindDialog???
 
Du könntest Dir auch einfach die Eigenschaften, Methoden und Ereignisse vom TFindDialog ansehen.

Preisfrage: Wofür ist das Ereignis OnFind gut?

Piro 25. Jul 2003 15:50

Re: FindDialog???
 
Dank an alle. Es funktioniert auf einmal. :bounce2:

Delphi-Quellcode:
procedure TForm1.btnsuchenClick(Sender: TObject);
begin
 FindDialog1.Execute;
end;
Delphi-Quellcode:
procedure TForm1.FindDialog1Find(Sender: TObject);
var
 i, x: integer;
begin
 for i:=0 to StringGrid1.RowCount -1 do
     for x:=0 to StringGrid1.ColCount -1 do
     begin
         if StringGrid1.cells[x,i] = FindDialog1.FindText then
         ShowMessage('gefunden');
     end;
end;

zebrafalke 1. Mär 2006 20:13

Re: FindDialog???
 
Und wie funktioniert das mit RichEdit statt StringGrid?? :wiejetzt:


zebrafalke


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:06 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