Delphi-PRAXiS
Seite 3 von 3     123   

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 Komponenten-Entwicklung: xyz[i].name (https://www.delphipraxis.net/14892-komponenten-entwicklung-xyz%5Bi%5D-name.html)

lkz633 17. Jan 2004 18:19

Re: Komponenten-Entwicklung: xyz[i].name
 
Liste der Anhänge anzeigen (Anzahl: 1)
Das Problem ist das ich nicht mehr habe. Ich wollte halt erstmal das der Zugriff klappt bevor ich die Methoden angehe.

Aber hier die komplette Unit.

lkz633

Jens Schumann 17. Jan 2004 18:39

Re: Komponenten-Entwicklung: xyz[i].name
 
Hallo,
ich habe mal ein bißchen an Deinem Source herumgefummelt.
Das einzige was ich Dir bieten kann ist
Code:
komponente.contacts[x].count
Code:
komponente.contacts.count
Wäre auch sinnlos. Contacts ist nur eine Array Property. D.h. in Wirklichtkeit stecken die in FList verwalteten Objekte dahinter. Welches dieser Objekte möchtest Du denn mit komponente.contacts.count ansprechen ??? Wozu brauchst Du das überhaupt ? komponente.count liefert doch schon das Ergebnis.

Hier jetzt der Source
Delphi-Quellcode:
unit outextract;

interface

uses
  windows,SysUtils, Classes, Controls,comobj,variants;

type
  outlookversion = (ovOutlook,ovOutlookExpress);


Toutextract = class;

 tcontactitem = class
  private
    Fname      : string;
    Foutextract : Toutextract;
    function GetCount: Integer;
  public
    constructor Create(outextract : Toutextract);
    property name : string read Fname write Fname;
    property Count : Integer read GetCount; // damit geht contacts[x].Count
end;



  Toutextract = class(TComponent)
  private
    FList : TList;
    FOutlookVersion: outlookversion;
    function GetCount: Integer;
    function GetItem(Index: Integer): TContactItem;
    procedure SetOutlookVersion(const Value: outlookversion);
  public
    constructor create(AOwner: TComponent); override;
    destructor destroy;override;
    function Add(const aName : String) : tcontactitem;
    procedure Clear;
    property contacts[Index : Integer]: TContactItem read GetItem; default;
    property Count : Integer read GetCount;
  published
    property OutlookVersion:outlookversion read FOutlookVersion write SetOutlookVersion;

  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('SEPT-Solutions', [Toutextract]);
end;






{ Toutextract }

function Toutextract.Add(const aName: String): tcontactitem;
begin
  Result:=tcontactitem.Create(Self);
  Result.name:=aName;
  FList.Add(Result);
end;

procedure Toutextract.Clear;
var
  iCnt : Integer;
begin
  For iCnt:=0 to FList.Count-1 do
    TObject(FList[iCnt]).Free;
  FList.Clear;
end;

constructor Toutextract.create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FList:=TList.Create;
end;

destructor Toutextract.destroy;
begin
  FList.Free;
  inherited Destroy;
end;

function Toutextract.GetCount: Integer;
begin
  Result:=FList.Count;
end;

function Toutextract.GetItem(Index: Integer): TContactItem;
begin
  Result:=TContactItem(FList[Index]);
end;

procedure Toutextract.SetOutlookVersion(const Value: outlookversion);
begin
  FOutlookVersion:=Value;
end;

{ tcontactitem }


{ tcontactitem }

constructor tcontactitem.Create(outextract: Toutextract);
begin
  inherited Create;
  Foutextract:=outextract;
end;

function tcontactitem.GetCount: Integer;
begin
  If Assigned(Foutextract) then
    Result:=Foutextract.Count
    else
      Result:=-1; // Zeigt dass das TMyListItem in keiner Liste hängt
end;

end.

lkz633 17. Jan 2004 18:52

Re: Komponenten-Entwicklung: xyz[i].name
 
Ich hatte mir halt irgendwie gedacht das es sehr viel logischer ist, ich will ja die Anzahl der Kontakte und nicht die Anzahl der Komponenten. Bei delphi Komponenten geht es doch auch so, z.B listbox.items.count und listbox.item[i]

Naja, ist ja nicht so schlimm.

Herzlichen Dank für deine Hilfe!!!!

Gruss lkz633

lkz633 17. Jan 2004 18:53

Re: Komponenten-Entwicklung: xyz[i].name
 
hm... contacts.name, contacts.count usw geht immer noch, wiso?

Hat da jemand eine Erklärung für?

Gruss lkz633

Jens Schumann 17. Jan 2004 18:55

Re: Komponenten-Entwicklung: xyz[i].name
 
Hallo,
das wird Dir nur von Delphi angeboten. Versuch es mal zu compilieren.

lkz633 17. Jan 2004 19:00

Re: Komponenten-Entwicklung: xyz[i].name
 
:oops:

Dann werde ich mal weiter mein Glück versuchen...puh Komponenten sind gar nicht so leicht

Jens Schumann 17. Jan 2004 19:02

Re: Komponenten-Entwicklung: xyz[i].name
 
Hallo,
jetzt habe ich geschnallt was Du möchtest. Mein erstes Beispiel enthält die Lösung.
Du musst ein Objekt dazwischenschalten. Dieses Objekt verwaltet dann die einzelnen Objekte.
Bei TListBox ist die property Items vom Type TStrings. In meinen ersten Beispiel ist es TMyListItems

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  iCnt : Integer;
begin
  For iCnt:=0 to FMyListItems.Count-1 do // Zugriff auf Count
    ListBox1.Items.Add(FMyListItems[iCnt].Name); // Zugriff auf die Objekte
end;

lkz633 17. Jan 2004 19:08

Re: Komponenten-Entwicklung: xyz[i].name
 
Sorry jetzt bin ich ganz verwirrt......

Hab grad gemerkt das contacts.add dann ja auch nicht geht......

Könntest du wenn du verstanden hast was ich mein nochmals die Unit von grade abgeändert posten, das wäre sehr nett....


lkz633

Jens Schumann 17. Jan 2004 19:10

Re: Komponenten-Entwicklung: xyz[i].name
 
Hallo,
leider nicht. Da ich jetzt mit unseren Kindern Die Siedler spielen werde.

SCHAU IN MEIN ERSTES BEISPIEL DA STEHT ALLES DRIN

lkz633 17. Jan 2004 19:57

Re: Komponenten-Entwicklung: xyz[i].name
 
Jepeeeeee :-D Jetzt kann ich alles genau so machen wie ich es wollte...danke danke danke


Ich wollte immer soetwas machen
Code:
    property contacts[X : Integer] : Tcontact read GetItems;
  end;
anstatt so etwas:

Code:
  property Items[X : Integer] : Tcontact read GetItems;[b]default[/b];

  public
    [b]Contacts: Tcontactlist;[/b]
Gruss lkz633


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 Uhr.
Seite 3 von 3     123   

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