AGB  ·  Datenschutz  ·  Impressum  







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

Generell zu dyn. Komponenten

Ein Thema von TheMiller · begonnen am 10. Sep 2005 · letzter Beitrag vom 18. Mär 2006
Antwort Antwort
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

Generell zu dyn. Komponenten

  Alt 10. Sep 2005, 12:03
Hallo,

ich versuche derzeit Daten aus einer ini auszulesen und dementsprechend Button zu erstellen. Das klappt auch alles wunderbar. Nur eine Frage habe ich, die sich nicht nur auf die Buttons bezieht (in meinem Problem natürlich schon), sondern generell für alle dynamisch, mehrfachvorkommenden Objekte.
Nehmen wir an, ich erstelle mit einer Schleife X Objekte.

Delphi-Quellcode:
procedure TForm1.CreateBtn;
var
  s:TStringList;
  i,top,id:integer;
begin
  s:=TStringList.Create;
  ini.ReadSectionValues('Eintrag',s);
  top:=10;
  id:=1;
  for i:=1 to s.Count-1 do
  begin
    btn:=TButton.Create(Self);
    btn.Caption:=ini.ReadString('Eintrag',IntToStr(i),text);
    btn.Parent:=Form1;
    btn.Name:='btn'+Inttostr(id);
    inc(id);
    top:=top+25;
    btn.Top:=top;
    btn.Left:=10;
    btn.Width:=90;
    Btn.OnClick:=Click;
  end;
end;
Jetzt klicke ich auf die Komponente 3 (10 Komponenten wurden erstellt). Woher weiß ich jetzt, auf welche Komponente ich geklickt habe / bzw verallgemeinert, welche Komponente ich anspreche?

Danke
Bisheriger Nutzername "DJ-SPM"
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Generell zu dyn. Komponenten

  Alt 10. Sep 2005, 12:06
Beim OnClick Ereignis des Buttons wird immer ein Sender als TObject mit übergeben, der ein Pointer zum Button selbst ist, und den du im Ereignis als Sender as TButton ansprechen kannst.
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#3

Re: Generell zu dyn. Komponenten

  Alt 10. Sep 2005, 12:11
Verdammt ist das einfach!

Meine Güte...ich glaube ich sollte besser 8 geben, bevor ich poste. Hätte ich auch selsbt drauf kommen können. THX
Bisheriger Nutzername "DJ-SPM"
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Generell zu dyn. Komponenten

  Alt 10. Sep 2005, 12:14
Ist ja auch WE
  Mit Zitat antworten Zitat
Nju

Registriert seit: 16. Jun 2004
41 Beiträge
 
#5

Re: Generell zu dyn. Komponenten

  Alt 18. Mär 2006, 11:08
Gut, Theorie verstanden und schön, dass es der Threadersteller dann auch umsetzen konnte. Beim Zweiten habe ich trotzdem Probleme.

Wie wärs mit nem Beispielcode, z.B. wenn ich draufklick, so dass ich die Caption des Buttons, auf dem geklickt wurde, in der OnClick-Prozedur auslesen/auswerten kann?

Danke schonmal.

*Edit*

Okay, dass wäre die Lösung (im OnClick-Ereignis):

Code:

var
  Button: TButton;
begin
  Button := Sender as TButton;

Anschließend kann so drauf zugegriffen werden, so als wenn es sich um einen reellen Button handelt.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Generell zu dyn. Komponenten

  Alt 18. Mär 2006, 11:17
Einfach:

(Sender as TButton).Caption;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Generell zu dyn. Komponenten

  Alt 18. Mär 2006, 11:18
Nichts leichter als das, sagte Piggeldi...

Delphi-Quellcode:
procedure TForm8.Button1Click(Sender: TObject);
begin
     if Sender is TButton
     then TButton(Sender).Caption := 'Neue caption' ;
end;
oder
Delphi-Quellcode:
procedure TForm8.Button1Click(Sender: TObject);
begin
     if Sender is TButton
     then (Sender as TButton).caption := 'Neue caption' ;
end;
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:04 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