Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Form Type ändern (https://www.delphipraxis.net/123969-form-type-aendern.html)

Larsi 12. Nov 2008 12:28


Form Type ändern
 
Hi,

also ich benutze die Carbon Copy- Looks Like Mac Os X Komponenten für meinen Media Player. Eingebunden wird das Mac Style Form indem man bei

Delphi-Quellcode:
type
Form1 = class(TccForm)
reinschreibt und in die uses oben ccform einfügt.


Meine Frage ist jetzt ob es irgenwie möglich ist in der laufenden Anwendung das Design wieder zu entfernen. Logischerweise klapp folgendes in einem Button nicht :) :

Delphi-Quellcode:
type
Form1 = class(TForm)
Weiß einer ob das geht oder muss ich zwei Exe Dateien anbieten und dann umschalten obwohl ich das eigentlich nicht will?

mkinzler 12. Nov 2008 12:31

Re: Form Type ändern
 
Objekt freigeben und neu erstellen.

Larsi 12. Nov 2008 12:35

Re: Form Type ändern
 
Wie geht das? Also Form1.Free; und dann?

DeddyH 12. Nov 2008 12:39

Re: Form Type ändern
 
Du könntest auch die Komponenten um eine Eigenschaft "Enabled" erweitern. Oder einfach eine andere Skinengine verwenden, wo das geht.

Larsi 12. Nov 2008 13:07

Re: Form Type ändern
 
Und wie kann ich das Form jetzt neu erstellen?

mkinzler 12. Nov 2008 13:21

Re: Form Type ändern
 
Delphi-Quellcode:
<Objekt> := <Klasse>.Create(<Owner>, <weitere Params>);

DeddyH 12. Nov 2008 13:23

Re: Form Type ändern
 
Könnte aber Probleme geben, wenn er sein Mainform vorher releasen muss.

mkinzler 12. Nov 2008 13:28

Re: Form Type ändern
 
Dann müsste er halt eine unsichtbare Dummy-Mainform verwenden.
War auch nicht als Musterlösung, sondern als Denkanstoss gedacht. Obwohl ich bezweifele, das er einen solchen bei ihm auslöst.
Man sollte das Ganze sowieso anders lösen.

DeddyH 12. Nov 2008 13:32

Re: Form Type ändern
 
Zitat:

Zitat von mkinzler
Man sollte das Ganze sowieso anders lösen.

Seh ich auch so.

Larsi 12. Nov 2008 14:04

Re: Form Type ändern
 
Aber wie soll ich das denn um ein Enabled erweitern? Ist doch nichtmal eine Komponente oder?

mkinzler 12. Nov 2008 14:14

Re: Form Type ändern
 
Eine Form ist auch eine Komponente

Delphi-Quellcode:
type
  TForm1 = class(TForm)
  private
    FSkinEnabled: Boolean;
  public
    constructor Create( AOwner: TComponent); overload; override;
    constructor Create( AOwner: TComponent; EnableSkin: Boolean); overload;
  end;
 
var
  Form1: TForm1;

implementation

{$R *.dfm}

constructor TForm1.Create(AOwner: TComponent);
begin
    if Self.FSkinEnabled then
        Self := TccForm.Create()
    else
        inherited Create( AOwner);
end;

constructor TForm1.Create(AOwner: TComponent; EnableSkin: Boolean);
begin
    Self.FSkinEnabled := EnableSkin;
    Self.Create( AOwner);
end;
Nicht getestet, sollte aber funktionieren

Larsi 12. Nov 2008 14:18

Re: Form Type ändern
 
Geht nicht.

[DCC Fehler] Unit1.pas(171): E2035 Nicht genügend wirkliche Parameter

DeddyH 12. Nov 2008 14:29

Re: Form Type ändern
 
Dann erweitere doch die Komponente/Klasse oder was auch immer das ist um diese Eigenschaft, ist doch viel sinnvoller IMHO.

mkinzler 12. Nov 2008 14:51

Re: Form Type ändern
 
Delphi-Quellcode:
Self := TccForm.Create( AOwner)

Apollonius 12. Nov 2008 15:37

Re: Form Type ändern
 
Ähm, so funktionieren Konstruktoren eindeutig nicht. Self wird bereits in _ClassCreate erzeugt und Änderungen im Konstruktor werden nicht gespeichert. Dass man einem TForm1 nicht einfach ein TccForm zuweisen kann, sofern keine besondere Vererbungshierarchie vorliegt, sollte auch klar sein.

Meflin 12. Nov 2008 16:57

Re: Form Type ändern
 
Zitat:

Zitat von Larsi
Geht nicht.

Du dumm.

Wenn du einen abschlatbaren Skin willst, dann verwende eine Skin Engine. Alles andere ist sowieso keine Lösung und für dich vermutlich eh nicht implementierbar :roll:

DeddyH 12. Nov 2008 17:24

Re: Form Type ändern
 
Schau Dir mal die Lite-Edition der AlphaControls an.


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