![]() |
Klasse manuell ändern
Hallo Leute,
hier ein Effekt, der mich ziemlich nervt. Ich habe ein TDatamodule erzeugt aus Datei/Neu/Weitere ->Delphi-Projekte/Delphi-Dateien/Datenmodule. Dies erzeugt dann ein Datenmodule von TDatamodule. Darin habe ich diese Zeile im Interface geändert
Delphi-Quellcode:
im OI ist auch dann TDataModule vorhanden.
TDeviceModule1 = class(TDataModule)
in TDeviceModule1 = class(TBaseClass) Soweit so gut. Wenn ich jetzt das Projekt schließe und wieder öffne erscheint dann unter TDeviceModule1 im OI ein TForm, was ja nicht richtig ist. Was wiederum die Annahme bestätigt, daß die VCL die falsche Klasse ewischt. Ich habe ziemlich lang im Netz gegoogelt, aber keine Lösung gefunden. Außer das man es in die Objektablage schieben soll. Das wiederum bringt 2 Probleme. 1. ich kann das Objekt in der Objektablage nicht sehen, obwohl in BorlandStudioRepository.xml enthalten ist. 2. ich kann es nicht ändern, da beim Speichern wieder TForm enthalten ist Hat jemand eine Idee, wie es nicht mehr dazu kommt daß TForm erscheint anstatt TDatamodule ? Gruß Gargano |
AW: Klasse manuell ändern
Du must den Typ auch im Formular (Dfm-Datei) entsprechend ändern.
|
AW: Klasse manuell ändern
Hallo mkinzler,
hier mal das komplette Dilemma die dfm ist vom Typ TGemIIIDeviceDataModule Es geht um abstrakte KLassen
Delphi-Quellcode:
Gruß//-------- Die Basis Klasse unit BaseUnit; interface uses SysUtils, Classes; type TBaseClassClass=Class of TBaseClass; TBaseClass = class (TDataModule) protected end; implementation end. // Die eigentliche Unit------------ unit GemIIIDeviceUnit; interface uses SysUtils, Classes,BaseUnit; type // hier geändert von TDataModule in TBaseClass TGemIIIDeviceDataModule = class(TBaseClass) private { Private-Deklarationen } public { Public-Deklarationen } end; var GemIIIDeviceDataModule: TGemIIIDeviceDataModule; implementation {$R *.dfm} end. // DFM, nach speichern und neu laden ist Clientheight usw eingetragen -------------------- object GemIIIDeviceDataModule: TGemIIIDeviceDataModule Left = 0 Top = 0 ClientHeight = 206 ClientWidth = 312 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = True PixelsPerInch = 96 TextHeight = 13 end Gargano |
AW: Klasse manuell ändern
DFM-Datei (falsch):
Delphi-Quellcode:
Richtig wäre aber (man beachte inherited statt object):
object GemIIIDeviceDataModule: TGemIIIDeviceDataModule
Left = 0 Top = 0
Delphi-Quellcode:
Was ausserdem noch seltsam ist, sind die markierten Properties die in einem Datenmodul nix verloren haben:
inherited GemIIIDeviceDataModule: TGemIIIDeviceDataModule
Left = 0 Top = 0
Delphi-Quellcode:
object GemIIIDeviceDataModule: TGemIIIDeviceDataModule
Left = 0 Top = 0 ClientHeight = 206 // <=== ClientWidth = 312 // <=== Color = clBtnFace // <=== Font.Charset = DEFAULT_CHARSET // <=== Font.Color = clWindowText // <=== Font.Height = -11 // <=== Font.Name = 'Tahoma' // <=== Font.Style = [] // <=== OldCreateOrder = True PixelsPerInch = 96 // <=== TextHeight = 13 // <=== end |
AW: Klasse manuell ändern
Hallo smia,
danke für die Antwort, inherited in dfm funktioniert nicht, da delphi dann meckert daß kein Vorfahr für TBaseclass vorhanden ist Ich habe in dfm auf Anzeige auf Text geschaltet, dann inherited eingetragen und beim Rückschalten auf Formular kommt dann die Fehlermeldung Die andern Properties macht ja delphi selber rein, das ist da das Dilemma. Gruß Gargano |
AW: Klasse manuell ändern
Zitat:
Das mag die Delphi IDE überhaupt nicht. Geh' mal zurück zur Unit BaseUnit. Dessen DFM müsste ungefähr so aussehen:
Delphi-Quellcode:
Anstelle DataModule1 steht bei dir der Name, den du dem Datenmodul gegeben hast.
object DataModule1: TBaseClass
OldCreateOrder = False Left = 256 Top = 177 Height = 603 Width = 829 Ganz wichtig:
Delphi-Quellcode:
Ausserdem: Prüfe, ob du in deinem Projekt an einer anderen Stelle schon mal den Namen TBaseClass verwendet hast.
var
DataModule1: TBaseClass; implementation uses ...; {$R *.DFM} // DAS darf auf keinen Fall fehlen!! |
AW: Klasse manuell ändern
Danke shmia, jetzt geht es.
Das Problem war, daß die BaseClass ohne dfm war. Dann kann man natürlich auch nichts ableiten. Gruß Gargano |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 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