Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Form zum Suchen


hansa - So 06.07.03 13:32
Titel: Form zum Suchen
Hi,

ich habe eine Form bei der gebe ich einen Suchbegriff ein. Wird ein zutreffender gefunden habe ich eine MessageBox mit "gefunden" "weitersuchen" "abbrechen" Wie kriege ich die Form jetzt dazu, daß sie den gefundenen Begriff anzeigt und die Klicks der Messagebox auswertet ?

Bisher ist es mir nur gelungen, daß beim Onclose der Form die Messagebox kommt. Bin am überlegen, drei Buttons auf die Form zu legen, aber trozudem interessiert mich, wie man so was realisiert.


StefanH - So 06.07.03 15:38

Suche:
Delphi Hilfe hat folgendes geschrieben:

Für dieses Beispiel werden drei Objekte benötigt: TRichEdit, TButton und TFindDialog.
Nach einem Klick auf die Schaltfläche wird rechts vom Eingabefeld ein Dialogfeld Suchen angezeigt. Wenn nun ein Suchtext eingegeben und die Suche gestartet wird, erhält der erste passende String nach der aktuellen Cursorposition im RTF-Eingabefeld eine Markierung.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
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
    { Suchbeginn nach der aktuellen Markierung (falls vorhanden), }
    { andernfalls am Textanfang starten }

    if SelLength <> 0 then
      StartPos := SelStart + SelLength;
    else

      StartPos := 0;

    { ToEnd ist die Länge von StartPos bis zum Ende des Textes im RTF-Eingabefeld }

    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;



Wenns das war,
cu Stefan