AGB  ·  Datenschutz  ·  Impressum  







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

Event zur DesignTime benutzen

Ein Thema von arbu man · begonnen am 11. Mär 2008 · letzter Beitrag vom 28. Mär 2008
Antwort Antwort
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#1

Event zur DesignTime benutzen

  Alt 11. Mär 2008, 18:10
Hallo,

ich möchte eine Komponente schreiben. Diese Komponente hat eine Collection. Jedes Item dieser Collection soll nun ein Event haben. Soweit klappt auch alles, wenn ich jedoch im OI dieses Event benutzen will erhalte ich folgende Meldung: "Für eine unbekannt Komponente kann keine Methode erstellt werden.". Was muss ich machen um Events nutzen zu können ?

mfg, Björn
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Event zur DesignTime benutzen

  Alt 11. Mär 2008, 18:39
Auf welchen Typ willst du den Event denn binden?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#3

Re: Event zur DesignTime benutzen

  Alt 11. Mär 2008, 19:48
Ich habe für das Event einen Eigenen Typ definiert:
Delphi-Quellcode:
  TExecuteFunction = procedure(Sender: TObject; const AParams: array of Variant;
      var ReturnValue: Variant) of object;
Das Event selbst ist eine einfache property:
Delphi-Quellcode:
  published
    ...
    property OnExecute: TExecuteFunction read FOnExecute write FOnExecute;
  end;
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Event zur DesignTime benutzen

  Alt 11. Mär 2008, 20:16
Und für welche Komponente?
Markus Kinzler
  Mit Zitat antworten Zitat
bluesbear

Registriert seit: 14. Dez 2005
Ort: Hahnstätten
355 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Event zur DesignTime benutzen

  Alt 11. Mär 2008, 20:41
Die Deklaration des Events scheint mir völlig OK, aber die Fehlermeldung ist sehr merkwürdig. Wieso ist die Komponente "unbekannt"?
Klaus M. Hoffmann
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#6

Re: Event zur DesignTime benutzen

  Alt 11. Mär 2008, 21:00
Also ich habe eine normale Komponente die halt eine Collection hat...
Delphi-Quellcode:
type
  TScriptFunctions = class;

  TScriptFunction = class(TCollectionItem)
  private
    FOwner: TScriptFunctions;
    FFunctionName: string;
    FOnExecute: TExecuteFunction;
    FOnAfterCall: TNotifyEvent;
    procedure SetOnAfterCall(const Value: TNotifyEvent);
  protected
    function GetDisplayName: string; override;
  public
    constructor Create(ACollection: TCollection); override;
    destructor Destroy; override;
    procedure Assign(Source: TPersistent); override;
  published
    property FunctionName: string read FFunctionName write FFunctionName;
    property OnExecute: TExecuteFunction read FOnExecute write FOnExecute;
  end;

  { TScriptFunctions }

  TScriptFunctions = class(TCollection)
  private
    function GetItem(Index: Integer): TScriptFunction;
    procedure SetItem(Index: Integer; Value: TScriptFunction);
  public
    constructor Create;
    destructor Destroy; override;
    function Add: TScriptFunction;
    function CountFunctionName(const AFunctionName: string): integer;
    function FindFunctionName(const AFunctionName: string): TScriptFunction;
    procedure ListFunctionName(const AList: TStrings);
    property Items[Index: Integer]: TScriptFunction read GetItem write SetItem; default;
  end;

  TScriptEngine = class(TComponent)
  private
    FFunctions: TScriptFunctions;
  public
    constructor Create(AOwner: TComponent); override;
  published
    property Functions: TScriptFunctions read FFunctions;
  end;
Warum die Komponente unbekannt sein soll kann ich mir nicht erklären, ich ziehe die Komponente über die Palette auf die Form. Vielleicht könnte es daran liegen das die Klassen TScriptFunctions und TScriptFunction nirgentwo Registriert werden, wenn das überhaupt möglich ist diese zu registrieren.
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#7

Re: Event zur DesignTime benutzen

  Alt 13. Mär 2008, 13:41
Schieb
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
bluesbear

Registriert seit: 14. Dez 2005
Ort: Hahnstätten
355 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Event zur DesignTime benutzen

  Alt 13. Mär 2008, 14:35
Also ich würde sagen, Du musst Deiner TScriptEngine einen published event OnExecute verpassen, und die OnExecute der TScriptFunction->Objekte entsprechend durchreichen.
Das Du im OI überhaupt so weit kommst eine Fehlermeldung zu erhalten..
Wird da etwa im OI das OnExecute der TScriptFunction angezeigt??? Das wär ja krass!
Klaus M. Hoffmann
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#9

Re: Event zur DesignTime benutzen

  Alt 28. Mär 2008, 20:01
Ich hab es jetzt geschafft, der Fehler lag darin das die Collection von TCollection abgeleitet war. Damit man Events benutzen kann muss man die Collection von TOwnedCollection ableiten.

mfg, Björn
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  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 13:21 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