Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - filterindex bei filtercombobox


sexy_betty - So 19.11.06 18:24
Titel: filterindex bei filtercombobox
eine kleine frage. wie setze ich den Filter Index bei filtercomboboxen?
also wenn "textdateien" das dritte item ist, ich die combobox so setzen kann, dass er textdateien filtert.

mit filtercombobox.itemindex:=3; schlug ich fehl, da er so zwar "textdateien" angezeigt hat, der filter selbst in der filelistbox jedoch unverändert blieb! :(


Moderiert von user profile iconChristian S.: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am So 19.11.2006 um 22:39


Lannes - So 19.11.06 23:18
Titel: Re: filterindex bei filtercombobox
Hallo,
user profile iconsexy_betty hat folgendes geschrieben:
...
also wenn "textdateien" das dritte item ist
...
filtercombobox.itemindex:=3; schlug ich fehl...

das dritte Item hat den Index 2!
Der ItemIndex ist 0-basierend.


raiguen - Mo 20.11.06 01:42

Moin :-)

es gibt zwei Möglichkeiten, die Maske einer FileListBox auf den Filter einer FilterCombobox einzustellen:

1. Direkte 'Verknüpfung' zwischen FilterComboBox und FileListBox

Delphi-Quelltext
1:
2:
3:
...
FilterComboBox1.FileList := FileList1;
...

Das kann schon im OI bei der FilterComboBox eingestellt werden ;-)
Das Ganze bewirkt eben das, was man möchte: auswählen eines Filters (bspw. Textdateien | *.txt) und entsprechend stellt sich die 'Maske' (=Filter) der FileListBox auf den ausgewählten Filter.

2.Möglichkeit: Die in 1. genannte Verknüpfung offen lassen (also nix zuweisen) und im OnChange() der FilterComboBox folgender Einzeiler

Delphi-Quelltext
1:
2:
3:
4:
procedure FilterComboBox1Change(Sender: TObject);
begin
  FileListBox1.Mask := FilterComboBox1.Mask; // z.B. *.txt
end;

FilterComboBox1.Mask gibt immer die Maske (z.b. *.txt) zurück, während FilterComboBox1.Items[xyz] den 'Klartext' (zb. Textdateien ) zurückgibt. Alles nachzulesen bzw zu 'erarbeiten' aus der OI zum Stichwort TFilterComboBox und hier die Eigenschaften FileList, Filter, Mask ;-)


sexy_betty - Mo 20.11.06 17:00

@Lannes: tut mir leid, hatte ich aus dem Kopf getippt --> vertan --> daran lag der Fehler nicht.

Ich hatte

Delphi-Quelltext
1:
2:
3:
...
FilterComboBox1.FileList := FileList1;
...

benutzt, und das ging ja auch wunderbar, solange man den Filter mit der Maus auswählte. Ich wollte das ja aber eben durch code machen, beispielsweise bei einem ButtonClick. Und das schlug fehl.

Änderte sich auch nicht mit


Delphi-Quelltext
1:
2:
3:
4:
procedure FilterComboBox1Change(Sender: TObject);
begin
  FileListBox1.Mask := FilterComboBox1.Mask; // z.B. *.txt
end;


Das hat mir allerdings die Augen geöffnet. Wenn man das Item setzt, sollte man auch die Maske setzen.


Delphi-Quelltext
1:
2:
filtercombobox1.ItemIndex:=2;
filelistbox1.Mask:=filtercombobox1.Mask;


ist also des Rätsels Lösung. Danke für die Hilfe, hat mir sehr geholfen :) --> erledigt