Entwickler-Ecke

Sonstiges (Delphi) - Finddialog und Richedit...


Scrat - Di 19.11.02 13:22
Titel: Finddialog und Richedit...
Hallo zusammen,

wie stell ich es an, dass ich den Finddialog richtig benutzen kann?
Ich habe in der Hilfe einen Quelltext gefunden, aber der funtzt irgendwie nich...


Quelltext
1:
2:
3:
4:
5:
6:
if FindDialog1.Execute then
   begin
    if SelLength <> 0 then
    StartPos := SelStart + SelLength
    else
    StartPos := 0;


Ich möchte einfach nur, dass nach den Wörtern gesucht wird welche ich im Finddialog eingebe.

Wer kann mir helfen?

MFG
Scrat


foxy - Di 19.11.02 13:25

Versteh ich dich richtih du möchtest das du nach einem String gesucht wird den du eingibst ??... was soll er suchen Dateien mit dem Namen oder in einer Datei eine Zeile oder Wörter??


LCS - Di 19.11.02 14:03

Hi
Auszug aus der Hilfe zum RichEdit
borland hat folgendes geschrieben:


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:
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;



Gruss Lothar


Delete - Di 19.11.02 15:32

foxy hat folgendes geschrieben:
Versteh ich dich richtih du möchtest das du nach einem String gesucht wird den du eingibst ??... was soll er suchen Dateien mit dem Namen oder in einer Datei eine Zeile oder Wörter??


Sthet doch da: Eine Zeichenfolge in einem RichEdit.


Scrat - Mi 20.11.02 10:20

Ja ich möchte nach Wörtern suchen.

Wenn der Satz lauten würde: Willkommen im Delphi-Forum...

Und ich suche mittels dem Finddialog nach dem Wort "Delphi",
soll mein Cursor zu der Stelle im Satz springen wo das Wort steht und dieses blau makieren.

Danke im Vorraus
Scrat

PS: Den Finddialog-Quellcode habe ich so wie er in der Hilfe-Datei steht in meinen Quellcode kopiert. Resultat = null.


Keldorn - Mi 20.11.02 11:12

Hallo,

ein ähnliches thema Thema hatten wir ja erst vor kurzem ....ich hab auch den text aus der OH kopiert und bei mir is Resultat <> Null.

haste auch das onfind-ereignis beim Finddialog richtig zugeordnet?

Mfg Frank


Scrat - Mi 20.11.02 16:30

Also ich komme irgendwie mit der Hilfe von Delphi nur ganz selten klar.
Und OnFind habe ich bei mir gar nicht im einsatz.
(Habe ich auch bei dem Quelltext von der Delphi-Hilfe nicht finden Können)

Wenn ich Finddialog1.Onfind eingebe verlangt Delphi nach mehr Parametern. Wie muß ich denn den OnFind-Befehl benutzen?

MFG
Scrat


Keldorn - Mi 20.11.02 16:54

Scrat hat folgendes geschrieben:
Also ich komme irgendwie mit der Hilfe von Delphi nur ganz selten klar.

solltest du aber - sonst kommst du nie weiter.
Scrat hat folgendes geschrieben:

Und OnFind habe ich bei mir gar nicht im einsatz.

- klick den finddialog auf deiner Form an
- im objektinspektor auf ereiognisse klicken
- da steht unter anderem onclose, onfind ... , auf der rechten seite bei onfind sollte eine Prozedur eingetragen sein, wennn nicht, ist es kein wunder, das bei dir resultat=null ist.

Die gute Onlinehilfe hat folgendes geschrieben:

Beschreibung

Wenn der Benutzer auf die Schaltfläche Weitersuchen im Dialogfeld Suchen klickt, tritt das Ereignis OnFind ein. Die in Options gesetzten Flags bestimmen, wie die Suche durchgeführt wird.


steht keine Procedur drin, doppelklick drauf ... im quelltext steht dann:

Quelltext
1:
2:
3:
4:
procedure TForm1.FindDialog1Find(Sender: TObject);
  begin

  end;

das finddialog1find sollte dir bekannt vorkommen, hierein mußte den Code aus der OH reinkopieren.

ansonsten poste mal nen teil von deinem Quelltext.

Mfg Frank :roll:


Scrat - Do 21.11.02 10:35

Hi Keldorn,

jetzt funkt es.
Mann muß die Prozedur also in das Ereignissfeld schreiben......

Danke
Scrat