Hiho,
also ich habe ein Programm, dass aus einer Paradox Datenbank die Einträge ausliest und für jeden Eintrag eine Komponente vom Typ TGame erstellen soll:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TGCGMV2C.FormCreate(Sender: TObject); begin createobjects; end;
procedure TGCGMV2C.createobjects; var NewGame: TGame; begin Table1.First; while not Table1.Eof do begin NewGame:=TGame.Create(GCGMV2C); NewGame.setDetails(Table1.FieldByName('Release Name').AsString,Table1.FieldByName('Name').AsString,Table1.FieldByName('Origin').AsString,Table1.FieldByName('Group').AsString,inttostr(Table1.FieldByName('Files').AsInteger),Table1.FieldByName('Filename').AsString,Table1.FieldByName('Release Date').AsString,Table1.FieldByName('Category').AsString); ListBox1.Items.Add(Table1.FieldByName('Release Name').AsString); Table1.Next; end; end; |
TGame sieht so aus:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32:
| type TGame = class(TComponent) private protected public pReleaseName,pName,pOrigin,pGroup,pFiles,pFilename,pReleaseDate,pCategory: string; constructor create(AOwner: TComponent); virtual; function getReleaseName:string; procedure setDetails(ReleaseName,Name,Origin,Group,Files,Filename,ReleaseDate,Category: string); end;
constructor TGame.create; begin inherited; end;
procedure TGame.setDetails(ReleaseName,Name,Origin,Group,Files,Filename,ReleaseDate,Category: string); begin pReleaseName:=ReleaseName; pName:=Name; pOrigin:=Origin; pGroup:=Group; pFiles:=Files; pFilename:=Filename; pReleaseDate:=ReleaseDate; pCategory:=Category; end;
function TGame.getReleaseName; begin getReleaseName:=pReleaseName; end; |
Nun soll per Click auf ein Element der ListBox in die verschiedenen EditFenster die jeweilige Eigenschaft geschrieben werden:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TGCGMV2C.ListBox1Click(Sender: TObject); var i: integer; ReleaseName: string; begin i:=11; while i < ComponentCount do begin if Components[i] is TGame then if TGame(i).pReleaseName = ListBox1.Items[ListBox1.ItemIndex] then ReleaseName:= TGame(i).pReleaseName else inc(i) else inc(i); LabeledEdit1.Text:=ReleaseName; end; end; |
i:=11 weil ich 10 andere Komponenten habe und Nummer 11 die erste vom Typ TGame ist.
Hier arbeite ich absichtlich nur mit ReleaseName um das erstma zu testen, die anderen Eigenschaften werde ich dann später noch reinschreiben sobald das hier erstma läuft...
Allerdings bekomme ich beim Click auf die ListBox immer eine AccesViolation =/
Kann mir irgendwer helfen und weiß, was ich meine??
Danke schonmal!