====== TFindDialog — Suchen ====== Der einzige Standarddialog in Vega, der **nicht modal** läuft — zusammen mit seiner Ableitung [[lyx_-_programmiersprache:vega:controls:treplacedialog|TReplaceDialog]]. Das ist kein Versehen, sondern der Zweck: während das Fenster offen steht, soll man im Text weiterarbeiten und immer wieder „Weitersuchen“ drücken können. Unit: ''Vega.FindDlg'' · Basis: keine — eigene Wurzel → [[lyx_-_programmiersprache:vega:controls|Alle Steuerelemente]] · [[lyx_-_programmiersprache:vega:guides:dialoge|Guide: Dialoge]] · [[lyx_-_programmiersprache:vega:controls:treplacedialog|TReplaceDialog]] ---- ===== Vererbung ===== **Kette:** **TFindDialog** — eigene Wurzel, kein Vorfahr. Was diese Klasse kann, steht vollständig auf dieser Seite. **Direkte Nachfahren:** [[lyx_-_programmiersprache:vega:controls:treplacedialog|TReplaceDialog]] **Quelle:** ''vega/finddlg.lyx'' ---- ===== Verwendung ===== fn AufSuchen(sender: TFindDialog): void { // Der Handler sucht selbst — der Dialog kennt weder Text noch Editor. Print(sender.FindText.AsPChar()); Print(IntToStr(sender.HasOption(frDown) as int64)); // 1 = abwärts Print(IntToStr(sender.HasOption(frMatchCase) as int64)); } var d: TFindDialog := new TFindDialog(); d.SetTitle("Suchen"); d.SetFindText("Bello"); d.SetOption(frMatchCase, true); d.OnFind := AufSuchen; d.OnClose := AufZu; d.Execute(app); // zeigt das Fenster und kehrt SOFORT zurück // ... das Programm läuft weiter, der Dialog bleibt offen d.CloseDialog(); ---- ===== Nicht modal — was daraus folgt ===== * ''Execute(app)'' **kehrt sofort zurück**. Es gibt keinen Rückgabewert „der Nutzer hat OK gedrückt“; alles kommt über die Ereignisse. * Ein zweites ''Execute'' öffnet **kein** zweites Fenster — es holt das vorhandene nach vorn. * ''Form'' ist öffentlich: ein nicht-modales Fenster muss von außen erreichbar sein, etwa um es zu verschieben oder gezielt zu schließen. * ''Visible'' sagt, ob es gerade steht. ^ Ereignis ^ Wann ^ | ''OnFind'' | „Weitersuchen“ wurde gedrückt | | ''OnClose'' | Das Fenster ist zu | Gemessen: drei Klicks auf „Weitersuchen“ ergeben **drei** ''OnFind''-Meldungen bei weiterhin offenem Fenster. ---- ===== Optionen ===== ^ Bit ^ Wert ^ Bedeutung ^ | ''frDown'' | 1 | Abwärts suchen (Vorgabe) | | ''frMatchCase'' | 2 | Groß- und Kleinschreibung beachten | | ''frWholeWord'' | 4 | Nur ganze Wörter | | ''frReplaceAll'' | 8 | Alle ersetzen — nur bei [[lyx_-_programmiersprache:vega:controls:treplacedialog|TReplaceDialog]] | ''Options'' ist eine Bitmaske; gelesen wird mit ''HasOption(bit)'', gesetzt mit ''SetOption(bit, v)''. Beide Richtungen greifen: ein Klick ins Kästchen ändert ''Options'', und ''SetOption'' schaltet das Kästchen um. ---- ===== Besonderheiten ===== * **Der Dialog sucht nicht.** Er kennt weder Text noch Editor; der Handler liest ''FindText'' und ''Options'' und macht die Arbeit. Delphi teilt es genauso auf — anders ginge es auch nicht, ohne dem Dialog ein Textmodell aufzuzwingen. * ''ReadFromControls()'' zieht den Stand aus den Eingabefeldern in die Felder des Dialogs; vor jedem Ereignis passiert das von selbst. * ''BuildForm'', ''AddButtons'', ''DialogHeight'' und ''DialogWidth'' sind **virtuell** — daran hängt sich [[lyx_-_programmiersprache:vega:controls:treplacedialog|TReplaceDialog]] ein, statt das Fenster ein zweites Mal zu bauen. Gemessen: ''DialogHeight()'' liefert 190, beim Ersetzen-Dialog 226 — auch über eine ''TFindDialog''-Variable, der virtuelle Aufruf greift also über die Unit-Grenze. * **Weggelassen** sind die ''fr*''-Bits aus Delphi, die nur die Windows-Dialogvorlage steuern (''frShowHelp'', ''frHidden'', ''frDisableUpDown'' …): Vega zeichnet den Dialog selbst, ein Schalter zum Ausgrauen eines fremden Vorlagenfelds hätte hier keine Wirkung. Geblieben sind die drei, die den Suchvorgang betreffen. Letzte Aktualisierung: 2026-09-05 — gegen ''lyx-vcl/vega/*.lyx'' abgeglichen: Abschnitt „Vererbung" (Vorfahr-Kette, direkte Nachfahren, Quelldatei) ergänzt und die fehlenden Eigenschaften, Methoden und Ereignisse nachgetragen. Vorherige letzte Aktualisierung: 2026-08-20 — API maschinell aus ''Vega/FindDlg.lyx'' erhoben, Beispiel mit ''lyxc 1.1.4B'' übersetzt und ausgeführt. ===== Eigenschaften ===== Alle Eigenschaften, auch die geerbten. ^ Name ^ Typ ^ Bedeutung ^ Herkunft ^ | ''Form'' | [[lyx_-_programmiersprache:vega:controls:tform|TForm]] | Das Fenster selbst — öffentlich, weil ein nicht-modaler Dialog von außen erreichbar sein muss | eigen | | ''FindText'' | [[lyx_-_programmiersprache:vega:controls:ttextbuffer|TTextBuffer]] | Der gesuchte Text | eigen | | ''Options'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Suchoptionen als Bitmaske: ''frDown'' (1), ''frMatchCase'' (2), ''frWholeWord'' (4), ''frReplaceAll'' (8) | eigen | | ''Title'' | [[lyx_-_programmiersprache:vega:controls:ttextbuffer|TTextBuffer]] | Titel des Fensters | eigen | | ''Visible'' | [[lyx_-_programmiersprache:sprache:datentypen#5_wahrheitswerte_bool|bool]] | Wird gezeichnet und nimmt am Layout teil | eigen | ---- ===== Methoden ===== Alle Methoden, auch die geerbten. ^ Signatur ^ Zweck ^ Herkunft ^ | ''Create(): void'' | Konstruktor | eigen | | ''Destroy(): void'' | Gibt eigene Ressourcen frei | eigen | | ''SetTitle(s: pchar): void'' | Fenstertitel setzen | eigen | | ''SetFindText(s: pchar): void'' | Suchtext setzen | eigen | | ''HasOption(bit: int64): bool'' | Ist dieses Optionsbit gesetzt | eigen | | ''SetOption(bit: int64, v: bool): void'' | Optionsbit setzen — schaltet auch das Kästchen um | eigen | | ''DialogHeight(): int64'' | Höhe des Fensters — überschreibbar | eigen | | ''DialogWidth(): int64'' | Breite des Fensters — überschreibbar | eigen | | ''BuildForm(): TForm'' | Das Fenster aufbauen — überschreibbar | eigen | | ''AddButtons(dlg: TForm, w: int64, h: int64): void'' | Die Knopfreihe anlegen — überschreibbar | eigen | | ''ReadFromControls(): void'' | Stand der Eingabefelder in die Felder des Dialogs übernehmen | eigen | | ''SetOptionQuiet(bit: int64, v: bool): void'' | Optionsbit setzen, ohne die Kästchen anzufassen | eigen | | ''Execute(app: TApplication): bool'' | Fenster zeigen und **sofort** zurückkehren; ein zweiter Aufruf holt es nach vorn | eigen | | ''CloseDialog(): void'' | Fenster schließen | eigen | | ''DoFind(): void'' | ''OnFind'' auslösen — als ob „Weitersuchen“ gedrückt worden wäre | eigen | ---- ===== Ereignisse ===== ^ Name ^ Typ ^ Wann ^ Herkunft ^ | ''OnFind'' | [[lyx_-_programmiersprache:vega:controls:tfinddialog|TFindEvent]] | „Weitersuchen“ wurde gedrückt | eigen | | ''OnClose'' | [[lyx_-_programmiersprache:vega:controls:tfinddialog|TFindEvent]] | Fenster wird geschlossen | eigen | Letzte Aktualisierung: 2026-08-20 — API maschinell aus ''Vega/FindDlg.lyx'' erhoben, Beispiel mit ''lyxc 1.1.4B'' übersetzt und ausgeführt.