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 In welchem Package ist TForm drin? (https://www.delphipraxis.net/133882-welchem-package-ist-tform-drin.html)

Codehunter 11. Mai 2009 15:39


In welchem Package ist TForm drin?
 
Ich steh grad etwas auf dem Schlauch: In welchem Package ist bei Delphi 5 die TForm-Klasse drin? Ich möchte endlich ein OnAfterShow-Ereignis implementieren weil mir das langsam zu doof wird daß bestimmte Sachen immer ausgeführt werden bevor das Form angezeigt wird und damit der Formularaufbar unnötig lange dauert.

Ich habe das schon oft gebraucht und jedesmal drumrumgewurschtelt aber jetzt will ich mir das mal implementieren. Der Einfachheit halber gleich in den Basisroutinen der VCL.

jfheins 11. Mai 2009 15:44

Re: In welchem Package ist TForm drin?
 
Zitat:

Zitat von Codehunter
Ich steh grad etwas auf dem Schlauch: In welchem Package ist bei Delphi 5 die TForm-Klasse drin?

Forms.pas sollte das sein
Zitat:

Der Einfachheit halber gleich in den Basisroutinen der VCL.
Ganz, ganz schlechte Idee ... leite die ein Formular ab, implementiere das Event und lege es in die Objektablage. Vorhandenen Formularen kannst du das neue Formular durch manuelles editieren der .pas und .dfm Datei unterschieben

Codehunter 11. Mai 2009 17:17

Re: In welchem Package ist TForm drin?
 
Ist schon klar das mit der Objektablage. Das Problem dabei ist: Delphi 5 zeigt Eigenschaften und Ereignisse von TForm-Abkömmlingen nicht im Objektinspektor an. Das hab ich nämlich schon oft versucht, hat nie geklappt. Und jedesmal die Handler zur Laufzeit zuweisen, och nöööö.

Ich hab schon öfter am Basiscode rumgespielt, so manchen Backport aus neueren Delphi-Versionen vorgenommen usw.

jbg 11. Mai 2009 17:19

Re: In welchem Package ist TForm drin?
 
Zitat:

Zitat von Codehunter
Das Problem dabei ist: Delphi 5 zeigt Eigenschaften und Ereignisse von TForm-Abkömmlingen nicht im Objektinspektor an.

Wofür brauchst du denn dafür ein Event. Eine virtuelle Methode macht das selbe. Und die kannst du über Ctrl+Space innerhalb der Klassendeklaration komplett automatisch einfügen lassen (wenn der Vorfahr sie deklariert hat).

jaenicke 11. Mai 2009 17:26

Re: In welchem Package ist TForm drin?
 
Du kannst auch das Ereignis OnActivate benutzen und nach der Anzeige dieses Ereignis löschen. Damit hast du doch praktisch schon alles fertig...
Delphi-Quellcode:
procedure TFormX.FormActivate(Sender: TObject);
begin
  OnActivate := nil;

  ...

end;
// EDIT:
Nachteil bei einem solchen Vorgehen: Der Benutzer sieht schon das Formular und ärgert sich, dass es noch nicht reagiert. Deshalb nehme ich eher einen SplashScreen, wenn es wirklich zu lange dauert.

Und bei meinen besten Projekten benutze ich Threads, das ist zwar am aufwendigsten, aber für den Benutzer auch deutlich am besten.

Codehunter 11. Mai 2009 18:11

Re: In welchem Package ist TForm drin?
 
Zitat:

Zitat von jaenicke
Und bei meinen besten Projekten benutze ich Threads, das ist zwar am aufwendigsten, aber für den Benutzer auch deutlich am besten.

Hab ich mich auch ein paar Mal dran versucht, hat aber jedesmal geknallt zur Runtime. Entweder war ich zu doof oder der Compiler hat einen an der Murmel, jedenfalls liefen nicht mal Beispiel-Projekte aus anderen Tutorials.

Hab mal einen Systemdienst programmiert der permanent auf der seriellen Schnittstelle lauscht. Den hätte ich auch gern in einen separaten Thread gebracht. Denn so ist das Ding jetzt permanent auf 100% CPU-Last wegen der Leseschleife. Aber das ist ein anderes Thema.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:09 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 by Thomas Breitkreuz