Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte » 

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/)
-   -   Objekt im onCreate erzeugen, aber wie? (https://www.delphipraxis.net/208331-objekt-im-oncreate-erzeugen-aber-wie.html)

Marco Steinebach 15. Jul 2021 21:17

Objekt im onCreate erzeugen, aber wie?
 
Hallo zusammen,
Ich habe eine von TEdit abgeleitete Klasse. Die soll ein TLabel auf die Form bringen, wenn man sie benutzt.
Auf Deutsch: in das TEdit sollen Datumswerte hinein, und ich hätte gern, dass daneben, erzeugt von meiner abgeleiteten Klasse, ein TLabel erzeugt wird, in dem der zugehörige Wochentag erscheint.
Schreibe ich im onCreate meines TEdits
Code:
fLabel := TLabel.create (fOwner);
fliegt mir schon der designer um die Ohren, ist ja auch irgendwie klar, das ist ja auch noch alles nicht fertig.
Geht sowas überhaupt, und wenn ja, wie?

Herzlich grüßt
Moo

jaenicke 15. Jul 2021 21:54

AW: Objekt im onCreate erzeugen, aber wie?
 
Was für eine Fehlermeldung kommt denn?

Leite doch einfach von TLabeledEdit ab oder schau rein wie das gemacht ist. Oder vielleicht reicht dir das ja auch schon. ;-)

stahli 15. Jul 2021 21:56

AW: Objekt im onCreate erzeugen, aber wie?
 
Schau mal, ob Dir AfterCreate hilft: https://www.swissdelphicenter.ch/de/...de.php?id=1276

Marco Steinebach 15. Jul 2021 22:17

AW: Objekt im onCreate erzeugen, aber wie?
 
Hallo Zusammen,
@Stali: toll, das After Create hilft zwar hier nicht, aber das ist alle mal besser, als es mit einem Timer zu lösen - super, jetzt wird die Nacht noch länger.

Zu meinem eigentlichen Problem (TLabeledEdit) hab ich in meinem Uralt-Delphi leider noch nicht:
Code:
constructor TMsDatumCombo.create (aOwner: TComponent);
begin
  inherited create (aOwner);
  fOwner := aOwner;
  fShowLabel := true;
  fCaption := '';
  fLabel := TLabel.create (fOwner);
  with fLabel do
  begin
    left := self.left;
    top := self.top;
    focusControl := self;
    parent := self.parent;
    Caption := self.Caption;
  end;
  self.left := self.left + 120;
end;
Im Designer klappts, nur starte ich das Programm:
Exception Class TLabel not found.
Hääää?

Und wenn ich versuche, den Items in onCreate etwas hinzuzufügen, fliegt mir gleich der Objekt-Manager um die Ohren. Sprich, ich füge die Komponente ein:
Eltern-Objekt nicht vorhanden.

Ich bitte nochmal um Hilfe.

Herzliche Grüße

stahli 15. Jul 2021 23:10

AW: Objekt im onCreate erzeugen, aber wie?
 
Evtl. musst Du Deine Unit statt compilieren noch einmal neu installieren.
Erst durch das Installieren wird die Komponente in der neuen Form in der IDE vollständig registriert.

Marco Steinebach 15. Jul 2021 23:13

AW: Objekt im onCreate erzeugen, aber wie?
 
Huhu Stahli,
Bringt leider nichts...

stahli 15. Jul 2021 23:32

AW: Objekt im onCreate erzeugen, aber wie?
 
Kannst Du Deine Unit oder ein Testprojekt oder ein Video mal zeigen?

Ich glaube zwar nicht, aber vielleicht bringt Dir SetSubComponent etwas: https://www.delphipraxis.net/79726-u...der-gruen.html
Dann wird das Label mit seinen Eigenschaften mit in der Formulardatei abgelegt (was die Formulargröße etwas erhöht).

jaenicke 16. Jul 2021 06:52

AW: Objekt im onCreate erzeugen, aber wie?
 
Zitat:

Zitat von Marco Steinebach (Beitrag 1492372)
Zu meinem eigentlichen Problem (TLabeledEdit) hab ich in meinem Uralt-Delphi leider noch nicht:

Da es eine aktuelle Version für nicht-kommerzielle Zwecke kostenlos gibt, ist das ja kein Hindernis...

Zitat:

Zitat von Marco Steinebach (Beitrag 1492372)
Im Designer klappts, nur starte ich das Programm:
Exception Class TLabel not found.

Versuche es einmal ohne Owner. Vielleicht klappt das mit dem Lademechanismus der Daten des Formulars nicht, wenn du da eine zusätzliche Komponente in den Owner hängst, die zur Designzeit unter dem Namen gar nicht vorhanden war. Denn die Werte werden natürlich erst nach dem Ausführen des Konstruktors geladen.

hoika 16. Jul 2021 06:57

AW: Objekt im onCreate erzeugen, aber wie?
 
Hallo,
schreib mal unten ein RegisterClass(TLabel) rein.

etwa so

Unit Kompi

Interface

Implementstion


Begin
RegistrClass
End

Und dahinter noch ein MessageBox.
Dann siehst du, ob der richtige Quellcode verwendet wird.

himitsu 16. Jul 2021 10:40

AW: Objekt im onCreate erzeugen, aber wie?
 
Wenn deine Komponente eine weitere "eigenständige" Komponente automatisch einfügen soll, dann muß sie den selben Owner bekommen. (aber das willst du ja nicht)

Deine Komponente ist Besitzer/Verwalter des Labels, also ist deine Komponente auch für die Erstellung/Freigabe verantwortlich.
* also dein Edit ist Owner des Labels (so macht es fast jeder Andere)
* oder der Owner ist NIL und du gibst im Destroy das Label selbst frei (unnötig umständlich)


Und zu TLabeledEdit
* jupp einfacher
* aber falls das mit dem Delphi 5 stimmt und nur jemand nicht zu faul war ausversehn vergessen hatte das einzustellen


PS: Ohne Clipping kann unter FMX das Label auch das Edit als Parent bekommen und dennoch außerhalb liegen.
Das erleichtert nochmal andere Dinge, wie Neuausrichtung, wenn das Edit verschoben wird, und die Skalierung.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:53 Uhr.
Seite 1 von 4  1 23     Letzte » 

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf