Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   TObjectlist Problem mit index (https://www.delphipraxis.net/126220-tobjectlist-problem-mit-index.html)

khh 20. Dez 2008 09:16


TObjectlist Problem mit index
 
Hallo zusammen,
ich habe eine

Tanredenlist vom Type TObjectlist.

bei der Anredenliste handelt es sich um eine kleine Liste, ich möchte das Prinzip aber auch für andere, grössere Listen und Objekte nutzen.

In einer Schleife im constructor der Liste lese ich die Objekte ein:

Fanreden := Tanreden.create(NIL);
self.add(Fanreden);

Fanreden beinhaltet id, bezeichnung , usw.
wenn ich ( zum test)in der schleife auf die Objekte zugreife funktioniert das wunderbar:

ShowMessage(Tanreden(self.items[i]).Bezeichnung);

jetzt möchte ich eine Instanz der Tanredenliste an eine Combobox übergeben:
also erzeuge ich :

Delphi-Quellcode:
 Fanredenlist := Tanredenlist.create(NIL);
  for i:=0 to Fanredenlist.count-1 do
begin
   myForm.AnredeCombobox.Items.AddObject(Tanreden(Fanredenlist.items[i]).Bezeichnung, Tanreden(Fanredenlist.items[i]));
end;
Leider bekomme ich so nur die Bbezeichnung des letzten Satzes in die Combobox, und das 'count-mal'

was mache ich falsch ?

danke Gruss KH

DeddyH 20. Dez 2008 09:22

Re: TObjectlist Problem mit index
 
Wenn TAnredenlist wirklich vom Typ TObjectlist ist, hat der Constructor einen Boolean-Parameter namens OwnsObjects und keinen TObject-Parameter. Vielleicht zeigst Du uns mal den ganzen Constructor, dann kann man evtl. eher etwas erkennen.

khh 20. Dez 2008 09:31

Re: TObjectlist Problem mit index
 
Delphi-Quellcode:

constructor Tanredenlist.Create(AOwner:TPersistent);
 var
 anzds , i: integer;

 begin
   inherited Create;
  // Fanreden ist vom Typ Tanreden = class(TPersistent)
     Fanreden := Tanreden.create(NIL);
    // in Fanreden.anzds stehen die anzahl der ds in der DB
     anzds := Fanreden.anzds;
     for i:= 0 to anzds -1 do
     begin
     Fanreden.anreden_id := i +1 ;
    // liest die ds aus der db und übergibt sie dem Object Fanreden
     Fanreden.DSlesen ;
     self.add(Fanreden);
 
   //  ShowMessage(Tanreden(self.items[i]).Bezeichnung);
     end;
   end;
EDIT:
Type
Tanredenlist = class(TObjectList)

DeddyH 20. Dez 2008 09:33

Re: TObjectlist Problem mit index
 
Du erzeugst ja auch nur ein einziges Objekt FAnreden und überschreibst das immer wieder.

khh 20. Dez 2008 09:35

Re: TObjectlist Problem mit index
 
Zitat:

Zitat von DeddyH
Du erzeugst ja auch nur ein einziges Objekt FAnreden und überschreibst das immer wieder.

ach sooo

ich dachte ich kann über einen index daruf zugreifen :wall:

das heisst ich muss in der schleife mehrere objecte erzeugen?
wie ist danndie syntax?

DeddyH 20. Dez 2008 09:41

Re: TObjectlist Problem mit index
 
Hier einmal ein Auszug aus meinem aktuellen Projekt (ich hoffe, da ist mir jemand jetzt nicht böse ;)):
Delphi-Quellcode:
  with TFBLParamDsql.Create(nil) do
    try
      //...
      SQL.Text := Format(sSQL,[FTablename]);
      ExecSQL;
      while not eof do
        begin
          ASalutation := TSalutation.CreateNew(FDatabase);
          ASalutation.FID := FieldByNameAsInteger('ID');
          ASalutation.FTitle := FieldByNameAsString('Bezeichnung');
          self.Add(ASalutation);
          Next;
        end;
      Close;
    finally
      Transaction.Commit;
      Free;
    end;

khh 20. Dez 2008 09:44

Re: TObjectlist Problem mit index
 
ich danke dir

Gruss Kh

khh 20. Dez 2008 09:49

Re: TObjectlist Problem mit index
 
trotzdem nochmal ne frage:
so:
self.Add(ASalutation); oder eben so:
self.add(Fanreden);

haben dann ja alle objekte den gleichen namen.

wie sieht dann die syntax aus, wenn ich die Objekte in der Instanz an die Combobox übergeben möchte ?

EDIT: ok die systax wie ich sie in der Instanz habe passt.

khh 20. Dez 2008 09:55

Re: TObjectlist Problem mit index
 
dann muss ich ja auch irgendwie wieder an die id des in der Box ausgewählten Eintrags kommen.

geht das irgendwie einfacher?

DeddyH 20. Dez 2008 09:57

Re: TObjectlist Problem mit index
 
Du hast jetzt alle Objekte in der ComboBox, oder? An das entsprechende Objekt kommst Du doch dann über den ItemIndex der ComboBox.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:26 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz