AGB  ·  Datenschutz  ·  Impressum  







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

Buttons dynamisch erstellen

Ein Thema von Pelzi · begonnen am 27. Feb 2006 · letzter Beitrag vom 27. Feb 2006
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#11

Re: Buttons dynamisch erstellen

  Alt 27. Feb 2006, 18:13
Verschibe mal "procedure Click(Sender: TObject); " in die private Deklaration.

Delphi-Quellcode:
TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    procedure Click(Sender: TObject);
//...

Ein Beispiel:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private-Deklarationen }
    buttons: array[0..20] of TButton;
    forms: array[0..20] of TForm;
    procedure MyBtnClick(Sender: TObject);
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var i:Integer;
begin
  for i:=0 to 5 do
  begin
    forms[i]:=TForm.Create(self);
    forms[i].Visible := true;
    forms[i].left:= 40*i;
    forms[i].width:= 38;

    buttons[i]:=TButton.create(form1);
    buttons[i].Left := 20;
    buttons[i].top := 80;
    buttons[i].height := 35;
    buttons[i].width := 80;
    buttons[i].Parent := forms[i];
    buttons[i].OnClick := MyBtnClick;
    buttons[i].Tag := i;
    buttons[i].Caption := 'Button ' + IntToStr(i);
  end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
var i : byte;
begin
  for i:=0 to 5 do
  begin
    buttons[i].Free;
    forms[i].Free;
  end;
end;

procedure TForm1.MyBtnClick(Sender: TObject);
begin
  showmessage('du hast geklicked ' + TButton(Sender).Caption);
end;
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Pelzi

Registriert seit: 26. Okt 2005
Ort: Kiel
13 Beiträge
 
Delphi 7 Personal
 
#12

Re: Buttons dynamisch erstellen

  Alt 27. Feb 2006, 18:57
Thx, jetzt funzt es warum auch immer, werd nen bischen rumprobieren woran es lag...
der vollständige code geht auf jedenfall.. obs nundaran lag das die Buttons und Formulare als Private deklariet wurden oder am Namen.. ist im endeffect auch egal hauptsache ich weiß wie es geht.

Falls das hier so üblich ist beantwortete Threads zu closen kann er jetzt geclosed werden ^^

Pelzi
  Mit Zitat antworten Zitat
gfjs

Registriert seit: 8. Dez 2005
Ort: Hohenkammer
298 Beiträge
 
Delphi 2006 Professional
 
#13

Re: Buttons dynamisch erstellen

  Alt 27. Feb 2006, 19:49
Wenn ich die Ausgangslage richtig verstanden habe, sollten viele Buttons auf ein Formular?!

Das hier

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var i:Integer;
begin
  for i:=0 to 5 do
  begin
    forms[i]:=TForm.Create(self);
    forms[i].Visible := true;
    forms[i].left:= 40*i;
    forms[i].width:= 38;

    buttons[i]:=TButton.create(form1);
    buttons[i].Left := 20;
    buttons[i].top := 80;
    buttons[i].height := 35;
    buttons[i].width := 80;
    buttons[i].Parent := forms[i];
    buttons[i].OnClick := MyBtnClick;
    buttons[i].Tag := i;
    buttons[i].Caption := 'Button ' + IntToStr(i);
  end;
end;
erzeugt aber m.E. viele Formulare mit je einem Button.

Damit

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    ButtonArr : array[0..19] of TButton;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
Var
  i : integer;
begin
  for i := 0 to 19 do
  begin
    ButtonArr[i] := TButton.Create(Form1);
    with ButtonArr[i] do
    begin
      parent := Form1;
      Left := 20 + (i MOD 5)*130;
      Top := 20 + (i DIV 5)*80;
      Tag := i+1;
      Caption := 'Button'+IntToStr(tag);
    end;
  end;
end;
end.
erzeuge ich 20 Buttons auf einem Formular.

mfg gfjs
Mein neues Motto (von "Unbekannt"):
Gewinnen: Wenn Du kannst - Verlieren: Wenn Du musst - Aufgeben: NIE!
  Mit Zitat antworten Zitat
Pelzi

Registriert seit: 26. Okt 2005
Ort: Kiel
13 Beiträge
 
Delphi 7 Personal
 
#14

Re: Buttons dynamisch erstellen

  Alt 27. Feb 2006, 19:52
Zitat von gfjs:
Wenn ich die Ausgangslage richtig verstanden habe, sollten viele Buttons auf ein Formular
ja hast du aber spielt keine Rolle, da es mir ja ums Prinzip und nciht um Fertigen code ging, das soll ja eh in ein bestehendes Programm implementiert werden.
Trotzdem thx
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 00:20 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