Autor Beitrag
galagher
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2562
Erhaltene Danke: 46

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Di 28.12.10 19:09 
Hallo!

Ich benutze in mehreren zur Laufzeit erzeugten Forms je eine Komponente TRxRichEdit, die ihren eigenen Find-Dialog mitbringt. Klappt auch in jenem Form, in dem ich den Dialog aufrufe:
ausblenden Delphi-Quelltext
1:
2:
 RxRichEdit1.FindDialog(RxRichEdit1.SelText).Position :=
  Point(Mouse.CursorPos.X-10, Mouse.CursorPos.Y-10);  //Zeigt das Dialogfenster an
Ich möchte aber, dass alle RxRichEdit's in allen Forms nach dem Suchtext durchsucht werden.

Die Forms erzeuge ich ganz einfach: Note := TForm2.Create(Application);

Ich denke, ich muss mit FindComponent arbeiten, aber wie wende ich den Dialog - oder vielmehr den Suchtext - auf die RxRichEdit's der anderen Forms an? Oder geht das einfacher?

TRxRichEdit hat eine Funktion FindText, die folgende Parameter erwartet:
const SearchStr: string; StartPos, Length: Integer; Options: TRichSearchTypes und ein Integer zurückgibt.

Ich weiss aber nicht, wie ich das alles zusammenfügen kann.

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: Di 28.12.10 19:57 
Ein Array erstellen mit den TRichEdits drin und das Array durchgehen.

_________________
Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2562
Erhaltene Danke: 46

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Di 28.12.10 20:41 
user profile iconplatzwart hat folgendes geschrieben Zum zitierten Posting springen:
Ein Array erstellen mit den TRichEdits drin und das Array durchgehen.
Wie muss das Array aussehen? Ich weiss nicht mal, wie ich die Suche korrekt starten soll.

Bis jetzt habe ich das:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
 RxRichEdit1.FindDialog(RxRichEdit1.SelText).Position :=
  Point(Mouse.CursorPos.X-10, Mouse.CursorPos.Y-10);

 if not RxRichEdit1.FindDialog(RxRichEdit1.SelText).Execute then exit;  //Wirkt sich nicht aus
 s := RxRichEdit1.FindDialog(RxRichEdit1.SelText).FindText;  //Das klappt

 //Das führt zu einer Zugriffsverletzung:
 for i := 0 to iNotesCount do  //Beginne bei der 1. Form und gehe alle durch
 begin
  if Pos(s, TForm2(Application.FindComponent('Notiz'+IntToStr(i))).RxRichEdit1.Text) > 0 then
  begin
  //...

Der Code geht einfach nach if not RxRichEdit1.FindDialog(RxRichEdit1.SelText).Execute then exit; weiter!

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!