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 Formular Ableiten (https://www.delphipraxis.net/99058-formular-ableiten.html)

Hammer 6. Sep 2007 07:49


Formular Ableiten
 
Hallo

Ich habe ein Formular TMyForm von TForm abgeleitet. Dabei Überschreibe ich die Funktion Paint um dem Formular zur Laufzeit ein "Spezielles" Aussehen (Hintergrund) zu verleihen. Nun würde ich gerne TMyForm dahingehend erweitern dass ich bereits zu DesignTime also in der IDE sehe wie das Form dann zur laufzeit aussehen wird. Wie wenn ich die Eingenschaft Color usw. ändere ist dies ja in der IDE auch zu sehen.

Grüsse Adrian

uligerhardt 6. Sep 2007 08:20

Re: Formular Ableiten
 
Schau mal hier.

HTH,
Uli.

Hammer 6. Sep 2007 08:37

Re: Formular Ableiten
 
1. Danke

2. Habe ich mich wohl zu wenig genau ausgedrückt.
Eine neue Eigenschaft für TMyForm zu erstellen ist nicht mein Wunsch.

Ich möchte die Überschriebene Funktion "Paint" welche zur Laufzeit das aussehen des Formulars ändert auch zur DesignTime ausführen.

Phoenix 6. Sep 2007 08:45

Re: Formular Ableiten
 
Das sollte sie normalerweise automatisch tun.
Ausser natürlich, du fragst vor dem Zeichnen den ComponentState auf not csDesigning ab...

uligerhardt 6. Sep 2007 09:11

Re: Formular Ableiten
 
Zitat:

Zitat von Hammer
2. Habe ich mich wohl zu wenig genau ausgedrückt.
Eine neue Eigenschaft für TMyForm zu erstellen ist nicht mein Wunsch.

Dann lass den Teil mit NewProperty weg. :)

Zitat:

Zitat von Hammer
Ich möchte die Überschriebene Funktion "Paint" welche zur Laufzeit das aussehen des Formulars ändert auch zur DesignTime ausführen.

Und dafür muss die IDE ja irgendwie an deinen compilierten Paint-Code rankommen. Das riecht für mich nach Designtime-Package und irgendeiner Register...-Routine. Ob der Kram mit dem ModuleCreator notwendig ist, weiß ich nicht. Du kannst ja mal ein Minimal-Package ausschließlich mit dem RegisterCustomModule-Aufruf ausprobieren.

Zitat:

Zitat von Phoenix
Das sollte sie normalerweise automatisch tun.
Ausser natürlich, du fragst vor dem Zeichnen den ComponentState auf not csDesigning ab...

Kann ich mir nicht vorstellen. Die IDE führt AFAIK nur Code aus, der bei ihr durch ein Designtime-Package o.ä. registriert wurde.

Phoenix 6. Sep 2007 09:26

Re: Formular Ableiten
 
Zitat:

Zitat von uligerhardt
Zitat:

Zitat von Phoenix
Das sollte sie normalerweise automatisch tun.
Ausser natürlich, du fragst vor dem Zeichnen den ComponentState auf not csDesigning ab...

Kann ich mir nicht vorstellen. Die IDE führt AFAIK nur Code aus, der bei ihr durch ein Designtime-Package o.ä. registriert wurde.

Ich ging eigentlich davon aus, dass das Form in einem Package ist - sonst hätte er es ja auch gar nicht bei Datei->Neu->Formular registrieren können...

Oder hat er das gar nicht? :gruebel:

uligerhardt 6. Sep 2007 10:06

Re: Formular Ableiten
 
Zitat:

Zitat von Phoenix
Ich ging eigentlich davon aus, dass das Form in einem Package ist - sonst hätte er es ja auch gar nicht bei Datei->Neu->Formular registrieren können...

Da könntest du natürlich recht haben. :shock:

Zitat:

Zitat von Phoenix
Oder hat er das gar nicht? :gruebel:

Wir werden sehen. :)

Hammer 7. Sep 2007 14:17

Re: Formular Ableiten
 
Das Form ist nun in einem Package.

Aber wo kann ich den Code zum Zeichnen meines Formulars innerhalb der IDE aufrufen. (Sie tut das bei mir nicht selbst?!?)

Wenn ich Paint beim setzen der Eigenschaft NewProperty (aus dem Beispiel) aufrufe wird das Form auch richtig gezeichnet.



Wo krieg ich die Höhe und Breite des Formulars her ohne Titelleiste.

Grüsse
Adrian

Hammer 7. Sep 2007 14:39

Re: Formular Ableiten
 
Ich glaub ich hab das was gefunden.
Ich zeichne jetzt meine Formular in der IDE über WMPaint :

Delphi-Quellcode:
nit DescendantForm;

type
  TCustomNewDescendantForm = class(TForm)
  private
    procedure WMPaint(var msg: TWMPaint); message WM_PAINT;
  protected
    procedure Paint; override;
  end;

implementation

procedure TCustomNewDescendantForm.WMPaint(var msg: TWMPaint);
begin
   Inherited ;
   Paint;
end;
so gehts.

Die Grösse der zu nuzbaren Formular Fläche habe ich aber noch nicht gerausgefunden...

Grüsse
Adrian

uligerhardt 7. Sep 2007 14:49

Re: Formular Ableiten
 
Zitat:

Zitat von Hammer
Ich glaub ich hab das was gefunden.
Ich zeichne jetzt meine Formular in der IDE über WMPaint :

Schräg. Aber wenn's so funktioniert. :)

Zitat:

Zitat von Hammer
Die Grösse der zu nuzbaren Formular Fläche habe ich aber noch nicht gerausgefunden...

Meinst Du Form1.ClientRect?


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