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
Deswegen habe ich gesagt "Parent angeben, ich nehme als Beispiel Form1".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.
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
Richtig wäre gewesen: "Ich nehme als Beispiel "self", was sich immer auf die aktuelle Instanz von TForm1 bezieht".compmgmt hat geschrieben:Deswegen habe ich gesagt "Parent angeben, ich nehme als Beispiel Form1".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.