Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi eigenschaften von buttons, die zur laufzeit erstellt wurden (https://www.delphipraxis.net/49624-eigenschaften-von-buttons-die-zur-laufzeit-erstellt-wurden.html)

ch33seburger 13. Jul 2005 22:01


eigenschaften von buttons, die zur laufzeit erstellt wurden
 
hi :)

ich würde gerne wissen wie ich die eigenschaften von buttons, die ich zur laufzeit erstellt habe ändern kann?

so sieht mein code aus:
Delphi-Quellcode:
for i := 0 to nl.length - 1 do begin
  node2 := xmlDoc.documentElement.selectSingleNode('/buttonset/Default');
  x:=x+1;
    n := nl[i];
node2 := xmlDoc.documentElement.selectSingleNode('/buttonset/'+n.nodename);
newpage:=TTabSheet.Create(Self);
newpage.PageControl := PageControl1;
newpage.name:='btab'+inttostr(x);
newpage.Caption:=n.nodeName;
x:=x+1;
button1 := Tspeedbutton.Create(self);
button1.Name:='speedbutton'+inttostr(x);
button1.parent := newpage;
button1.Width:=pagecontrol1.Width div 6;
button1.Align:=alleft;
button1.caption:=node2.selectSingleNode('button1').attributes.item[0].text;
button1.hint:=node2.selectSingleNode('button1').attributes.item[1].text;
button1.ShowHint:=true;
button2 := Tspeedbutton.Create(self);
button2.Name:='speedbutton'+inttostr(x);
button2.parent := newpage;
button2.Width:=pagecontrol1.Width div 6;
button2.Align:=alleft;
button2.caption:=node2.selectSingleNode('button2').attributes.item[0].text;
button2.hint:=node2.selectSingleNode('button2').attributes.item[1].text;
button2.ShowHint:=true;
x:=x+1;
//... usw
bei den buttons (das sind dann insgssamt 6 stück auf jedem tabsheet) würde ich gerne bei einem onresize ereignis der form haben, dass sie button1.Width:=pagecontrol1.Width div 6; einnehmen... aber ich weiss nicht wie ich an die buttons rankomme? :/

Luckie 13. Jul 2005 22:19

Re: eigenschaften von buttons, die zur laufzeit erstellt wur
 
Entweder setzt du die Anchor Eigenscfaten beim erstellen oder positionierts sie von Hand im OnResize Ereignis der Form. An die Schaltflächen kommst du mit Hier im Forum suchenFindComponent (schon wieder :mrgreen:) dran.

ch33seburger 14. Jul 2005 19:33

Re: eigenschaften von buttons, die zur laufzeit erstellt wur
 
das mit dem findcomponent klappt schon ganz gut.. aber sobald ich das mit einer schleife versuche bekomme ich immer ne fehlermeldung sobald ich das fenster vergrößern/verkleinern will :/

Delphi-Quellcode:
for zz := 1 to 6 do
  begin
    (FindComponent('speedbutton'+IntToStr(zz)) as TspeedButton).Width:=pagecontrol1.Width div 6;
    (FindComponent('speedbutton'+IntToStr(zz)) as TspeedButton).Align:=alleft;
  end;
end;
aber warum??

SirThornberry 14. Jul 2005 19:36

Re: eigenschaften von buttons, die zur laufzeit erstellt wur
 
Und welche Fehlermeldung -> Glaskugel ist gerade zur Reperatur.

ch33seburger 14. Jul 2005 19:49

Re: eigenschaften von buttons, die zur laufzeit erstellt wur
 
Zitat:

Project Project1.exe raised exception class EAccessViolation with message 'Access violation at adress 004702C5 in module 'Project1.exe'. Read of adress 0000004C'. Process stopped. Use Step or Run to continue.
:>

ich vermute es hat was damit zu tun das die anderen speedbuttons in einem anderen tabset sind...
weil wenn ich die schleife bis 7 gehen lasse funzt alles.. und das sind dann die speedbuttons auf dem ersten tab. aber sobald ich mehr als 7 mache gibt es diesen fehler :/

ps: hoffe deiner glaskugel geht es bald wieder besser.

marabu 14. Jul 2005 20:06

Re: eigenschaften von buttons, die zur laufzeit erstellt wur
 
Deine Vermutung ist richtig. Du findest nur die Komponenten, die den richtigen Parent haben - das ist der, dessen Methode FindComponent() du aufgerufen hast. An dieses Thema erinnere ich mich noch.

Grüße vom marabu

SirThornberry 14. Jul 2005 20:11

Re: eigenschaften von buttons, die zur laufzeit erstellt wur
 
die bessere/schnellere Variante wäre auch die Buttons nach dem erstellen in eine eigene Liste zu packen (TList/TObjectlist/Array etc.). Dann kannst du dir auch sicher sein das deine Buttons in der Liste sind und es müssen auch nicht alle Komponenten durchgegangen werden obwohl du ja eigentlich nur die Buttons brauchst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:56 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