Ja, das Hallo ist aber in jeder Instanz separat hinterlegt.TT73GP7 hat geschrieben:in deinen Beispiel würde ich auch immer nur Hallo angezeigt bekommen und nicht auf welchen Button ich geklickt habe
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
also das ganze läuft so:
Benutzer öffnet die Form
auf der Form gibt es n Buttons die werden aufgrund von Datenbank abfragen erzeugt
Jeder Button ist ein Ameisenvolk in Gebit x und y (nicht wundern hat mit Insekten Forschung zutun)
nun kann der Förster eintragen wie hoch der Haufen ist und wann er gemessen hat (klingt blöd)
also Jeder Knopf ein Volk
daher frage ich mich ob ich jeden Knopf gleich eine Id mitgeben kann und diese In der Procedur auslesen kann?
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes,
SysUtils,
db,
FileUtil,
ZConnection,
ZDataset,
Forms,
Controls,
Graphics,
Dialogs,
ExtCtrls,
StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Anzeige: TLabel;
dsArten: TDataSource;
ScrollAuswahl: TScrollBox;
ZConnection: TZConnection;
zArten: TZQuery;
procedure FormCreate(Sender: TObject);
private
// Edit: TEdit;
Panel: TPanel;
Label1: TLabel;
Image: TImage;
Button1: TButton;
public
procedure Button1Button1Click(Sender: TObject);
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
var
nPanelTop : Integer;
begin
zArten.Active := True;
dsArten.DataSet.First;
nPanelTop := 2;
while not dsArten.DataSet.EOF do begin
Panel := TPanel.Create(Self);
with Panel do begin
Parent := ScrollAuswahl;
Top := nPanelTop;
Panel.Height := 122;
end;
nPanelTop := (nPanelTop + 2 + 122);
Button1 := TButton.Create(Self);
with Button1 do begin
Button1.Parent := Panel;
// Button1.Caption := dsArten.DataSet.FieldByName('ID').AsString;
Button1.Caption := '#';
Button1.OnClick := @Button1Button1Click;
Button1.Left := 145;
Button1.Width := 25;
Button1.Top := 95;
end;
Label1 := TLabel.Create(Self);
with Label1 do begin
Label1.Parent := Panel;
Label1.Caption := 'Art: '+dsArten.DataSet.FieldByName('Art').AsString + ' NR ' + dsArten.DataSet.FieldByName('ID').AsString;
Left := 5;
Top := 5;
end;
Image := TImage.Create(Self);
with Image do begin
Image.Parent := Panel;
if (dsArten.DataSet.FieldByName('Art').AsString = 'Ameisenhaufen') then image.Picture.LoadFromFile('C:\wald\ameise.png')
else if (dsArten.DataSet.FieldByName('Art').AsString = 'Marder') then image.Picture.LoadFromFile('C:\wald\Marder.png')
else image.Picture.LoadFromFile('C:\wald\vogel.png');
image.Stretch := True;
Image.Height := 70;
Left := 30;
Top := 30;
end;
dsArten.DataSet.Next;
end;
end;
procedure TForm1.Button1Button1Click(Sender: TObject);
begin
// Anzeige.Caption := 'Hallo du bist '+Button1(Sender).Caption;
// Anzeige.Caption := 'Hallo du bist '+dsArten.DataSet.FieldByName('ID').AsString;
end;
end.
procedure TForm1.FormCreate(Sender: TObject);
var
nPanelTop, i: integer;
begin
nPanelTop := 2;
for i := 0 to 4 do begin // Nur als Test, da keine Datenbank.
Panel := TPanel.Create(Self);
with Panel do begin
Parent := ScrollAuswahl;
Top := nPanelTop;
Panel.Height := 122;
end;
nPanelTop := (nPanelTop + 2 + 122);
Button1 := TButton.Create(Self);
with Button1 do begin
Button1.Parent := Panel;
// Button1.Caption := dsArten.DataSet.FieldByName('ID').AsString;
Button1.Caption := '#'+IntToStr(i); // neu
Button1.OnClick := @Button1Button1Click;
Button1.Left := 145;
Button1.Width := 25;
Button1.Top := 95;
end;
Label1 := TLabel.Create(Self);
with Label1 do begin
Label1.Parent := Panel;
Label1.Caption := 'Art: ' + IntToStr(i);
Left := 5;
Top := 5;
end;
Image := TImage.Create(Self);
with Image do begin
Image.Parent := Panel;
image.Picture.LoadFromFile('vogel.png');
image.Stretch := True;
Image.Height := 70;
Left := 30;
Top := 30;
end;
end;
end;
procedure TForm1.Button1Button1Click(Sender: TObject);
begin
Anzeige.Caption := 'Hallo du bist ' + TButton(Sender).Caption; // neu
// Anzeige.Caption := 'Hallo du bist '+dsArten.DataSet.FieldByName('ID').AsString;
end;
Anzeige.Caption := 'Hallo du bist ' + TButton(Sender).Caption;
TT73GP7 hat geschrieben:
- Code: Alles auswählen
procedure TForm1.Button1Button1Click(Sender: TObject);
begin
// Anzeige.Caption := 'Hallo du bist '+dsArten.DataSet.FieldByName('ID').AsString;
end;
Type TWaldElement = class
Button1: TButton;
RelatedDBSet: TWasauchimmer; //Hier wird dein Datensatz referenziert, so kannst du später darauf zugreifen, lesend und schreibend
public
Constructor Create(ADBSet:TWasauchimmer);
protected
Procedure ButtonClick(Sender: TObject);
end;
IMPLEMENTATION
Constructor Create(ADBSet:TWasauchimmer);;
begin
self.RelatedDBSet:= ADBSet; //Für späteren Zugriff auf den Datensatz abspeichern
Button1:= TButton.Create(Form1);
//...
Button1.OnClick:= @ButtonClick; //Hier wird implizit die eigene Instanz übergeben!
end;
procedure TForm1.Button1Button1Click(Sender: TObject);
begin
Anzeige.Caption := 'Hallo, ich bin ein '+RelatedDBSet.FieldByName('ID').AsString; //RelatedDBSet ist hier für jeden Button anders
end;
while not dsArten.DataSet.EOF do begin
TWaldElement.Create(dsArten.DataSet);
dsArten.DataSet.Next;
end;
kann man sowas eigentlich auch über den Namen machen?
Label1.Destroy
TT73GP7 hat geschrieben:ich dachte mir das man doch eigentlich ein Label mit Destroy entfernen kann.
leider nein
- Code: Alles auswählen
Label1.Destroy
die zur Zeit ja alle Label1
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste