Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Untermenüs eigener Komponenten erstellen ? (https://www.delphipraxis.net/30109-untermenues-eigener-komponenten-erstellen.html)

himmelweiss 20. Sep 2004 10:48


Untermenüs eigener Komponenten erstellen ?
 
Moin,

ich komm irgendwie garnicht klar damit wie man so verschachtelungen macht für seine Eigenen Komponenten.
Also ich meine sowas wie das hier z.B:

Code:
WOEmailClient1.Mailbox.Messages

also die .Mailbox funktion is ja kein problem....
Code:
procedure TWOEMailClient.Mailbox(ChooseMailBox: String);
begin
    vidimap4.SelectMailBox(ChooseMailBox);
end;
Wie aber krieg ich .Messages hinter .Mailbox ? (WOEmailClient1.Mailbox.Messages)
Bin halt noch nen totaler anfänger und komm irgendwie nicht dahinter wie das in Delphi funktioniert

memphis 20. Sep 2004 11:08

Re: Untermenüs eigener Komponenten erstellen ?
 
hallo

Ich vermute dass es sich bei Mailbox nicht um eine Funktion sondern um ein Objekt handelt, welches die Methode bzw. das Attribut Messages besitzt. Deshalb kannst du, wenn das Object Messages als public deklariert ist, auch auf seine Eigenschaften zugreifen.

Beispiel:
Die Komponente TMemo besitzt ein Atrribut namens Lines, welches die einzelnen Textzeilen beinhaltet. Lines ist nichts anders als ein Object des Typs TStrings. Deshalb kannst du auch auf dessen Methoden (bsp: Add, clear) zugreifen in dem du Memo1.Lines.clear; aufrufst.

Ich hoffe meine Antwort ist einigermaßen verständlich.

Luki

himmelweiss 20. Sep 2004 11:24

Re: Untermenüs eigener Komponenten erstellen ?
 
Hmm.... hier mal der ganze Code... vielleicht wirds dann verständlich was ich genau möchte...
Ich benutze TIDimap4 Object bzw. Override diese um mein eigenen E-Mail Client zu erstellen.

Ich komme soweit klar meine eigenen Methoden usw. zu schreiben für mein Eigenes E-Mail-Client-Komponentchen.
Aber bin wirklich voll am rätseln wie ich ".messages" (was die gesamtanzahl der Messages der ausgewälten Mailbox ausgibt) hinter ".Mailbox" bringen kann... Will das einfach nur mal testen bzw. wissen da ich dann später sachen machen will wie z.b.

MeinEmailClient.Mailbox['INBOX'].Messages[14].from
.body
.headers

naja usw. das sei aber jetzt erstmal dahingestellt.... Hier der gesammte Code von meiner EmailClient Componente...


Code:
unit WOEMailClient;

interface

uses
  SysUtils, Classes, IdIMAP4, dialogs;

type
  TWOEMailClient = class(TComponent)
  private
    vIdIMAP4: TIdIMAP4;
    vUsername: String;
    vPassword: String;
    vServerIP: String;
    vPort: Integer;
    vOnConnected: TNotifyEvent;
    vOnDisconnected: TNotifyEvent;
    vTotalMsgs: LongInt;
    { Private declarations }
  protected
    { Protected declarations }
  public
    procedure Connect;
    procedure Disconnect;
    function Connected: Boolean;
    procedure MailBox(ChooseMailBox: String);
    function Messages: LongInt;
    constructor Create(aOwner: TComponent); override;
    destructor Destroy; override;
    { Public declarations }
  published
    property Username: string read vUsername write vUsername;
    property Password: string read vPassword write vPassword;
    property ServerIP: string read vServerIP write vServerIP;
    property Port: Integer read vPort write vPort default 143;
    property OnConnected: TNotifyEvent read vOnConnected write vOnConnected;
    property OnDisconnected: TNotifyEvent read vOnDisconnected write vOnDisconnected;
    { Published declarations }
  end;


procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('War Office (new)', [TWOEMailClient]);
end;

constructor TWOEMailClient.Create(aOwner: TComponent);
begin
  inherited Create(aOwner);
  vIdIMAP4:= TIdIMAP4.Create(nil);
  vPort:= 143;
  //bl bla
end;

destructor TWOEMailClient.Destroy;
begin
  //bla bla
  if vIdIMAP4.Connected then
    vIdIMAP4.Disconnect;
  inherited Destroy;
end;

procedure TWOEMailClient.Connect;
begin
  vidimap4.Port := vport;
  vidimap4.Username := vusername;
  vidimap4.Password := vpassword;
  vidimap4.Host := vServerIP;
  vidimap4.Connect;
end;

function TWOEMailClient.Connected: Boolean;
begin
  result:= vidimap4.Connected;
end;

procedure TWOEMailClient.Disconnect;
begin
  if vidimap4.Connected then
    begin
      vidimap4.Disconnect;
      showmessage('Verbindung abgebrochen'); //nur zu test zwecken
    end;
end;

procedure TWOEMailClient.Mailbox(ChooseMailBox: String);
begin
    vidimap4.SelectMailBox(ChooseMailBox);
end;

function TWOEMailClient.Messages: LongInt;
begin
  result := vidimap4.MailBox.TotalMsgs;
end;


end.


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