![]() |
Auf Objekte von Unterklasse aus Zugreifen
Hi,
hab ne Unit fmChatClient (Hauptformular) die nen Formular hat mit nem MemoFeld namens mProtokoll. In der Unit lade ich ne Klasse ChatClient.
Delphi-Quellcode:
unit fmChatClient;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, mChatClient; type TfChatClient = class(TForm) eServerIP: TEdit; eZuSendenderText: TEdit; bSenden: TButton; bVerbinden: TButton; bTrennen: TButton; bBeenden: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; mProtokoll: TMemo; procedure bVerbindenClick(Sender: TObject); procedure bTrennenClick(Sender: TObject); procedure bSendenClick(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure bBeendenClick(Sender: TObject); procedure FormCreate(Sender: TObject); private zServerIP: string; zVerbunden: boolean; public { Public-Deklarationen } end; var fChatClient: TfChatClient; hatVerbindung: chatClient; Diese hat die Variable kenntChatFormular. Die das obrige Formular repräsentieren soll. Über die möchte ich jetz auf das Memofeld zugreifen.
Delphi-Quellcode:
unit mChatClient;
interface uses mCLientverbindung, Forms; type ChatClient= class(ClientVerbindung) private kenntChatFormular:TForm; public constructor init(pIPAdresse:string; pPortNR:integer; pMitProtokoll: boolean; pFormular:TForm); procedure bearbeiteNachricht(pNachricht:string);override; end; implementation uses fmChatClient; constructor ChatClient.init(pIPAdresse:string; pPortNR:integer; pMitProtokoll: boolean; pFormular:TForm); begin inherited init(pIPAdresse, pPortNR, pMitProtokoll); kenntChatFormular := fChatClient; end; procedure ChatClient.bearbeiteNachricht(pNachricht:string); begin //ShowMessage('hab was: ' + pNachricht); //kenntChatFormular.mProtokoll.Lines.Add(pNachricht); end; Aber das geht leider nicht so :'( Kann mir einer helfen?! Danke |
Re: Auf Objekte von Unterklasse aus Zugreifen
Hallo,
in der Deklaration von TfChatClient fügst Du unter public folgendes ein:
Delphi-Quellcode:
Da eine TForm nicht wissen kann, was ein abgeleitetes Objekt so alles besitzt, musst Du in Deinem Fall einen Typecast durchführen. Oder Du deklarierst kenntChatFormular gleich vom Typ TfChatClient.
public
{ Public-Deklarationen } property ProtokollMemo:TMemo read mProtokoll write mProtokoll; end;
Delphi-Quellcode:
procedure ChatClient.bearbeiteNachricht(pNachricht:string);
begin ShowMessage('hab was: ' + pNachricht); TfChatClient(kenntChatFormular).ProtokollMemo.Lines.Add(pNachricht); end; |
Re: Auf Objekte von Unterklasse aus Zugreifen
Zitat:
Delphi-Quellcode:
procedure ChatClient.bearbeiteNachricht(pNachricht:string);
begin ShowMessage('hab was: ' + pNachricht); TfChatClient(kenntChatFormular).mProtokoll.Lines.Add(pNachricht); end; |
Re: Auf Objekte von Unterklasse aus Zugreifen
Hallo,
@Stevie: Dein Oberlehrer-Gehabe kannst Du in Zukunft unterlassen. Das Dein Vorschlag auch geht, ist mir sehr wohl bewusst. Dies ist aber aus meiner Sicht schlechter Programmierstil. Nicht umsonst gibt es Properties. |
Re: Auf Objekte von Unterklasse aus Zugreifen
Zitat:
Aber Elemente auf einem Form sind ja schon published, ist das dann schlecht, wenn man auch drauf zugreift? Sonst wären sie ja nicht published, oder? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 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 by Thomas Breitkreuz