AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TDataModule und eine Ableitung

Ein Thema von TRomano · begonnen am 27. Mai 2014 · letzter Beitrag vom 28. Mai 2014
 
Benutzerbild von TRomano
TRomano

Registriert seit: 24. Nov 2004
Ort: Düsseldorf
194 Beiträge
 
Delphi 11 Alexandria
 
#1

TDataModule und eine Ableitung

  Alt 27. Mai 2014, 20:56
Delphi-Version: XE4
Hallo zusammen,

in einem Projekt mit sehr vielen Formularen und Datenmodulen wollte ich ohne großen Aufwand für TForm & TDatamodule jeweils ein paar Properties einführen ... gesagt, getan:

Delphi-Quellcode:
unit EDMExtClasses;

interface
  uses System.Classes, System.SysUtils, System.Types, Vcl.Forms ;

type
  TLanguageTL = (GER,ENG,ZXX);

  TEDMDataModule = class(System.Classes.TDataModule)
   private
     fModuleID : NativeInt;
     fLanguage : TLanguageTL;
     procedure SetModuleID (const Value : NativeInt);
     procedure SetLanguage (const Value : TLanguageTL);
   public
     constructor Create(AOwner : TComponent); override;
     destructor Destroy; override;
   published
     property ModuleID : NativeInt read fModuleID write SetModuleID;
     property Language : TLanguageTL read fLanguage write SetLanguage;
  end;

  TEDMForm = class(TForm)
   private
     fModuleID : NativeInt;
     fLanguage : TLanguageTL;
     procedure SetModuleID (const Value : NativeInt);
     procedure SetLanguage (const Value : TLanguageTL);
   public
     constructor Create(AOwner : TComponent); override;
     destructor Destroy; override;
   published
     property ModuleID : NativeInt read fModuleID write SetModuleID;
     property Language : TLanguageTL read fLanguage write SetLanguage;
  end;

implementation

{ TEDMForm }

constructor TEDMForm.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  fModuleID := -1;
  fLanguage := ZXX;
end;

destructor TEDMForm.Destroy;
begin
  inherited;
end;

procedure TEDMForm.SetLanguage(const Value: TLanguageTL);
begin
  if (Value <> fLanguage) then begin
     fLanguage := Value;
  end;
end;

procedure TEDMForm.SetModuleID(const Value: NativeInt);
begin
  if (Value <> fModuleID) then fModuleID := Value;
end;

{ TEDMDataModule }

constructor TEDMDataModule.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  fModuleID := -1;
  fLanguage := ZXX;
end;

destructor TEDMDataModule.Destroy;
begin
  inherited;
end;

procedure TEDMDataModule.SetLanguage(const Value: TLanguageTL);
begin
  if (Value <> fLanguage) then begin
     fLanguage := Value;
  end;
end;

procedure TEDMDataModule.SetModuleID(const Value: NativeInt);
begin
  if (Value <> fModuleID) then fModuleID := Value;
end;


end.
Der Code (hier im Beispiel nur zwei Properties) wird anstandslos übersetzt. Flugs zum Testen noch das Hauptformular und ein Datenmodul "umbenannt" (einfach im Editor) und gestartet. Es funktioniert einwandfrei ... so lange ich nicht die IDE neustarte, denn dann zeigt sich das DataModule im Gewande eines Formulares (???) und beim nächsten Start des Programmes schmeißt der TReader eine "PropertyNotFound"-Exception, da er "ClientWidth" des Datamodules nicht findet. Wie sollte er auch ?
Aber in der DFM-Datei des Datamodules stehen nun so schöne Sachen, wie Font etc.

Wenn jemand einen Rat hat bin sehr dankbar, denn das verwirrt mich etwas ...

Gruß Thomas
Thomas Forget
  Mit Zitat antworten Zitat
 

 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:07 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