AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ereignis erschient nicht im Property editor

Ein Thema von idefix2 · begonnen am 21. Jul 2010 · letzter Beitrag vom 29. Jul 2010
Antwort Antwort
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#1

Ereignis erschient nicht im Property editor

  Alt 21. Jul 2010, 11:06
Hallo,

ich verwende ein Basisformular, das ich der Objektablage hinzugefügt habe. Von dem Formular habe ich einige neue Formulare abgeleitet, das funktioniert soweit wunderbar.
Jetzt wollte ich in meinem Basisformular zwei published Properties vom Typ procedure of object einführen, die werden aber im Object Inspector unter den Ereignissen nicht angezeigt. Was könnte da falsch sein?

Delphi-Quellcode:
type
  proc = procedure of object;
  SatzMode = (modeShow,modeNew,modeCopy,modeEdit);
  TfrmSatz = class(TForm)
      Panel1: TPanel;
      bbOk: TBitBtn;
      bbAbort: TBitBtn;
      procedure bbAbortClick(Sender: TObject);
      procedure bbOkClick(Sender: TObject);
      procedure FormClose(Sender: TObject; var Action: TCloseAction);
    private
      FGetspecial, FSetSpecial: proc;
      FId: integer; // id des aktuellen Datensatzes, bei Neueingabe 0
    protected
      FMode: sSatzMode;
      FAlleSpalten: TStrings; //
      FFrom: String; //
      function GetData: boolean;
    public
      constructor create (AOwner: TComponent; AMode: SatzMode; AId: integer;
                          ASpalten: TStrings; AFrom: String); reintroduce;
      property Mode: SatzMode read FMode;
    published
      property GetSpecial: proc read FGetSpecial write FGetSpecial;
      property SetSpecial: proc read FSetSpecial write FSetSpecial;
    end;
edit:
Ich habe mich jetzt noch ein bißchen gespielt - gar keine von meinen Properties werden angezeigt, ich habe jetzt noch eine integer Property "test" hinzugefügt, auch die gibt es im Object Inspector nicht. Aber Objekte, die ich im Formulardesigner hinzufüge, erscheinen richtig in allen abgeleiteten Formularen.

Geändert von idefix2 (21. Jul 2010 um 12:11 Uhr)
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#2

AW: Ereignis erschient nicht im Property editor

  Alt 22. Jul 2010, 14:41
Keine Vorschläge?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#3

AW: Ereignis erschient nicht im Property editor

  Alt 22. Jul 2010, 14:52
Ich habe mal eine Anleitung von Jeff Overcash gelesen, in der grob beschrieben wird, wie man das macht (sorry, Englisch):

Zitat:
As others have said you need to publish your properties. Second you need a
constructor to set the initial values you want. Finally to see them in the
Object inspector you will need to

1) Add the form to the Repository
2) Add the form to a new package
3) Add a Register procedure to that package and it should read something like

procedure Register
begin
RegisterCustomModule(TWM_FORM, TCustomModule);
end;

4) Install the package.

Now just make sure you inherit from the base form and you should see your additional properties. Do not copy or use the form, but inherit from it.
I'm not certain where RegisterCustomModule is these days, but I'd guess it would be in DesignIDE.
Uwe Raabe
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#4

AW: Ereignis erscheint nicht im Property editor

  Alt 22. Jul 2010, 19:36
Danke für die Antwort.

Ich frage mich, was sich Borland/Embarcadero/wer-auch-immer dabei denken, wenn sie ein Produkt wie Delphi mit wirklich genialen Features herausbringen und das dann durch eine wirklich ganz und gar erbärmliche Produktdokumentation wieder ruinieren.
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#5

AW: Ereignis erschient nicht im Property editor

  Alt 26. Jul 2010, 22:04
Ich muss sagen, ich blicke da einfach nicht durch.

Ich habe jetzt verschiedenes probiert, aber mir ist nicht einmal klar, welche Parameter RegisterCustomModule wirklich braucht. Ich bin aber auch etwas skeptisch, ob das der richtige Ansatz ist, weil im Quelltext von designintf (dort ist registercustommodule definiert) steht vor dieser Prozedur folgender Kommentar:
A custom module allows containers that descend from classes other than TForm to be created and edited by the form designer.
Das will ich ja gar nicht, meine Klassen stammen doch von TForm ab, also dürften es wohl keine Custommodules sein.

Aber vielleicht kann man TForms doch auch irgendwie auf diese Art registrieren, nur wie? In der Unit Forms selbst kommt keine wie auch immer geartete Register-Prozedur vor.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: Ereignis erschient nicht im Property editor

  Alt 27. Jul 2010, 06:34
Also bei mir klappt das.
Habe folgende Schritte durchgeführt:
  1. neues Package erstellt und als Design only markiert
  2. neues Form dem Package hinzugefügt
  3. published properties im Form hinzugefügt
  4. Rechtklick aufs Form und "Add to repository..."
  5. neue Unit dem Package hinzugefügt
  6. procedure Register in diese Unit geschrieben (RegisterCustomModule(TMyForm, TCustomModule); , DesignIntf, DesignEditors ins uses und DesignIde in required Packages)
  7. Package kompiliert und installiert
  8. Unter File->New->Other... mein Form ausgewählt und darunter den RadioButton "Inherit" ausgewählt
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#7

AW: Ereignis erschient nicht im Property editor

  Alt 28. Jul 2010, 19:26
Jetzt gehe ich einmal auf urlaub, dann werde ich die Sache noch einmal mit neuem Schwung angehen.

Im Package landen also zwei Units, die eigentliche Form und die Unit zum Registrieren der Form.
Die register-Prozedur hast Du wahrscheinlich in eine separate Unit geschrieben, damit sie nicht mit einem ganzen Rattenschwanz an zugehörigen Units in die Exe eingebunden wird?

Und noch eine Frage: Wie markiert man ein package als Design only, und was bewirkt das?

Geändert von idefix2 (28. Jul 2010 um 19:31 Uhr)
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#8

AW: Ereignis erschient nicht im Property editor

  Alt 29. Jul 2010, 17:59
Marco Cantu schrieb auch mal etwas zum Thema:

The TCustomModule Class and the RegisterCustomModule Procedure
http://www.marcocantu.com/ddh/ddh15/ddh15e.htm

Auf MustangPeak fand ich dies:

OTA - Forms with Published Properties Visible in the Object Inspector
http://www.mustangpeak.net/ota_publishedprop_forms.htm

Auf SO fand ich unter dieser Frage
http://stackoverflow.com/questions/9...ties-to-a-form

diesen Hinweis zum MustangPeak Artikel:
Zitat:
The article is detailed, but the only part I really needed was RegisterCustomModule. I simply added "RegisterCustomModule(TfrmEasyIPBase, TCustomModule);" to my register unit and everything now works perfectly
Michael Justin
habarisoft.com

Geändert von mjustin (29. Jul 2010 um 18:03 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:01 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