Thema: Delphi Suchen in RTF-Texten?

Einzelnen Beitrag anzeigen

HaJo

Registriert seit: 28. Apr 2004
Ort: Würselen
140 Beiträge
 
Delphi 8 Enterprise
 
#2

Re: Suchen in RTF-Texten?

  Alt 10. Mai 2004, 11:39
Hai Sharky (lach),

ich benutze folgende Variante zur Textsuche in einem einem Memofeld in das komplette Winword oder WordPerfect Texte zur schnellen Übersicht hinterlegt werden.

Delphi-Quellcode:
procedure TfrmMain.SuchenText;
var
   Position,
   x,
   i : Integer;
BEGIN
   IF TextSuchen then
      BEGIN
         dm.QryDok.next;
         Position := dm.QryDok.RecNo;
         SpBtnAbort.Visible := TextSuchen;
         // Text in DB-Feld finden
         FOR i := Position to dm.QryDok.RecordCount do
             BEGIN
                forms.Application.ProcessMessages;
                SpBtnAbort.Visible := TextSuchen;
                IF Textsuchen = false then
                   EXIT;
                x := pos(AnsiLowerCase(MemoText), AnsiLowerCase(frmText.dbMemo1.Text));
                IF x > 0 then
                   BEGIN
                      frmText.Caption := 'Dokument-Text - ' + dm.QryDokDOKUMENTNAME.AsString;
                      frmText.show;
                      // Text im Memo finden
                      SuchenMemo(MemoText);
                      Break;
                   END;
                dm.QryDok.Next;
             END;
         TextSuchen := FALSE;
         SpBtnAbort.Visible := TextSuchen;
      END;
END;


// Suche im Memofeld
procedure TfrmMain.SuchenMemo(Text: String);
var
   s : String;
   I,
   J,
   PosReturn,
   SkipChars   : Integer;
begin
   s := Text;
   for I := 0 to frmText.dbMemo1.Lines.Count do
      begin
         forms.Application.ProcessMessages;
         PosReturn := Pos(s, frmText.dbMemo1.Lines[I]);
         if PosReturn <> 0 then {gefunden!}
            begin
               Skipchars := 0;
               for J := 0 to I - 1 do
                  Skipchars := Skipchars + Length(frmText.dbMemo1.Lines[J]);
               SkipChars := SkipChars + (I * 2);
               SkipChars := SkipChars + PosReturn - 1;
               // Gefundenen Text im Memo markieren
               frmText.dbMemo1.SetFocus;
               frmText.dbMemo1.SelStart := SkipChars;
               frmText.dbMemo1.SelLength := Length(s);
               Break;
            end;
   end;

end;
Viel Spass mit dem Beispiel
Gruß Jochen

[edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit]
Hans-Joachim Brosius
  Mit Zitat antworten Zitat