TFindDialog — Suchen

Der einzige Standarddialog in Vega, der nicht modal läuft — zusammen mit seiner Ableitung 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

Alle Steuerelemente · Guide: Dialoge · TReplaceDialog


Vererbung

Kette: TFindDialog — eigene Wurzel, kein Vorfahr. Was diese Klasse kann, steht vollständig auf dieser Seite.

Direkte Nachfahren: 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 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 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 TForm Das Fenster selbst — öffentlich, weil ein nicht-modaler Dialog von außen erreichbar sein muss eigen
FindText TTextBuffer Der gesuchte Text eigen
Options int64 Suchoptionen als Bitmaske: frDown (1), frMatchCase (2), frWholeWord (4), frReplaceAll (8) eigen
Title TTextBuffer Titel des Fensters eigen
Visible 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 TFindEvent „Weitersuchen“ wurde gedrückt eigen
OnClose 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.