Hallöchen
Und wieder stehe ich mal wieder auf dem Schlauch
Ich versuche anhand vorhandener Anzahl von Dateien entsprechend viele Panel auf einer Form zu erstellen. Also ich habe zum Beispiel 8 Dateien in einem Verzeichnis, somit benötige ich 8 Panels.
Also habe ich die sich im Verzeichnis befindlichen Dateien in eine ListBox eingelesen und kann so ermitteln wieviele Dateien sich im Verzeichnis befinden. Die Listbox sehe ich als sofern sinnvoll, weil ich die Namen der Dateien später noch im Programm verwenden möchte und diese so schon mal aufgelistet habe und darauf zugreifen kann.
Das Erstellen der 8 Panels funktioniert ohne Probleme, jedoch möchte ich in jedem Panel noch Labels hinzufügen, die den Namen der jeweiligen Datei anzeigen - Und da stockt es nun. Es ist war möglich den Namen der Datei im Label darzustellen, aber immer nur der letzte Eintrag aus der Listbox. Also muss ich irgendwo einen Denkfehler haben. Normal bin ich davon ausgegangen, dass die Erstellung in einer Schleife die Panels und die gewünschten Labels pro Panel erfolgt.
Dabei verstehe ich nicht, warum ich den jeweiligen Panels eigene Namen vergeben kann, aber den Labels nicht dem zugehörigen Text, obwohl ich in einer Schleife sowohl den Namen für das Panel als auch den Text für das Label zuweise. Meine Vermutung dabei ist, dass hier die "Parents" eine maßgebliche Rolle spielen, ich konnte bisher nur noch nicht mein Denkfehler finden - Habt Ihr eine Idee?
Über etwas Hilfe oder Denkanstoß wäre ich dankbar
LG DieFliege
Delphi-Quellcode:
//##############################################################################
//##############################################################################
//------------------------- Panel per Klick erstellen --------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
Panel : TPanel;
DF_Label : TLabel;
Hintergrund : TImage;
i : Integer;
panel_name :
String;
begin
for i := 1
to anzahl
do
begin
//--------- Panel erstellen ---------
Panel := TPanel.Create(Self);
Panel.Parent := Self;
Panel.Caption := '
Panel-' + Format('
%.*d', [4, i]);
Panel.Left := 10;
Panel.Top := von_oben;
Panel.Height := 50;
Panel.Width := 480;
Panel.BevelOuter := bvNone;
panel_name := '
panel_' + Format('
%.*d', [4, i]);
Panel.
Name := panel_name;
Panel.ShowHint := True;
Panel.Hint := panel_name;
//-----------------------------------
//------ Hintergrund erstellen ------
Hintergrund := TImage.Create(Self);
Hintergrund.Parent := Panel;
Hintergrund.Left := 0;
Hintergrund.Top := 0;
Hintergrund.Height := 50;
Hintergrund.Width := 480;
Hintergrund.Picture.LoadFromFile(ExtractFilePath(ParamStr(0)) + '
header.jpg');
//-----------------------------------
//-------- Labels erstellen ---------
DF_Label := TLabel.Create(Self);
DF_Label.Parent := Panel;
DF_Label.Left := 50;
DF_Label.Top := 18;
DF_Label.Font.Color :=
RGB(0 ,120, 215);
DF_Label.Caption := '
Dies ist ein Label für Panel -> ' + UpperCase(ListBox1.Items[anzahl -1]);
//-----------------------------------
von_oben := von_oben + 50;
end;
end;
//##############################################################################
//##############################################################################