![]() |
AW: Spezieller TFrame
Was geht ist folgendes:
Wir erstellen uns manuell eine Ableitung von
Delphi-Quellcode:
:
TFrame
Delphi-Quellcode:
Dann erstellen wir uns ein neues
unit CustomFrameApp.Frames.MyBaseFrame;
interface uses Vcl.ExtCtrls, Vcl.Forms; type TMyBaseFrame = class(TFrame) private FIcon: TImage; published property Icon: TImage read FIcon write FIcon; end; implementation end.
Delphi-Quellcode:
wie gehabt und verändern den Source leicht:
TFrame
Delphi-Quellcode:
unit CustomFrameApp.Frames.MyFrame;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, // die Unit mit dem Vorgänger-Frame CustomFrameApp.Frames.MyBaseFrame; // Umbiegen der Klasse TFrame auf die gewünschte Klasse type TFrame = CustomFrameApp.Frames.MyBaseFrame.TMyBaseFrame; type TMyFrame = class(TFrame) private { Private-Deklarationen } public { Public-Deklarationen } end; implementation {$R *.dfm} end. |
AW: Spezieller TFrame
Zitat:
Das Problem, auf welches du dich beziehst ist dort, wo die Referenzzählung die Instanz aus dem Speicher kicken kann, da sollte man nur noch per Interface auf die Instanz zugreifen. |
AW: Spezieller TFrame
Zitat:
Muss ich mal testen. Mein Loesungsweg war dann doch ne Ecke umstaendlicher... |
AW: Spezieller TFrame
Zitat:
|
AW: Spezieller TFrame
Das Problem ist, dass die IDE nach dem Namen der Vorgänger-Klasse schaut, wenn der Vorgänger keine DFM Datei hat.
Wenn dann der Name der Vorgänger-Klasse <>
Delphi-Quellcode:
dann wird das Dingen wie ein
TFrame
Delphi-Quellcode:
behandelt. Das ist das ganze Geheimnis.
TForm
Auf das gleiche Problem trifft man übrigens auch bei
Delphi-Quellcode:
(aber wahrscheinlich seltener, weil man da nicht so viel ableitet).
TDataModule
|
AW: Spezieller TFrame
Zitat:
|
AW: Spezieller TFrame
Zitat:
Es war notwendig, die TFrame-Abgeleitete Basisklasse, die man TMyCoolFrame zur Ableitung reicht, vollstaendig leer zu erstellen, dann als Basisklasse anzugeben. Wenn dieses Konstrukt zusammen mit dem "inherited" in der .dfm statt "object" mal steht, kann man in der Basisklasse aendern, was man will. |
AW: Spezieller TFrame
Zitat:
|
AW: Spezieller TFrame
Zitat:
Der Zugriff ist dann natürlich ausschliesslich über Interfaces. |
AW: Spezieller TFrame
Zitat:
ja, das ist eine super Lösung. Ich benutze das "Umbiegen" in ähnlicher Form an einigen Stellen. Ich frage mich wie das "Umbiegen" als Fachbegriff heisst, weil ich nenne das für mich manchmal Unit-Forwarding. Hat diese Methode vielleicht einen klaren Namen ? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:10 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