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 [D9PE | Komponente erstellen] - Events unterteilen ?!? (https://www.delphipraxis.net/73188-%5Bd9pe-%7C-komponente-erstellen%5D-events-unterteilen.html)

Amnon82 13. Jul 2006 12:23


[D9PE | Komponente erstellen] - Events unterteilen ?!?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich bastel grad an meiner ersten Komponente. Kann man die Events und Properties auch nach eigenen Wünschen unterteilen,
oder ist man auf "Miscellaneous" angewiesen?

Hier mein PublishCode:

Delphi-Quellcode:
TDA_IrcClient = class(TComponent)

published
  {PROPERTIES}
  property Versionsantwort: Tstr200max read FVersionsantwort write FVersionsantwort;
  property Benutzername: String read FBenutzerName write FBenutzername;
  property EchterName: String read FEchterName write FEchtername;
  property EmailAddr: String read FEmailAddr write FEmailAddr;
  property NickName: String read FNickname write FNickname;
  property AltNickName: String read FAltNick write FAltNick;
  property IrcAddr: String read Fircaddr write Fircaddr;
  property IrcPort: Integer read FIRCPort write FIRCPort;
  property IrcPassword: String read FIrcpassword write FIrcpassword;
  property PingAntwort: TManuellAuto read FPingAntwort write FPingAntwort;
  property AendereAltNick: TManuellAuto read FAendereAltNick write FAendereAltNick;
  property BeendenNachricht: Tstr200max read FBeendenNachricht write FBeendenNachricht;
  property Tag: Integer read FTag write FTag;
  {EVENTS} 
  property BeiVerbindung: TSocketNotifyEvent read FBeiVerbindung write FBeiVerbindung;
  property BeiTrennung: TSocketNotifyEvent read FBeiTrennung write FBeitrennung;
  property BeiFehler: TSocketErrorEvent read FBeiFehler write FBeiFehler;
  property BeiPing: TIDPing read FBeiPing write FBeiPing;
  property BeiLokalerServerKick: TIDKickNachricht read FLokalerServerKickNachricht write FLokalerServerKickNachricht;
  property BeiHauptserverKick: TIDKickNachricht read FHauptserverKickNachricht write FHauptserverKickNachricht;
  property BeiCTCPAktion: TIDBeiCTCPAktion read FBeiCTCPAktion write FBeiCTCPAktion;
  property BeiRohDaten: TIDRohDaten read FBeiRohDaten write FBeiRohDaten;
  property BeiHauptserverChannelNachricht: TIDChannelNachricht read FBeiHauptserverChannelNachricht write FBeiHauptserverChannelNachricht;
  property BeiLokalerServerChannelNachricht: TIDChannelNachricht read FBeiLokaleServerChannelNachricht write FBeiLokaleServerChannelNachricht;
  property BeiHauptserverNotizNachricht: TIDBeiNotizOeffentlicherNachricht read FBeiHauptserverNotizNachricht write FBeiHauptserverNotizNachricht;
  property BeiLokalerServerNotizNachricht: TIDBeiNotizOeffentlicherNachricht read FBeiLokalerServerNotizNachricht write FBeiLokalerServerNotizNachricht;
  property BeiPrivaterNachricht: TIDPrivateNachricht read FBeiPrivaterNachricht write FBeiPrivaterNachricht;
  property BeiNotizPrivaterNachricht: TIDBeiNotizPrivaterNachricht read FBeiNotizPrivaterNachricht write FBeiNotizPrivaterNachricht;
  property BeiNickAenderung: TIDBeiNickAenderung read FBeiNickAenderung write FBeiNickAenderung;
  property BeiBetretenNachricht: TIDBeiBetretenNachricht read FBeiBetretenNachricht write FBeiBetretenNachricht;
  property BeiVerlassenNachricht: TIDBeiVerlassenNachricht read FBeiVerlassenNachricht write FBeiVerlassenNachricht;
  property BeiBeendenNachricht: TIDBeiBeendenNachricht read FBeiBeendenNachricht write FBeiBeendenNachricht;
  property BeiDccEmpfang: TDccEmpfang read FDccEmpfang write FDccEmpfang;
  property BeiDccAkzeptierung: TDccFortsetzen read FDccAccept write FDccAccept;
  property BeiDccFortsetzen: TDccFortsetzen read FDccFortsetzen write FDccFortsetzen;
  property BeiDccChat: TDccChat read FDccChat write FDccChat;
  property BeiVersionsAnfrage: TIDBeiVersionsAnfrage read FBeiVersionsAnfrage write FBeiVersionsAnfrage;
  property BeiZeitAnfrage: TIDBeiZeitAnfrage read FBeiZeitAnfrage write FBeiZeitAnfrage;
  property BeiTopic: TIDChannelTopic read FBeiTopic write FBeiTopic;
  property BeiNamen: TIDChannelNamen read FBeiNamen write FBeiNamen;
  property BeiNamenListe: TIDEndeChannelNamen read FBeiNamenListe write FBeiNamenListe;
  property BeiNickInBenutzung: TIDNicknameInBenutzung read FBeiNicknameInBenutzung write FBeiNicknameInBenutzung;
  property BeiUndefinierteNummern: TIDUndefinierteNummern read FBeiUndefinierteNummern write FBeiUndefinierteNummern;
  property BeiUnbekannterCTCPAntwort: TIDBeiUnbekannterCTCPAntwort read FBeiUnbekannterCTCPAntwort write FBeiUnbekannterCTCPAntwort;
  property BeiHauptserverTopicNachricht: TIDTopicNachricht read FBeiHauptserverTopicNachricht write FBeiHauptserverTopicNachricht;
  property BeiLocalerServerTopicNachricht: TIDTopicNachricht read FBeiLokalerServerTopicNachricht write FBeiLokalerServerTopicNachricht;

Meflin 13. Jul 2006 13:28

Re: [D9PE | Komponente erstellen] - Events unterteilen ?!?
 
Irgendwie muss das gehen - einige kommerzielle Komponenten die ich kenne tun das ja auch - wie wüsste ich allerdings auch gerne :gruebel:


jfheins 13. Jul 2006 22:22

Re: [D9PE | Komponente erstellen] - Events unterteilen ?!?
 
Ich weis es :stupid:

Über die (dokumentierte, nur schlecht auffindbar) Funktion
Delphi-Quellcode:
RegisterPropertyInCategory(); // Nein, F1 bringt nix ^^
kann man eine property in eine Kategorie bringen ;)

Zur Dokumentation: In der Hilfe nach "Eigenschaftskategorien" suchen ;)

Und nächstes mal suchen ... Google spuckt massenhaft Treffer zu obiger funktion aus :mrgreen:

jbg 13. Jul 2006 23:35

Re: [D9PE | Komponente erstellen] - Events unterteilen ?!?
 
Zitat:

Zitat von Amnon82
Delphi-Quellcode:
property BeiLocalerServerTopicNachricht: TIDTopicNachricht read FBeiLokalerServerTopicNachricht write FBeiLokalerServerTopicNachricht;

Warum haben eigentlich alle "normalen" Komponenten ein "On..." bei den Events? Deine Komponente aber nicht.

jfheins 14. Jul 2006 13:31

Re: [D9PE | Komponente erstellen] - Events unterteilen ?!?
 
Weil er (entgegen den normalen Standards) in Deutsch programmiert ... nichts für ungut, @Annon, es ist natürlich deine Sache, die Bezeichner deutsch zu machen, allerdings empfehle ich dir, solltest mit anderen zusammenarbeiten oder so, den Quellcode komplett und konsistent in Englisch zu halten ;)

Amnon82 16. Jul 2006 07:03

Re: [D9PE | Komponente erstellen] - Events unterteilen ?!?
 
Ich habs nun ins Englische übersetzt. Danke noch mal. Werds gleich ausprobieren.

Amnon82 16. Jul 2006 08:01

DesignIntf - D9PE ?!?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab mir nochmal diesen Thread durchgelesen.

Für "RegisterPropertyInCategory" braucht man die DesignIntf.dcu

Delphi-Quellcode:
[Fatal Error] DA_IrcClient.pas(12): F1026 File not found: 'DesignIntf.dcu'
Hier nochmal der Part mit der Registrierung in englischer Form:

Delphi-Quellcode:
{******************************************************************}
{                                                                  }
{ Delhiarea-IRC-Components 0.1.2 by Amnon82 (C)2006 AMSOFT        }
{                                                                  }
{******************************************************************}

unit DA_IrcClient;

interface

uses
  Windows, SysUtils, Classes, ScktComp, WinSock, DA_CutBreak{, DesignIntf, DesignEditors};

type
  TDA_IrcClient = class;
  Tstr200max                        = String[200];
  TManualAuto                       = (Manual, Auto);
  TIDOnUnknownCTCPAnswer            = procedure(Sender: TDA_IrcClient; LongNick: string; Nick: string; CTCPOrder: string; CTCPRequest: string; var CTCPAnswer: string; RawData: string) of object;
  TIDOnCTCPAction                   = procedure(Sender: TDA_IrcClient; LongNick: string; Nick: string; MSGToSend: string; Action: string; RawData: string) of object;
  TIDPing                           = procedure(Sender: TDA_IrcClient; AutoAnswer: string; RawData: string) of object;
  TDccGet                           = procedure(Sender: TDA_IrcClient; LongNick: string; Nick: string; FileName, SenderIPAddresse: string; Port: integer; BytesToGet: Longint) of object;
  TDccResume                        = procedure(Sender: TDA_IrcClient; LongNick: string; Nick: string; FileName: string; Port: integer; BytesToGet: Longint) of object;
  TDccChat                          = procedure(Sender: TDA_IrcClient; LongNick: string; Nick: string; SenderIPAddress: string; Port: integer) of object;
  TIDRawData                        = procedure(Sender: TDA_IrcClient; RawData: string) of object;
  TIDKickMSG                        = procedure(Sender: TDA_IrcClient; LongNick: string; Nick: string; Channel: string; KickMSG: string; RawData: string) of object;
  TIDTopicMSG                       = procedure(Sender: TDA_IrcClient; LongNick: string; Nick: string; Channel: string; MSG: string; RawData: string) of object;
  TIDChannelMSG                     = procedure(Sender: TDA_IrcClient; LongNick: string; Nick: string; Channel: string; MSG: string; RawData: string) of object;
  TIDPrivateMSG                     = procedure(Sender: TDA_IrcClient; LongNick: string; Nick: string; Priv: string; MSG: string; RawData: string) of object;
  TIDOnNoticePrivateMSG             = procedure(Sender: TDA_IrcClient; LongNick: string; Nick: string; Notice: string; MSG: string; RawData: string) of object;
  TIDOnNoticePublicMSG              = procedure(Sender: TDA_IrcClient; LongNick: string; Nick: string; Notice: string; MSG: string; RawData: string) of object;
  TIDOnJoinMSG                      = procedure(Sender: TDA_IrcClient; LongNick: string; Nick: string; Channel: string; RawData: string) of object;
  TIDOnPartMSG                      = procedure(Sender: TDA_IrcClient; LongNick: string; Nick: string; Channel: string; RawData: string) of object;
  TIDOnCloseMSG                     = procedure(Sender: TDA_IrcClient; LongNick: string; Nick: string; CloseMSG: string; RawData: string) of object;
  TIDOnNickChange                   = procedure(Sender: TDA_IrcClient; OldLongNick: string; OldShortNick: string; NewNick: string; RawData: string) of object;
  TIDOnVersionRequest               = procedure(Sender: TDA_IrcClient; LongNick: string; Nick: string; RawData: string) of object;
  TIDOnTimeRequest                  = procedure(Sender: TDA_IrcClient; LongNick: string; Nick: string; Var TimeAnswer: string; RawData: string) of object;

  TIDChannelNames                   = procedure(Sender: TDA_IrcClient; LongNick: string; chan: string; NickName: string; RawData: string) of object;
  TIDChannelNamesEnd                = procedure(Sender: TDA_IrcClient; Channel: string; RawData: string) of object;
  TIDChannelTopic                   = procedure(Sender: TDA_IrcClient; Channel: string; Topic: string; RawData: string) of object;
  TIDNickInUse                      = procedure(Sender: TDA_IrcClient; NickInUse: string; RawData: string) of object;
  TIDUnknownNumbers                 = procedure(Sender: TDA_IrcClient; Number: string; RawData: string) of object;

// type TSocketNotifyEvent = procedure (Sender: TObject; Socket: TCustomWinSocket) of object;

TDA_IrcClient = class(TComponent)
 Private
  { Private declarations }
  CutBreak1: TDA_CutBreak;
  CutBreak2: TDA_CutBreak;
  tmplist: TStringList;
  destroyb: Boolean;
  procedure TriggerOnDataAvailable(Sender: TObject; Socket: TCustomWinSocket);
  procedure TriggerOnDataSend(Sender: TObject; Socket: TCustomWinSocket);
  procedure TriggerOnConnection(Sender: TObject; Socket: TCustomWinSocket);
  procedure TriggerOnDisconnection(Sender: TObject; Socket: TCustomWinSocket);
  procedure TriggerOnErrorMSG(Sender: TObject; Socket: TCustomWinSocket; FehlerEvent: TErrorEvent; var FehlerCode: Integer);
  procedure WorkOnMSG(Sender: TDA_IrcClient; MSGList: Tstringlist; RawData: String);
  procedure WorkOnCTCPMSG(Sender: TDA_IrcClient; LongNick : String; Nick: String; Source: String; MSGList: TStringList; RawData: String);
  procedure WorkOnUndefinierteMSG(Sender: TDA_IrcClient; numerisch: Word; MSGList : Tstringlist; RawData: String);
  function isInteger(szString: String):Boolean;
  function CopyFrom(const S: String; const Start: Integer): String;
  function CopyAt(const S: String; const SearchFor: String; const Start: Integer): String;
  function CopyLeft(const S: String; const Count: Integer): String;
 protected
  { Protected declarations }
  FInBuf: String;
  FUserName: String;
  FRealName: String;
  FIRCHost: String;
  FIRCPort: Integer;
  FEmail: String;
  FNickname: String;
  FAltNick: String;
  FIrcPassword: String;
  FPingAnswer: TManualAuto;
  FChangeAltNick: TManualAuto;
  FOnPing: TIDPing;
  FOnCTCPAction: TIDOnCTCPAction;
  FOnRawData: TIDRawData;
  FOnMainServerChannelMSG: TIDChannelMSG;
  FOnLocalServerChannelMSG: TIDChannelMSG;
  FOnMainServerTopicMSG: TIDTopicMSG;
  FOnLocalServerTopicMSG: TIDTopicMSG;
  FOnMainServerNoticeMSG: TIDOnNoticePublicMSG;
  FOnLocalServerNoticeMSG: TIDOnNoticePublicMSG;
  FOnPrivateMSG: TIDPrivateMSG;
  FOnNoticePrivateMSG: TIDOnNoticePrivateMSG;
  FOnJoinMSG: TIDOnJoinMSG;
  FOnPartMSG: TIDOnPartMSG;
  FOnCloseMSG: TIDOnCloseMSG;
  FMainServerKickMSG: TIDKickMSG;
  FLocalServerKickMSG: TIDKickMSG;
  FOnNickChange: TIDOnNickChange;
  FOnVersionRequest: TIDOnVersionRequest;
  FOnTimeRequest: TIDOnTimeRequest;
  FDccGet: TDccGet;
  FDccAccept: TDccResume;
  FDccResume: TDccResume;
  FDccChat: TDccChat;
  FOnUnknownCTCPAnswer: TIDOnUnknownCTCPAnswer;
  FOnNames: TIDChannelNames;
  FOnNamesList: TIDChannelNamesEnd;
  FOnTopic: TIDChannelTopic;
  FOnNickInUse: TIDNickInUse;
  FOnUnknownNumbers: TIDUnknownNumbers;
  FCloseMSG: Tstr200max;
  FVersionAnswer: Tstr200max;
  FTag: integer;
  FOnDataAvailable: TSocketNotifyEvent;
  FOnDataSend: TSocketNotifyEvent;
  FOnConnection: TSocketNotifyEvent;
  FOnDisconnection: TSocketNotifyEvent;
  FOnError: TSocketErrorEvent;
 public
  { Public declarations }
  ConnectIt: TClientSocket;
  constructor Create(AOwner: TComponent); override;
  destructor Destroy; override;
  procedure Close;
  procedure Connect;
  procedure SelfInvisible;
  procedure SelfVisible;
  procedure KickUser(Channel, NickName, Grund: String);
  procedure DeBanUser(Channel, UserHostMask: String);
  procedure BanUser(Channel, UserHostMask: String);
  procedure DeVoiceUsers(Channel, UserNickname: String);
  procedure VoiceUsers(Channel, UserNickname: String);
  procedure DeopUsers(Channel, UserNickname: String);
  procedure OpUsers(Channel, UserNickname: String);
  procedure ChannelMode(Channel, Mode, Param: String);
  procedure UserMode(Mode: String);
  procedure ChangeNick(Nickname: String);
  procedure Join(Channel: String);
  procedure Part(Channel: String);
  procedure SendPrivateMSG(Nickname, MSG: String);
  procedure SendRawData(ZuSenddeMSG: String);
  function LongIPtoPointIP(value: LongWord): String;
  function PointIPtoLongIP(str: PChar): LongWord;
  function SendChannelMSG(Chan, MSG: String): Boolean;
 published
  { Published declarations }
  property VersionAnswer: Tstr200max read FVersionAnswer write FVersionAnswer;
  property UserName: String read FUserName write FUserName;
  property RealName: String read FRealName write FRealName;
  property Email: String read FEmail write FEmail;
  property NickName: String read FNickname write FNickname;
  property AltNickName: String read FAltNick write FAltNick;
  property IRCHost: String read FIRCHost write FIRCHost;
  property IrcPort: Integer read FIRCPort write FIRCPort;
  property IrcPassword: String read FIrcpassword write FIrcpassword;
  property PingAnswer: TManualAuto read FPingAnswer write FPingAnswer;
  property ChangeAltNick: TManualAuto read FChangeAltNick write FChangeAltNick;
  property CloseMSG: Tstr200max read FCloseMSG write FCloseMSG;
  property Tag: Integer read FTag write FTag;
  property OnConnection: TSocketNotifyEvent read FOnConnection write FOnConnection;
  property OnDisconnection : TSocketNotifyEvent read FOnDisconnection write FOnDisconnection ;
  property OnError: TSocketErrorEvent read FOnError write FOnError;
  property OnPing: TIDPing read FOnPing write FOnPing;
  property OnLocalServerKick: TIDKickMSG read FLocalServerKickMSG write FLocalServerKickMSG;
  property OnMainServerKick: TIDKickMSG read FMainServerKickMSG write FMainServerKickMSG;
  property OnCTCPAction: TIDOnCTCPAction read FOnCTCPAction write FOnCTCPAction;
  property OnRawData: TIDRawData read FOnRawData write FOnRawData;
  property OnMainServerChannelMSG: TIDChannelMSG read FOnMainServerChannelMSG write FOnMainServerChannelMSG;
  property OnLocalServerChannelMSG: TIDChannelMSG read FOnLocalServerChannelMSG write FOnLocalServerChannelMSG;
  property OnMainServerNoticeMSG: TIDOnNoticePublicMSG read FOnMainServerNoticeMSG write FOnMainServerNoticeMSG;
  property OnLocalServerNoticeMSG: TIDOnNoticePublicMSG read FOnLocalServerNoticeMSG write FOnLocalServerNoticeMSG;
  property OnPrivateMSG: TIDPrivateMSG read FOnPrivateMSG write FOnPrivateMSG;
  property OnNoticePrivateMSG: TIDOnNoticePrivateMSG read FOnNoticePrivateMSG write FOnNoticePrivateMSG;
  property OnNickChange: TIDOnNickChange read FOnNickChange write FOnNickChange;
  property OnJoinMSG: TIDOnJoinMSG read FOnJoinMSG write FOnJoinMSG;
  property OnPartMSG: TIDOnPartMSG read FOnPartMSG write FOnPartMSG;
  property OnCloseMSG: TIDOnCloseMSG read FOnCloseMSG write FOnCloseMSG;
  property OnDccGet: TDccGet read FDccGet write FDccGet;
  property OnDccAccept: TDccResume read FDccAccept write FDccAccept;
  property OnDccResume: TDccResume read FDccResume write FDccResume;
  property OnDccChat: TDccChat read FDccChat write FDccChat;
  property OnVersionRequest: TIDOnVersionRequest read FOnVersionRequest write FOnVersionRequest;
  property OnTimeRequest: TIDOnTimeRequest read FOnTimeRequest write FOnTimeRequest;
  property OnTopic: TIDChannelTopic read FOnTopic write FOnTopic;
  property OnNames: TIDChannelNames read FOnNames write FOnNames;
  property OnNamesList: TIDChannelNamesEnd read FOnNamesList write FOnNamesList;
  property OnNickInUse: TIDNickInUse read FOnNickInUse write FOnNickInUse;
  property OnUnknownNumbers: TIDUnknownNumbers read FOnUnknownNumbers write FOnUnknownNumbers;
  property OnUnknownCTCPAnswer: TIDOnUnknownCTCPAnswer read FOnUnknownCTCPAnswer write FOnUnknownCTCPAnswer;
  property OnMainServerTopicMSG: TIDTopicMSG read FOnMainServerTopicMSG write FOnMainServerTopicMSG;
  property OnLocalerServerTopicMSG: TIDTopicMSG read FOnLocalServerTopicMSG write FOnLocalServerTopicMSG;
  end;

procedure Register;

const
 CR = #13;
 LF = #10;
 CRLF = #13#10;
 Version = 'TDA_IrcClient 0.1.2 - (C) 2006 by AMSOFT and DELPHIAREA';

var
 CuttedMSG:String;

implementation

// Komponente registrieren

procedure Register;
begin
 RegisterComponents('Delphiarea', [TDA_IrcClient]);
 //Mal ein Beispiel, was noch nicht klappt:
 //RegisterPropertyInCategory('DCC', TDA_IrcClient, 'OnDccAccept');
end;
Ich würde gerne die Properties ordnen. Zum Beispiel alles was mit DCC zu tun hat in eine Kategorie 'DCC'. Muss man eine CustomCategory definieren oder reicht zum Beispiel:

Delphi-Quellcode:
RegisterPropertyInCategory('DCC', TDA_IrcClient, 'OnDccAccept');
... hoffe es klappt trotz D9PE ...

Im Anhang ein Screenshot mit allem was ich unter "Design" gefunden hab ...

Delphi-Quellcode:
package DA_IRCComponents;

{$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}
{$DESCRIPTION 'AMSOFT|DELPHIAREA - IRC Components 0.1.2 - Alpha build'}
{$IMPLICITBUILD OFF}

requires
  rtl,
  vcl,
  designide;

contains
  DA_IrcClient in 'DA_IrcClient.pas',
  DA_CutBreak in 'DA_CutBreak.pas';

end.
designide.dcp bringt auch nichts:

Delphi-Quellcode:
[Error] DA_IrcClient.pas(1257): E2003 Undeclared identifier: 'RegisterPropertyInCategory'
[Fatal Error] DA_IRCComponents.dpk(35): F2063 Could not compile used unit 'DA_IrcClient.pas'


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:43 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