AGB  ·  Datenschutz  ·  Impressum  







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

Button mit Variable ansteuern

Ein Thema von rob60 · begonnen am 6. Dez 2010 · letzter Beitrag vom 6. Dez 2010
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#11

AW: Button mit Variable ansteuern

  Alt 6. Dez 2010, 19:56
Dass nicht aber villeicht falsche syntax stimmt das so tbutton(findcomponent('button1').caption := '');
Nope, TButton(FindComponent('button1')).Caption := ''; .

Quellcode schließt man übrigens in [delphi]-Tags ein
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#12

AW: Button mit Variable ansteuern

  Alt 6. Dez 2010, 19:56
Delphi-Quellcode:
var Button: TButton;
...
Button := FindComponent('Button1') as TButton;
if Assigned(Button) then
  Button.Caption := '';
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#13

AW: Button mit Variable ansteuern

  Alt 6. Dez 2010, 19:56
Naja, nach dem ersten Aufruf legt FindComponent (von TComponent) eine interne Liste der Controls an:

Delphi-Quellcode:
{ Fill the sorted list (and sort it) }
FSortedComponents := TList.Create;
FSortedComponents.Count := FComponents.Count;
for I := 0 to FComponents.Count - 1 do
  FSortedComponents[I] := FComponents[I];

FSortedComponents.SortList(
  function(Item1, Item2: Pointer): Integer
  begin
    Result := CompareText(TComponent(Item1).Name, TComponent(Item2).Name);
  end);
Hab jetzt nur nicht näher geschaut, ob diese Liste beim Hinzufügen und Löschen von Komponenten auch geupdated wird -- aber ich gehe mal stark davon aus. Von daher sollte das von der Performance her auch noch okay sein.

BTW: Darf ich SourceCode aus der VCL hier einfach posten?! -> Copyright!
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#14

AW: Button mit Variable ansteuern

  Alt 6. Dez 2010, 20:00
TButton(findcomponent('button' + IntToStr(i))).caption := IntToStr(i);
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#15

AW: Button mit Variable ansteuern

  Alt 6. Dez 2010, 20:01
Tatsächlich, das sieht hier unter Delphi 2007 zwar etwas anders aus, aber diese Liste wird auch bei mir erzeugt. Das war IIRC früher aber mal anders, da wurde bei jedem Aufruf das komplette Components-Array durchlaufen.

[edit] @implementation, Bummi: was ist, wenn die Komponente nicht gefunden wird? Dann sollte es beim Zugriff auf Caption knallen. [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
rob60

Registriert seit: 11. Mai 2009
72 Beiträge
 
Turbo Delphi für Win32
 
#16

AW: Button mit Variable ansteuern

  Alt 6. Dez 2010, 20:08
killllllll mich ,danke
First, solve the problem. Then, write the code.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#17

AW: Button mit Variable ansteuern

  Alt 6. Dez 2010, 20:08
@DeddyH
man kann das schon kapseln, Du möchtest sowas

Delphi-Quellcode:
var
B:TButton;
begin
 b := TButton(FindComponent('Button' + IntToStr(i)));
 if Assigned(B) then
    begin
       //was auch immer
    end;
aber wenn ich weiß was ich tue spare ich mir das mitunter ...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#18

AW: Button mit Variable ansteuern

  Alt 6. Dez 2010, 20:11
Das entspricht jetzt ziemlich meinem eigenen Code aus #12 Und ich denke mir immer: sicher ist sicher, die eine Assigned-Abfrage tut keinem weh, macht das Programm aber stabiler.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
rob60

Registriert seit: 11. Mai 2009
72 Beiträge
 
Turbo Delphi für Win32
 
#19

AW: Button mit Variable ansteuern

  Alt 6. Dez 2010, 20:25
Ach noch ne kleine info ich habs jetzt findcomponent darf ich ja nur in einer procedur der form1 benutzen ich hab aber meine eigene proc muss die jetzt halt ersetzen
First, solve the problem. Then, write the code.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#20

AW: Button mit Variable ansteuern

  Alt 6. Dez 2010, 20:44
Ach noch ne kleine info ich habs jetzt findcomponent darf ich ja nur in einer procedur der form1 benutzen ich hab aber meine eigene proc muss die jetzt halt ersetzen
Das stimmt zwar so nicht ... aber du hast recht, dass man FindComponent nicht einfach so aufrufen kann.

Denn es handelt sich hierbei um eine Methode von TForm
Delphi-Quellcode:
procedure MachWas( Form : TForm );
  begin
    Form.FindComponent( ... );
  end;

// Aufruf z.B. so

procedure TForm1.EineMethode;
  begin
    MachWas( Self ); // Self ist die Referenz auf die aktuelle Instanz
  end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 18:46 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