====== TFileDialog — Grundlage der Dateidialoge ====== Die gemeinsame Grundlage von [[lyx_-_programmiersprache:vega:controls:topendialog|TOpenDialog]], [[lyx_-_programmiersprache:vega:controls:tsavedialog|TSaveDialog]] und [[lyx_-_programmiersprache:vega:controls:tselectdirectorydialog|TSelectDirectoryDialog]]: Verzeichnisliste, Namensfeld, Filter und das modale Zeigen. Unmittelbar benutzt wird sie selten — man nimmt eine der drei Ableitungen, die sich nur in ''Mode'' und den Vorgaben unterscheiden. Unit: ''vega.filedlg'' · Basis: keine — eigene Wurzel → [[lyx_-_programmiersprache:vega:controls|Alle Steuerelemente]] · [[lyx_-_programmiersprache:vega:klassenbaum|Klassenbaum]] · [[lyx_-_programmiersprache:vega:guides:komponenten|Guide: Komponenten]] ---- ===== Vererbung ===== **Kette:** **TFileDialog** — eigene Wurzel, kein Vorfahr. Was diese Klasse kann, steht vollständig auf dieser Seite. **Direkte Nachfahren:** [[lyx_-_programmiersprache:vega:controls:topendialog|TOpenDialog]] · [[lyx_-_programmiersprache:vega:controls:tsavedialog|TSaveDialog]] · [[lyx_-_programmiersprache:vega:controls:tselectdirectorydialog|TSelectDirectoryDialog]] **Quelle:** ''vega/filedlg.lyx'' ---- ===== Verwendung ===== Ein Dateidialog wird angelegt, eingestellt und mit ''Execute'' gezeigt. Er ist **modal**: der Aufruf kehrt erst zurück, wenn der Benutzer bestätigt oder abgebrochen hat. var dlg: TOpenDialog := new TOpenDialog(); dlg.SetFilter("*.txt;*.md;*.lyx"); dlg.SetTitle("Textdatei oeffnen"); dlg.SetInitialDir("/home/andreas"); if (dlg.Execute(app)) { var voll: TTextBuffer := new TTextBuffer(); dlg.FullPath(voll); // Verzeichnis + Dateiname // ... Datei laden ... voll.Destroy(); } dlg.Destroy(); ''Execute'' liefert ''true'' bei Bestätigung und ''false'' bei Abbruch. Das Ergebnis steht danach in ''FileName'' (nur der Name) bzw. vollständig über ''FullPath''; das Verzeichnis liefert ''Directory''. ---- ===== Besonderheiten ===== * **Kein Systemdialog.** Vega zeichnet den Dialog selbst — dieselbe Entscheidung wie beim Rest der Bibliothek: GTK, Windows und macOS zeigen jeweils einen ganz anderen Dialog, und „überall gleich" war der Zweck der Übung. Unter LyxOS gäbe es ohnehin keinen, den man bestellen könnte. * **Aufbau aus gewöhnlichen Steuerelementen.** Der Dialog ist ein [[lyx_-_programmiersprache:vega:controls:tform|TForm]] mit Pfadzeile, [[lyx_-_programmiersprache:vega:controls:tlistview|TListView]], Namensfeld und Filterauswahl, gezeigt über ''TApplication.ShowModal''. Wer den Aufbau verstehen will, liest ''_BuildForm'' in der Quelle. * **Bedienung:** Doppelklick oder Eingabetaste öffnet ein Verzeichnis bzw. bestätigt eine Datei, ''..'' führt nach oben. * **''Filter'' ist ein Muster wie in Delphi**, mehrere durch Semikolon getrennt: ''%%"*.txt;*.md"%%''. Vorgabe ist ''%%"*"%%''. * **''DefaultExt'' wird angehängt**, wenn der eingegebene Name keine Endung hat — mit führendem Punkt angeben. * **''OverwritePrompt'' fragt beim Sichern nach**, wenn die Datei schon existiert. Bei [[lyx_-_programmiersprache:vega:controls:tsavedialog|TSaveDialog]] ist das die Vorgabe, bei den beiden anderen nicht. ---- ===== Eigenschaften ===== Alle Eigenschaften, auch die geerbten. ^ Name ^ Typ ^ Bedeutung ^ Herkunft ^ | ''DefaultExt'' | [[lyx_-_programmiersprache:vega:controls:ttextbuffer|TTextBuffer]] | Wird angehängt, wenn der Name keine Endung hat. Mit führendem Punkt | eigen | | ''FileName'' | [[lyx_-_programmiersprache:vega:controls:ttextbuffer|TTextBuffer]] | Vor dem Aufruf der Vorschlag, danach das Ergebnis | eigen | | ''Filter'' | [[lyx_-_programmiersprache:vega:controls:ttextbuffer|TTextBuffer]] | Muster wie in Delphi, mehrere mit Semikolon: "*.txt;*.md" | eigen | | ''InitialDir'' | [[lyx_-_programmiersprache:vega:controls:ttextbuffer|TTextBuffer]] | Startverzeichnis. Leer heißt: das aktuelle Arbeitsverzeichnis | eigen | | ''Mode'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Betriebsart des Dialogs (''FD_OPEN'', ''FD_SAVE'', ''FD_DIR'') | eigen | | ''OverwritePrompt'' | [[lyx_-_programmiersprache:sprache:datentypen#5_wahrheitswerte_bool|bool]] | Beim Sichern nachfragen, wenn die Datei schon da ist | eigen | | ''Title'' | [[lyx_-_programmiersprache:vega:controls:ttextbuffer|TTextBuffer]] | Titelzeile des Dialogs | eigen | ---- ===== Methoden ===== Alle Methoden, auch die geerbten. ^ Signatur ^ Zweck ^ Herkunft ^ | ''AcceptSelection(): bool'' | Die gewaehlte Zeile übernehmen: Verzeichnis betreten oder Namen ins Feld schreiben. Liefert true, wenn der Dialog fertig ist | eigen | | ''Confirm(app: TApplication): void'' | Der Bestaetigen-Weg, gemeinsam für Knopf und Eingabetaste | eigen | | ''Create(mode: int64): void'' | Anlegen; ''new TFileDialog()'' | eigen | | ''CurrentDir(): pchar'' | Verzeichnis, in dem der Dialog gerade steht | eigen | | ''Destroy(): void'' | Gibt eigene Ressourcen frei | eigen | | ''Directory(): pchar'' | Das gewaehlte Verzeichnis. Im Verzeichnismodus dasselbe wie FileName, sonst das Verzeichnis, in dem die gewaehlte Datei liegt | eigen | | ''Execute(app: TApplication): bool'' | Zeigt den Dialog und kehrt erst zurück, wenn eine Entscheidung gefallen ist. true = eine Datei wurde gewaehlt, FileName traegt sie | eigen | | ''FullPath(dst: TTextBuffer): void'' | Der vollständige Pfad des Ergebnisses | eigen | | ''GoUp(): void'' | Eine Ebene nach oben | eigen | | ''Navigate(path: pchar): void'' | Wechselt in das Verzeichnis ''path'' | eigen | | ''Refill(): void'' | Die Liste neu aus dem Dateisystem fuellen | eigen | | ''SetDefaultExt(s: pchar): void'' | Setzt ''DefaultExt'' | eigen | | ''SetFileName(s: pchar): void'' | Setzt ''FileName'' | eigen | | ''SetFilter(s: pchar): void'' | Setzt ''Filter'' | eigen | | ''SetInitialDir(s: pchar): void'' | Setzt ''InitialDir'' | eigen | | ''SetTitle(s: pchar): void'' | Setzt ''Title'' | eigen | ---- Letzte Aktualisierung: 2026-09-05 — Seite neu angelegt; erhoben aus ''vega/filedlg.lyx'' im Repo ''lyx-vcl''.