Panel erzeugen durch Buttonklick

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Minits
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

Beitrag von Minits »

Wie der Betreff schon verrät, bestheht meine Frage darin, wie ich durch den Klick auf einen Button ein Panel erzeugen kann.

compmgmt
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

Beitrag von compmgmt »

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);
Have fun with this snippet ;)

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: Panel erzeugen durch Buttonklick

Beitrag von wp_xyz »

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.

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;

compmgmt
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

Beitrag von compmgmt »

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);
Have fun with this snippet ;)

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: Panel erzeugen durch Buttonklick

Beitrag von wp_xyz »

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".

Antworten