Autor Beitrag
smile1
Hält's aus hier
Beiträge: 3


D7 Ent
BeitragVerfasst: So 09.11.03 16:36 
Hi,
also ich programmier grade einen kleinen Texteditor (is mein erstes Delphiprog.) Und dort hab ich auch schon ne Suchfunktion (über TFindDialog) eingebaut welche auch super funktioniert. Aber ich will jetzt noch einen Menüeintrag "Weitersuchen" reinmachen mit dem man ohne TFindDialog nach dem vorher eingegebenen String suchen kann. (Sprich man sollte schonmal auf Suchen geklickt haben *g*) Hab schon in vielen Foren und Tuturials gesucht aber nix dazu gefunden. Wer kann mir da weiterhelfen :?:
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: So 09.11.03 16:43 
Hallo

hast du dir das Beispiel in der Hilfe zu TFinddialog.onfind angeschaut?
wie sieht denn dein code bis jetzt aus?

Mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
smile1 Threadstarter
Hält's aus hier
Beiträge: 3


D7 Ent
BeitragVerfasst: So 09.11.03 16:53 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TMainform.Weitersuchen1Click(Sender: TObject);
begin
  FindDialog1Find(Sender);
end;

Wenn ich auf Weitersuchen klicke kommt als Meldung: "6" kann nicht gefunden werden.
ausblenden volle Höhe 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:
procedure TMainform.FindDialog1Find(Sender: TObject);
begin
  with TFindDialog(Sender) do
  begin
    { Suche hinter aktueller Markierung beginnen (falls vorhanden), }
    { andernfalls am Textanfang starten. }
    if Textfeld.SelLength > 0 then StartPos := Textfeld.SelStart + Textfeld.SelLength
    else StartPos := 0;

    { ToEnd ist die Länge von StartPos bis zum Textende im RTF-Eingabefeld }
    ToEnd := Length(Textfeld.Text) - StartPos;

    if frMatchCase in Options then
      if frWholeWord in Options then
        SelPos := Textfeld.FindText(FindText, StartPos, ToEnd, [stMatchCase, stWholeWord])
      else SelPos := Textfeld.FindText(FindText, StartPos, ToEnd, [stMatchCase])
    else if frWholeWord in Options then
        SelPos := Textfeld.FindText(FindText, StartPos, ToEnd, [stWholeWord])
    else
        SelPos := Textfeld.FindText(FindText, StartPos, ToEnd, []);

    if SelPos <> -1 then
      begin
        Textfeld.SetFocus;
        Textfeld.SelStart := SelPos;
        Textfeld.SelLength := Length(FindText);
      end
    else
      begin
        MessageDlg('"'+FindText+'" kann nicht gefunden werden.', mtInformation, [mbOk], 0);
        Textfeld.SelLength := 0;
      end;
  end;
end;


Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: So 09.11.03 17:04 
das hier sieht nicht gut aus:

Zitat:

procedure TMainform.Weitersuchen1Click(Sender: TObject);
begin
FindDialog1Find(Sender);
end;
...
with TFindDialog(Sender) do

Der Sender beim Buttonklick ist aber ein button
und mit TFindialog(sender) versuchst du ein Button wie einen Finddilog zu handhaben.

ausblenden Delphi-Quelltext
1:
  FindDialog1Find(Finddialog1);					

oder du schreibst beim with
ausblenden Delphi-Quelltext
1:
with FindDialog1 do					


wo hast du denn selpos etc deklariert? das langt, wenn es lokale Variablen sind.

Mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
smile1 Threadstarter
Hält's aus hier
Beiträge: 3


D7 Ent
BeitragVerfasst: So 09.11.03 17:12 
Jo die Variablen hab ich auch lokal deklariert. Hatte ich nur zum testen verschoben.


Es geht! thx für die schnelle Antwort. :D Ich muss mich noch bissel beim Programmieren umstellen weil ich bis jetzt nur PHP programiert hab.