![]() |
Dummyfrage : Events in dynamisch erzeugten ListBoxes
Moin zusammen ! (ich kanns schon hören: Der schon wieder :roll:)
Nach langem suchen und friemeln hab ich mir folgende Konstellation zusammen geschustert:
Delphi-Quellcode:
TabSheet := TTabSheet.Create(PageCtrl); // Basis für Tab-Erzeugung
TabSheet.PageControl := PageCtrl; // Basis für Tab-Erzeugung TabSheet.Caption := tabListe[i]; // Basis für Tab-Erzeugung //**** Verzeichnis zu passendem Tab ermitteln verz := verzeichnisHandlingUnit.leseInfoZuKey(abschnitt, TabSheet.Caption); //**** Auslesen der Dateien eines Verzeichnises dateiListe := verzeichnisHandlingUnit.leseFilenamen(verz); //************ zufügen SongListBoxes ****************// songListBox := TListBox.Create(self); songListBox.Parent := TabSheet; songListBox.Align := alClient; //************ befüllen aktuelle SongListBoxes ****************// songListBox.Items := dateiHandling.dateiListe; end;
Delphi-Quellcode:
Es werden TabSheets erzeugt (aus Einträgen einer INI-Datei, dieses Objekt (eine TPageControl) ist direkt über die VCL (so heisst doch die visuelle Progammieroberfläche, oder?) initialisiert.
procedure TsqdForm.songListBoxDblClick(Sender:TObject);
begin selectedSong := songListBox.Items[songListBox.ItemIndex]; Memo1.Lines.Add(selectedSong); end; In jedes wird dynamisch eine ListBox eingefügt. Jede Listbox ihrerseits befüllt, mit Dateien aus einem jeweils anderen Verzeichnis. Das funktioniert auch soweit :!: Mein Problem: Keine Reaktion auf das KlickEvent, welches ich manuell einbauen musse (zumindes wusste ich mir nicht anders zu helfen). So wie es aussieht wird das EventHandling der Komponent entweder nicht "weiter vererbt", oder muß ich explitzit vorgeben von welcher ListBox ich gerade das Event empfangen will? Muß ich bei den dynamisch erzeugten ListBoxes das Eventhandling manuell anmelden? Falls ja: wie geht denn sowas (bzw. wo könnte ich Infos finden)? Hoffenlick konnte ick mir soweit klar jenuch machen, dette mir jemand auffe Sprünge helfen kann? Beste Grüße Drosera Rotundifolia P.S. Ich habe zwar nach dem Thema gewühlt, aber ausser schmutzigen Fingernägeln nichts bekommen.. :cry: |
AW: Dummyfrage : Events in dynamisch erzeugten ListBoxes
Du musst dir anschauen, wie ein On-Clickevent aufgebaut ist und eine entsprechende Prozedur erstellen, z.B.
procedure MyOwnListboxOnClick(Sender: TObject); Diese Prozedur musst du dann bei der Erzeugung der Listbox dem OnClick zuweisen: songListBox.OnClick := MyOwnListboxOnClick; In der Prozedur hast du dann mit Sender zugriff auf die Listbox:
Delphi-Quellcode:
Ist jetzt nut schnell hingetippt, ohne Gewähr.
procedure Form1.MyOwnListboxOnClick(Sender: TObject);
var lb:TListbox; begin if Sender is TListbox then lb:=TListbox(Sender) else exit; //Mach was mit lb end; |
Danke für die Info!
Werde mal darüber meditieren:wink:.
Habe doch noch einen Beitrag (Thread ist in diesem Forum wohl eher missverständlich :-D) gefunden. Aber er beantwortet das Prob nicht ganz zufriedenstellend. |
Der Dummy hat seine Antwort doch noch rausbekommen....
Delphi-Quellcode:
Naja, so ist das halt wenn nicht wirklich Ahnung hat... :(
songListBox := TListBox.Create(self);
with songListBox do begin songListBox.Parent := TabSheet; songListBox.Align := alClient; onDblClick := songListBoxDblClick; end; |
AW: Dummyfrage : Events in dynamisch erzeugten ListBoxes
Übrigens:
Zitat:
Delphi-Quellcode:
Damit wird lediglich der Inhalt kopiert.
songListBox.Items.Assign(dateiHandling.dateiListe);
|
wilde Zeiger...
hört sich fast an wie "Der wilde Kaiser" :lol:
@DeddyH : Danke für die Infos, habs auch gleich ausgebügelt. |
AW: Dummyfrage : Events in dynamisch erzeugten ListBoxes
Ich habe gerade noch einmal nachgesehen, die VCL macht automatisch ein Assign, damit das angesprochene Szenario gar nicht erst eintreten kann. Trotzdem sollte man sich so etwas gar nicht erst angewöhnen, denn man kann ja nicht sicher sein, dass der Autor der jeweiligen Klasse auch so vorausschauend gedacht hat ;)
|
AW: Der Dummy hat seine Antwort doch noch rausbekommen....
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz