Delphi-PRAXiS

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 Property in abgeleitetem Form (https://www.delphipraxis.net/17982-property-abgeleitetem-form.html)

Stevie 12. Mär 2004 12:46


Property in abgeleitetem Form
 
Hi Leute,

ich hab ein Problem, eine Property in einem von TForm abgeleiteten Formular zu erstellen!
Ich hab in dem published-Abschnitt eine neue property erstellt (Boolean) und read- und write-Zugriff auf eine private-Variable gegeben. Aber diese Eigenschaft erscheint nicht im Objektinspektor! Was mache ich falsch?

DelphiDeveloper 12. Mär 2004 12:53

Re: Property in abgeleitetem Form
 
zeig mal die abgeleitete klasse!

Stevie 12. Mär 2004 12:56

Re: Property in abgeleitetem Form
 
Delphi-Quellcode:
  TStandardForm = class(TForm, IStandardForm)
    ADOConnection: TADOConnection;
    dxBarManager: TdxBarManager;
    ActionList: TActionList;
    ImageList: TImageList;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private-Deklarationen }
    FUseMainConnection: Boolean;
  protected
    MainForm: IMainForm;
  public
    { Public-Deklarationen }
    procedure RegisterForm(AOwner: TComponent);
    procedure UnRegisterForm(AOwner: TComponent);
  published
    property UseMainConnection: Boolean read FUseMainConnection
     write FUseMainConnection stored FUseMainConnection default True;
  end;

DelphiDeveloper 12. Mär 2004 14:30

Re: Property in abgeleitetem Form
 
hi stevie,
da fehlt auf jeden fall sowas wie

RegisterCustomModule(TStandardForm , TCustomModule);

damit die Form in der IDE registriert wird.

das ist aber je nach delphi version ein bißchen anders

google mal nach RegisterCustomModule und deiner Delphi Version

DelphiDeveloper 12. Mär 2004 18:59

Re: Property in abgeleitetem Form
 
jetzt habe ich 2 stunden versucht eine abgeleitete Klasse von TForm
zu erstellen, deren neue events und properties im OI stehen.

Zumindest ueber die die Objektablage hat es geklappt: ( mit D7 Ent)

1. Habe folgendes Formular erstellt

Delphi-Quellcode:
 
unit uFormx;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TFormX = class(TForm)
 private
    fValue: Integer;
    fOnChangeValue: TNotifyEvent;
    procedure SetValue (Value: Integer);
  published
    property Value: Integer
      read fValue write SetValue;
    property OnChangeValue: TNotifyEvent
      read fOnChangeValue write fOnChangeValue;
  end;

var
  FormX: TFormX;

implementation

{$R *.dfm}

{ TForm1 }

procedure TFormX.SetValue(Value: Integer);
begin
   if Value <> fValue then
  begin
    fValue := Value;
    if Assigned (fOnChangeValue) then
      fOnChangeValue (self);
  end;
end;

end.
2. dann dieses Formular der Objektablage hinzugefügt

3. Unit mit Registerfunktion geschrieben

Delphi-Quellcode:
unit uFormXReg;
interface
uses uFormX;

procedure Register;
implementation
uses DesignIntf, DesignEditors;
procedure Register;
begin
  RegisterCustomModule(TFormX, TCustomModule);
end;

end.
4. beide Units in ein entwurfszeit gesteckt und compiliert
Delphi-Quellcode:
package MyPackage;

{$R *.res}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO ON}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS ON}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION ON}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$REFERENCEINFO ON}
{$SAFEDIVIDE OFF}
{$STACKFRAMES OFF}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
{$DESIGNONLY}
{$IMPLICITBUILD OFF}

requires
  rtl,
  vcl,
  designide;

contains
  uFormx in '..\..\..\..\testPropForm\uFormx.pas' {FormX},
  uFormXReg in '..\..\..\..\testPropForm\uFormXReg.pas';


end.
5. Wenn ich nun ueber datei/neu/weitere das Formular aus der Objektablage auswaehle (mit option vererben) sind die properties/events im OI vorhanden.

vielleicht hat ja jemand noch was besseres auf lager

Stevie 22. Mär 2004 07:46

Re: Property in abgeleitetem Form
 
Ich hab auch noch ziemlich rumgebastelt. Dabei hab ich herausgefunden, dass man entweder die Properties genau so in ein Formular bekommt, wie du es gemacht hast. Allerdings funktioniert es dann nicht mehr, dass auf diesem Formular plazierte Komponenten übernommen werden. Dafür sind dann zwei Schritte erforderlich: erst die Properties in ein Form packen, dieses Form erben und dann die Komponenten darauf plazieren. Allerdings hagelt es ordentlich Fehler, wenn man die Properties verändert usw... :-(


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:05 Uhr.

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