![]() |
neue Komponente?
hallo,
wie kann ich zur laufzeit eines programmes z.b. ein neues label erzeugen? (ich kann ja keine 100 labels bei der programmierung erzeugen und dann zur laufzeit visible jeweils auf true stellen!!) danke, heiopei |
Moin heiopei,
zum Beispiel so:
Delphi-Quellcode:
Wichtig:
procedure TfrmMAIN.Button1Click(Sender: TObject);
begin with TLabel.Create(self) do begin Parent := self; Caption := 'TEST'; end; end; Da der Aufruf innerhalb einer OnClick Routine des Hauptformulares (frmMAIN) erfolgt, ist self das Hauptformular. Dadurch (Create(self)) wird das Formular Besitzer des Labels, so dass es automatisch freigegeben wird, wenn das Formular freigegeben wird. Bei Create(nil) müsste man sich selber um die Freigabe kümmern. |
Re: neue Komponente?
Hallo heiopei,
Zitat:
In der Komponenten-Palette oben, 10x Doppelklick auf LAbel. Dann alle 10 Labels auf dem Formular markieren, Strg+c und dann 10x Strg+v. Schon hast Du 100 Labels, jetzt nur noch Sortieren, also, alle 100 Markieren, rechtsklick und dann im nächsten Fenster nach Deinen Wünschen ausrichten. Ich behaupte das dies sogar schneller geht als eine for-Schleife zu schreiben, die Dir 100 zur Runtime erzeugt. :mrgreen: Zitat:
Grüsse, Daniel :hi: |
Moin,
Zitat:
und nicht schon anfangs sichtbar sind! Zitat:
schon sehr viele koponenten auf dem bildschirm habe! welche funktion hat "parent"? grüße heiopei |
Hoi,
schau mal in der Hilfe nach dort steht das ganz gut beschrieben. Wenn du mal wieder nicht weist was ein Begriff bedeutet dann schreiben ihn in die Unit, klicke ihn an und dann F1, dann kommt die Hilfe ... |
dankeeeeeeee
|
Davon abgesehen, dass ich glaube die Schleife schneller getippt hätte, wie die ganzen Label voneinander runtergeschoben, ist es mit der Schleife viel einfacher, weil man sie danach auch alle ordentlich ansprechen kann. Nicht so ein Kram mit FindComponent (die mMn unsinnigste Delphi-Funktion aller Zeiten!)
|
Zitat:
|
)Hallo!
Zitat:
Gruß Dietmar Brüggendiek |
Moin Dietmar,
ein eigenes Array kann man natürlich auch erstellen. Mit FindComponent wird nur das interne Array der Komponenten durchsucht. Vom Grundprinzip her also kein Unterschied, obwohl das eigene Array natürlich schneller sein kann. |
...und man das eigene Array umbenennen kann. Wen du mit FindComponent arbeitest, wird das nachher ein sehr schöner Spass, die Variabelnamen zu ändern!
|
hi,
bin j auch noch ein bissel lernbedürftig, hab bisher auch wie brüggendiek das ganze mir array gemacht, aber wie funktioniert denn so eine "FindComponent" genau?? also vielleicht ein einfacher Beispiel-source mit erklärung, soweit das keine umstände macht! danke schonmal ciao haegar |
Du bist schon a bisserl Faul?! :twisted: :twisted:
1. Suche benutzen, dies wurde schon sehr oft besprochen. 2. Sagt die OH folgendes dazu:
Delphi-Quellcode:
Indicates whether a given component is owned by the component.
function FindComponent(const AName: string): TComponent; Description FindComponent returns the component in the Components property array with the name that matches the string in the AName parameter. Use FindComponent to determine whether a given component is owned by another.
Delphi-Quellcode:
Grüsse, Daniel :hi:
The following example creates 20 edit boxes, using FindComponent with the edit box name to access each newly created edit box.
procedure TForm1.Button1Click(Sender: TObject); var i: Integer; const NamePrefix = 'MyEdit'; begin for i := 1 to 20 do begin TEdit.Create(Self).Name := NamePrefix + IntToStr(i); with TEdit(FindComponent(NamePrefix + IntToStr(i))) do begin Left := 10; Top := i * 20; Parent := self; end; end; end; |
ja hast ja recht, sry, werd das nächste mal erst inne hilfe schauen ;)
trotzdem danke |
Moin Nailor,
Zitat:
Das hab' ich nicht verstanden. |
Moin Christian,
Zitat:
Wenn man nun die Namen ändert, so hat man natürlcih keine Chanche mehr mit FindComponent('Name' + IntToStr(i)); Ich denke das Er dies gemeint hat. So hab ich das verstanden. Grüsse, Daniel :hi: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz