![]() |
Ableitung von TIdTCPServer - Problem mit Konstruktor
Hallo!
Ich hoffe, ihr könnt mir helfen. Ich versuche eine Ableitung von TIdTCPServer zu erstellen. Dabei hab ich ein Problem mit Create.
Delphi-Quellcode:
Wenn ich das override in der Deklaration weglasse, führt er meinen Code nicht aus. Bitte helft mir!!!
type
TMyServer = class(TIdTCPServer) private FUserManager: TIdUserManager; procedure SetUserManager(const Value: TIdUserManager); { Private-Deklarationen } protected { Protected-Deklarationen } public { Public-Deklarationen } constructor Create(AOwner: TComponent); override; destructor Destroy; override; published { Published-Deklarationen } property UserManager: TIdUserManager read FUserManager write SetUserManager; end; procedure Register; implementation procedure Register; begin RegisterComponents('Meine Komponenten', [TMyServer]); end; { TMyServer } constructor TMyServer.Create(AOwner: TComponent); var ACommandHandler: TIdCommandHandler; begin inherited Create(AOwner); // hab auch schon nur inherited probiert SetIntercept(TIdServerIntercept.Create(Self)); FIntercept.Name := 'Intercept'; SetIOHandler(TIdServerIOHandlerSocket.Create(Self)); FIOHandler.Name := 'IOHandler'; SetThreadMgr(TIdThreadMgrDefault.Create(Self)); FThreadMgr.Name := 'ThreadMgr'; SetUserManager(TIdUserManager.Create(Self)); FUserManager.Name := 'UserManager'; FUserManager.CaseSensitiveUsernames := True; FUserManager.CaseSensitivePasswords := True; ACommandHandler := FCommandHandlers.Add; ACommandHandler.Command := '/quit'; ACommandHandler.Disconnect := True; ACommandHandler.Name := 'CommandHandlerQuit'; ACommandHandler.OnCommand := CommandHandlerQuitCommand; ACommandHandler.ReplyNormal.NumericCode := CodeCommandQuit; ACommandHandler.ReplyNormal.Text.Add(TextCommandQuit); end; |
Re: Ableitung von TIdTCPServer - Problem mit Konstruktor
Moin Stevie,
Zitat:
|
Re: Ableitung von TIdTCPServer - Problem mit Konstruktor
Öhm, was red (schreib) denn da??? Natürlich darf ich das override nicht weglassen! Mien Prob ist, dass die Erstellung dieser Komponenten
Delphi-Quellcode:
nicht so geschieht, wie wenn ich sie auf ein Form packen würde und die beim TIdTCPServer eintragen würde! Warum?
SetIntercept(TIdServerIntercept.Create(Self));
FIntercept.Name := 'Intercept'; SetIOHandler(TIdServerIOHandlerSocket.Create(Self)); FIOHandler.Name := 'IOHandler'; SetThreadMgr(TIdThreadMgrDefault.Create(Self)); FThreadMgr.Name := 'ThreadMgr'; |
Re: Ableitung von TIdTCPServer - Problem mit Konstruktor
Moin Stevie,
was passiert denn nicht so wie gewünscht? |
Re: Ableitung von TIdTCPServer - Problem mit Konstruktor
Die Komponenten, die ich erstellen möchte, werden zwar in den Eigenschaften angezeigt, aber unter Methoden erscheinen sie nicht.
Wenn ich zum Beispiel ein TIdServerIOHandlerSocket auf das Form packe, wird es in der Dropdown-Liste von TIdTCPServer angezeigt. Wähle ich es aus, steht unter Ereignisse das Ding und wenn ich auf das Plus klicke, kann ich das Ereignis OnStatus sehen. Mach ich das so, wie oben beschrieben, dann taucht es eben nicht auf. Ich hab auch schon das hier versucht(klappt aber ebenso wenig):
Delphi-Quellcode:
IOHandler := TIdServerIOHandlerSocket.Create(Self);
IOHandler.Name := 'IOHandler'; |
Re: Ableitung von TIdTCPServer - Problem mit Konstruktor
Moin Stevie,
Zitat:
Welches Plus? Beide Kompos haben ein OnStatus Ereignis, und das was bei Deiner Kompo zu sehen sein dürfte wäre das des TidTCPServers. |
Re: Ableitung von TIdTCPServer - Problem mit Konstruktor
Liste der Anhänge anzeigen (Anzahl: 3)
Ich hab mal drei Screenshots gemacht, die das erklären dürften.
Bei dem ersten hab ich ganz normal einen TIdTCPServer auf ein Formular gepackt, außerdem noch TIdThreedMgrDefault und TIdServerIOHandlerSocket. Die beiden hab ich dann beim TIdTCPServer unter ThreadMgr und IOHandler eingetragen. Bei dem zweiten und dritten hab ich meine Komponente genommen, in der ich im Konstruktor diese beiden Komponenten wie schon weiter oben gezeigt eingefügt habe. Das Problem scheint doch zu sein, dass die Komponenten nicht richtig angelegt werden, oder? Auf jeden Fall nicht so, als wenn ich sie "ganz normal" erstelle. Kann mir jetzt jemand helfen??? |
Re: Ableitung von TIdTCPServer - Problem mit Konstruktor
Moin Stevie,
jetzt hab' ich das mit dem Plus verstanden ;-) So sieht es, wenn ich die Kompos manuell auf das Formular lege nämlich unter D5 nicht aus. Da ist es so wie bei Deinem dritten Screenshot. Eine Idee: Benutze mal als Owner nicht self, sondern AOwner. Sollte das auch noch nicht weiterhelfen, könntest Du mal versuchen, ob es einen Unterschied macht (kann ich mir bei dieser Kompo eigentlich nicht vorstellen...), wenn Du die Unterkompos in der Methode CreateWnd erzeugst (wichtig: Sicherstellen, dass dies dort nur einmal geschieht). Beispiele für ![]() |
Re: Ableitung von TIdTCPServer - Problem mit Konstruktor
:dancer: Jippieeeeeee! Mit AOwner klappt es!!!!! :dancer2:
... Bleiben nur noch dröfundneunzig andere Probleme! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 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-2025 by Thomas Breitkreuz