![]() |
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 |
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:
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.
komponente.contacts.count
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. |
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 |
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 |
Re: Komponenten-Entwicklung: xyz[i].name
Hallo,
das wird Dir nur von Delphi angeboten. Versuch es mal zu compilieren. |
Re: Komponenten-Entwicklung: xyz[i].name
:oops:
Dann werde ich mal weiter mein Glück versuchen...puh Komponenten sind gar nicht so leicht |
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; |
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 |
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 |
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:
anstatt so etwas:
property contacts[X : Integer] : Tcontact read GetItems;
end;
Code:
Gruss lkz633
property Items[X : Integer] : Tcontact read GetItems;[b]default[/b];
public [b]Contacts: Tcontactlist;[/b] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 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