Panel erzeugen durch Buttonklick
-
- Beiträge: 30
- Registriert: So 30. Okt 2016, 21:13
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Panel erzeugen durch Buttonklick
Wie der Betreff schon verrät, bestheht meine Frage darin, wie ich durch den Klick auf einen Button ein Panel erzeugen kann.
-
- Beiträge: 351
- Registriert: Mi 25. Nov 2015, 17:06
- OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
- CPU-Target: i386 + x86_64
- Wohnort: in der Nähe von Stuttgart
- Kontaktdaten:
Re: Panel erzeugen durch Buttonklick
Bei der OnClcik Routine des Buttons so etwas aufrufen:
Code: Alles auswählen
with TPanel.Create(Self) do begin
Parent := Self; // Parent angeben, ich nimm jetzt einfach mal das eigene Fenster
// Weitere Eigenschaften setzen
end;
Zuletzt geändert von compmgmt am Mo 31. Okt 2016, 14:23, insgesamt 1-mal geändert.
Code: Alles auswählen
InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Re: Panel erzeugen durch Buttonklick
Oh Mann, warum schreibt ihr immer Form1 in den Code der Klasse TForm1, gerade bei Fragen von Anfängern? Das bewirkt, dass das Programm nur dann funktioniert, wenn die Instanz von TForm1 Form1 heißt! "self" dageben bezieht sich auf alle Instanzen der Klasse TForm1, egal wie sie heißen.
Außerdem fehlt der Owner, der im Create angegeben werden muss. Das ist das Objekt, das später das erzeugte Panel wieder freigibt.
Außerdem fehlt der Owner, der im Create angegeben werden muss. Das ist das Objekt, das später das erzeugte Panel wieder freigibt.
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var
panel: TPanel;
begin
panel := TPanel.Create(self);
panel.Parent := self; // das ist der "Container", der das neue Panel enthält. Ist häufig auch ein anderes Panel, oder eine Seite eines PageControls etc.
panel.Caption := '';
panel.Align := alClient;
panel.Color := clRed;
// usw. - weitere Eigenschaften setzen
end;
-
- Beiträge: 351
- Registriert: Mi 25. Nov 2015, 17:06
- OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
- CPU-Target: i386 + x86_64
- Wohnort: in der Nähe von Stuttgart
- Kontaktdaten:
Re: Panel erzeugen durch Buttonklick
wp_xyz hat geschrieben:Oh Mann, warum schreibt ihr immer Form1 in den Code der Klasse TForm1, gerade bei Fragen von Anfängern? Das bewirkt, dass das Programm nur dann funktioniert, wenn die Instanz von TForm1 Form1 heißt! "self" dageben bezieht sich auf alle Instanzen der Klasse TForm1, egal wie sie heißen.
Außerdem fehlt der Owner, der im Create angegeben werden muss. Das ist das Objekt, das später das erzeugte Panel wieder freigibt.
Deswegen habe ich gesagt "Parent angeben, ich nehme als Beispiel Form1".
Stimmt den Owner habe ich vergessen. Vielen Dank. ich ändere es ab.
Code: Alles auswählen
InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Re: Panel erzeugen durch Buttonklick
compmgmt hat geschrieben:wp_xyz hat geschrieben:Oh Mann, warum schreibt ihr immer Form1 in den Code der Klasse TForm1, gerade bei Fragen von Anfängern? Das bewirkt, dass das Programm nur dann funktioniert, wenn die Instanz von TForm1 Form1 heißt! "self" dageben bezieht sich auf alle Instanzen der Klasse TForm1, egal wie sie heißen.
Deswegen habe ich gesagt "Parent angeben, ich nehme als Beispiel Form1".
Richtig wäre gewesen: "Ich nehme als Beispiel "self", was sich immer auf die aktuelle Instanz von TForm1 bezieht".