====== TFileListBox — Dateien eines Verzeichnisses ====== Eine [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]], die den Inhalt eines **Verzeichnisses** zeigt, gefiltert über eine Maske. Zusammen mit [[lyx_-_programmiersprache:vega:controls:tdirectorylistbox|TDirectoryListBox]] und [[lyx_-_programmiersprache:vega:controls:tdrivecombobox|TDriveComboBox]] ergibt das die klassische Delphi-Dateiauswahl aus drei Teilen. Unit: ''vega.filectrls'' · Basis: [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] → [[lyx_-_programmiersprache:vega:controls|Alle Steuerelemente]] · [[lyx_-_programmiersprache:vega:klassenbaum|Klassenbaum]] · [[lyx_-_programmiersprache:vega:guides:komponenten|Guide: Komponenten]] ---- ===== Vererbung ===== **Kette:** [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] → [[lyx_-_programmiersprache:vega:controls:tcontrol|TControl]] → [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] → **TFileListBox** **Direkte Nachfahren:** keine — diese Klasse wird nicht weiter abgeleitet. **Quelle:** ''vega/filectrls.lyx'' ---- ===== Verwendung ===== var fl: TFileListBox := new TFileListBox(); fl.SetBounds(8, 8, 200, 240); fl.SetDirectory("/home/andreas"); fl.SetMask("*.txt;*.md"); fl.OnFileChange := DateiGewaehlt; fl.SetParent(f); ---- ===== Besonderheiten ===== * **''Mask'' nimmt mehrere Muster**, durch Strichpunkt getrennt — wie in Delphi: ''%%"*.pas;*.dpr"%%''. * **''OnFileChange'' meldet den Wechsel der Auswahl**, nicht das Öffnen. Was mit der Datei geschieht, entscheidet das Programm. * **Verzeichniswechsel geht über ''SetDirectory''** — oder von selbst, wenn eine [[lyx_-_programmiersprache:vega:controls:tdirectorylistbox|TDirectoryListBox]] die Liste als ''FileList'' führt. ---- ===== Eigenschaften ===== Alle Eigenschaften, auch die geerbten. ^ Name ^ Typ ^ Bedeutung ^ Herkunft ^ | ''ComponentState'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Zustand als Bitmaske (''csLoading'', ''csDestroying'' …) | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''ComponentStyle'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Stil als Bitmaske; Vorgabe ''csInheritable'' | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''Name'' | [[lyx_-_programmiersprache:sprache:datentypen#8_zeiger|pchar]] | Name der Komponente — für ''FindComponent'' und beim Laden aus LFM | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''OwnedComponents'' | [[lyx_-_programmiersprache:vega:controls:tobjectlist|TObjectList]] | Die Komponenten, die DIESER gehoeren. Delphis Components[]. Zeigerliste, keine Kopien: TObjectList hält int64-Adressen | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''Owner'' | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | Wer diese Komponente wegraeumt. Nicht der Elternteil im Zeichenbaum — das ist bei TControl `Parent` | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''Tag'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Freier Wert für eigene Zwecke; die Bibliothek fasst ihn nicht an | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''BorderStyle'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Rahmenart wie in Delphi. Vorgabe ist der vertiefte Rahmen | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''Columns'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Mehrspaltig wie Delphis Columns: 0 = eine Spalte, sonst so viele Spalten nebeneinander, wie hier stehen. Die Einträge laufen dabei SPALTENWEISE von oben nach unten | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''ExtendedSelect'' | [[lyx_-_programmiersprache:sprache:datentypen#5_wahrheitswerte_bool|bool]] | Bei Mehrfachauswahl: Bereichsauswahl mit Umschalt, einzelne mit Strg. Aus heißt, jeder Klick schaltet nur seinen eigenen Eintrag um | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''FixedItemHeight'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Feste Zeilenhoehe. 0 heißt "aus der Schrift rechnen" — das ist die Vorgabe und war frueher der einzige Weg | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''ItemIndex'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Ausgewählter Eintrag, ''-1'' = keiner | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''Items'' | [[lyx_-_programmiersprache:vega:controls:tstringlist|TStringList]] | Kind Nummer ''i'' | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''MultiSelect'' | [[lyx_-_programmiersprache:sprache:datentypen#5_wahrheitswerte_bool|bool]] | Mehrfachauswahl. Der Zustand liegt in einer eigenen Liste, nicht am Eintrag: TStringList hält Zeichenketten, keine Objekte, und ein Parallelfeld ist billiger als eine zweite Klasse je Zeile | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''Sorted'' | [[lyx_-_programmiersprache:sprache:datentypen#5_wahrheitswerte_bool|bool]] | Einträge beim Einfuegen einsortieren. Wie in Delphi eine Eigenschaft der Liste und nicht ein einmaliges Sortieren — sonst wäre die nächste Zeile wieder unsortiert | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''TopIndex'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Erster sichtbarer Eintrag | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''Directory'' | [[lyx_-_programmiersprache:vega:controls:ttextbuffer|TTextBuffer]] | Das gezeigte Verzeichnis | eigen | | ''Mask'' | [[lyx_-_programmiersprache:vega:controls:ttextbuffer|TTextBuffer]] | Was gezeigt werden darf: "*.txt" oder "*". Mehrere Muster durch Strichpunkt getrennt, wie in Delphi: "*.pas;*.dpr" | eigen | ---- ===== Methoden ===== Alle Methoden, auch die geerbten. ^ Signatur ^ Zweck ^ Herkunft ^ | ''ClearState(bits: int64): void'' | Zustandsbits löschen | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''ComponentCount(): int64'' | Anzahl der eigenen Komponenten | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''ComponentIndex(): int64'' | Delphis ComponentIndex: der eigene Platz in der Liste des Besitzers | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''Components(index: int64): TComponent'' | Eigene Komponente an dieser Stelle | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''Destroy(): void'' | Raeumt die eigene Liste ab, aber NICHT die Einträge — welche Komponenten ihre Besitztuemer mitnehmen, entscheidet die Ableitung über DestroyComponents() | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''DestroyComponents(): void'' | Baut die Besitztuemer ab. Von hinten, weil jedes Destroy() sich selbst aus der Liste austraegt | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''FindComponent(name: pchar): TComponent'' | Sucht unter den EIGENEN Komponenten, eine Ebene tief — wie in Delphi | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''GetName(): pchar'' | Namen lesen | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''GetNamePath(): pchar'' | Der eigene Name. Delphi hängt bei Unterkomponenten den des Besitzers davor; Vega hat keine, also ist es der Name selbst | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''GetTag(): int64'' | ''Tag'' lesen | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''HasState(bits: int64): bool'' | Sind diese Zustandsbits gesetzt | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''InitComponent(): void'' | Kein Konstruktor: lyxc vererbt Konstruktoren nicht, jede Ableitung ruft InitComponent() im eigenen Create() | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''InsertComponent(c: TComponent): void'' | Komponente in Besitz nehmen; ein bisheriger Besitzer gibt sie ab | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''RemoveComponent(c: TComponent): void'' | Komponente aus dem Besitz nehmen | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''SetName(v: pchar): void'' | Setzt ''Name'' | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''SetState(bits: int64): void'' | Zustand setzen | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''SetTag(v: int64): void'' | Setzt ''Tag'' | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''Add(s: pchar): int64'' | Einen Eintrag aufnehmen. Mit Sorted landet er an der richtigen Stelle, sonst hinten. Liefert den Index | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''ClampTop(): void'' | TopIndex im gueltigen Bereich halten. Wichtig nach dem Loeschen von Einträgen, sonst zeigt die Liste ins Leere | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''Clear(): void'' | Delphis Name für ClearItems | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''ClearItems(): void'' | Alle Einträge entfernen | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''ColumnWidth(): int64'' | Breite einer Spalte. Bei einer Spalte ist das die ganze Flaeche | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''Count(): int64'' | Zahl der Einträge | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''Create(): void'' | Anlegen; ''new TFileListBox()'' | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''Delete(index: int64): void'' | Eintrag entfernen | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''DeleteSelected(): int64'' | Alle ausgewählten Einträge löschen. Ohne Mehrfachauswahl ist das der eine aktuelle — genau wie in Delphi | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''DeselectAll(): void'' | Markierung aufheben | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''Destroy(): void'' | Gibt eigene Ressourcen frei | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''IndexAtY(y: int64): int64'' | Index unter einer Pixelposition, oder VEGA_NO_ITEM | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''IsSelected(index: int64): bool'' | Ist dieser Eintrag ausgewählt? Heisst bewusst NICHT `Selected` — diesen Namen traegt schon die Methode, die den TEXT des gewaehlten Eintrags liefert, und in Lyx gibt es keine Überladung | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''ItemAtPos(x: int64, y: int64): int64'' | Eintrag unter einem Punkt — mit Spalten reicht die Y-Position nicht | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''ItemHeight(): int64'' | Höhe eines Eintrags | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''ItemRect(index: int64): TRect'' | Das Rechteck eines Eintrags in Control-Koordinaten. Liegt er nicht im sichtbaren Bereich, kommt ein leeres Rechteck zurück — so muss kein Aufrufer zwei Faelle unterscheiden | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''ItemVisible(index: int64): bool'' | Ist der Eintrag ganz zu sehen? | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''RowsPerColumn(): int64'' | Zeilen je Spalte — bei einer Spalte alle sichtbaren Zeilen | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''ScrollToItem(i: int64): void'' | Den Ausschnitt so verschieben, dass der Eintrag sichtbar ist | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''SelCount(): int64'' | Zahl der markierten Einträge | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''SelectAll(): void'' | Alles auswählen | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''SelectRange(a: int64, b: int64, exklusiv: bool): void'' | Bereich auswaehlen (Umschalt-Klick). Alles außerhalb wird abgewaehlt, wie es Delphi mit ExtendedSelect macht | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''Selected(): pchar'' | Die gewählte Farbe | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''SetBorderStyle(v: int64): void'' | Setzt ''BorderStyle'' | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''SetColumns(v: int64): void'' | Setzt ''Columns'' | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''SetItemHeight(v: int64): void'' | Setzt die feste Zeilenhöhe | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''SetItemSelected(index: int64, v: bool): void'' | Markierung setzen | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''SetMultiSelect(v: bool): void'' | Setzt ''MultiSelect'' | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''SetSorted(v: bool): void'' | Nachtraeglich sortieren — und ab jetzt sortiert halten | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''VisibleCount(): int64'' | Wieviele Einträge gleichzeitig zu sehen sind — mit Spalten das Vielfache davon | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''Create(): void'' | Anlegen; ''new TFileListBox()'' | eigen | | ''Destroy(): void'' | Gibt eigene Ressourcen frei | eigen | | ''FileName(): pchar'' | Der gewaehlte Dateiname ohne Pfad, oder ein Leerstring | eigen | | ''FullPath(dst: TTextBuffer): void'' | Der vollständige Pfad. In einen Puffer, weil er zusammengesetzt wird und ein zurückgegebener Zeiger auf Zwischenspeicher zeigte | eigen | | ''Refresh_(): void'' | Die Liste neu einlesen. Heisst in Delphi `Update`; das wäre hier der Name einer geerbten Methode, die sofort zeichnet | eigen | | ''SetDirectory(path: pchar): void'' | Setzt ''Directory'' | eigen | | ''SetMask(m: pchar): void'' | Setzt ''Mask'' | eigen | ---- ===== Ereignisse ===== ^ Name ^ Typ ^ Wann ^ Herkunft ^ | ''OnDrawItem'' | [[lyx_-_programmiersprache:vega:guides:events#die_handler-typen|TDrawItemEvent]] | Selbst gezeichnete Zeilen. 0 = die Vorgabe zeichnet | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''OnSelect'' | [[lyx_-_programmiersprache:vega:guides:events#die_handler-typen|TNotifyEvent]] | Ein Eintrag wurde ausgewählt | [[lyx_-_programmiersprache:vega:controls:tlistbox|TListBox]] | | ''OnFileChange'' | [[lyx_-_programmiersprache:vega:guides:events#die_handler-typen|TNotifyEvent]] | Meldet sich, wenn ein anderer Eintrag gewaehlt wurde | eigen | ---- Letzte Aktualisierung: 2026-09-05 — Seite neu angelegt; erhoben aus ''vega/filectrls.lyx'' im Repo ''lyx-vcl''.