AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Panel & Label zur Laufzeit erstellen

Ein Thema von DieFliege · begonnen am 30. Sep 2023 · letzter Beitrag vom 1. Okt 2023
Antwort Antwort
DieFliege

Registriert seit: 6. Aug 2013
54 Beiträge
 
Delphi XE4 Professional
 
#1

Panel & Label zur Laufzeit erstellen

  Alt 30. Sep 2023, 18:42
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;
//##############################################################################
//##############################################################################
Miniaturansicht angehängter Grafiken
panels.jpg  

Geändert von DieFliege (30. Sep 2023 um 18:46 Uhr) Grund: Tippfehler :(
  Mit Zitat antworten Zitat
Aliquis

Registriert seit: 26. Jun 2011
Ort: Grafschaft Bentheim
18 Beiträge
 
Delphi 12 Athens
 
#2

AW: Panel & Label zur Laufzeit erstellen

  Alt 30. Sep 2023, 18:52
Hallo, unter "Labels erstellen" heißt es am Schluss
DF_Label.Caption := 'Dies ist ein Label für Panel -> ' + UpperCase(ListBox1.Items[anzahl -1]); .
Items[anzahl-1] ändert sich nicht mit der Laufvariablen i. Müsste es nicht
ListBox1.Items[i-1] heißen?
Gruß G.
Georg
  Mit Zitat antworten Zitat
DieFliege

Registriert seit: 6. Aug 2013
54 Beiträge
 
Delphi XE4 Professional
 
#3

AW: Panel & Label zur Laufzeit erstellen

  Alt 30. Sep 2023, 19:04
Hallo Aliquis,

vielen Dank für Deinen Hinweis.

... Treffer - Danke! Manchmal sollte man doch mal etwas Pause machen!

LG DieFliege

Geändert von DieFliege (30. Sep 2023 um 19:13 Uhr) Grund: Tippfehler :(
  Mit Zitat antworten Zitat
Kas Ob.

Registriert seit: 3. Sep 2023
213 Beiträge
 
#4

AW: Panel & Label zur Laufzeit erstellen

  Alt 1. Okt 2023, 08:38
Also don't trigger file read (LoadFromFile) for each TImage if it is the same, that is just a waste of time.
Code:
Hintergrund.Picture.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'header.jpg');
Load it once before the loop then assign/copy it for each item.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz