Delphi-PRAXiS
Seite 1 von 2  1 2      

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 neue Komponente? (https://www.delphipraxis.net/2667-neue-komponente.html)

heiopei 31. Jan 2003 21:39


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

Christian Seehase 1. Feb 2003 02:53

Moin heiopei,

zum Beispiel so:

Delphi-Quellcode:
procedure TfrmMAIN.Button1Click(Sender: TObject);
begin
  with TLabel.Create(self) do
  begin
    Parent := self;
    Caption := 'TEST';
  end;
end;
Wichtig:
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.

Daniel B 1. Feb 2003 09:31

Re: neue Komponente?
 
Hallo heiopei,
Zitat:

Zitat von heiopei
ich kann ja keine 100 labels bei der programmierung erzeugen und dann zur

Warum nicht?
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:

laufzeit visible jeweils auf true stellen!!)
Musst Du ja nicht, sind automatisch schon auf Visible und Enabled.

Grüsse, Daniel :hi:

heiopei 1. Feb 2003 13:53

Moin,
Zitat:

Musst Du ja nicht, sind automatisch schon auf Visible und Enabled.
eigentlich meinte ich damit, dass die labels erst einzeln erscheinen sollen
und nicht schon anfangs sichtbar sind!

Zitat:

ich kann ja keine 100 labels bei der programmierung erzeugen und dann zur...
leider würde ich dann die übersicht völlig verlieren, da ich sowieso
schon sehr viele koponenten auf dem bildschirm habe!

welche funktion hat "parent"?

grüße heiopei

RomanK 1. Feb 2003 14:06

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 ...

heiopei 1. Feb 2003 14:08

dankeeeeeeee

nailor 1. Feb 2003 16:00

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!)

RomanK 1. Feb 2003 16:40

Zitat:

Zitat von Nailor
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!)

:wiejetzt: Du sagsch, mit ner Schleife geht es besser, findest aber FindComponent unsinnig ... sag mir mal bitte wie das mit einer Schleife, aber ohne FindComponent, gehen soll :shock:

Brüggendiek 1. Feb 2003 16:53

)Hallo!

Zitat:

Zitat von FuckRacism
Du sagsch, mit ner Schleife geht es besser, findest aber FindComponent unsinnig ... sag mir mal bitte wie das mit einer Schleife, aber ohne FindComponent, gehen soll

Wenn die Elemente zur Laufzeit erzeugt werden (mit einer Schleife), kann man doch das Ganze in ein Array packen und dann mit einer weiteren Schleife ohne FindComponent (was ist das - habe ich nie gebraucht :mrgreen:) darauf zugreifen.

Gruß

Dietmar Brüggendiek

Christian Seehase 1. Feb 2003 18:28

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:20 Uhr.
Seite 1 von 2  1 2      

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