| Autor |
Beitrag |
csigg
      
Beiträge: 706
WIn XP, Win NT, Win2000, Suse8.0
Delphi 5, Delphi 6
|
Verfasst: Mo 11.07.05 10:00
ich rufe über diese FOR-Schleife die Procedure Mitarbeiter Einordnen auf.
bis jetzt hab ich das ganze immer über den direkten Name z.B. lvCube1 gemacht,
da ich allerdings meine Tlistviews (lvCube1-6) dynamisch erzeuge muss ich es jetzt so machen. Allerdings tritt jetzt immer wenn prc_MitarbeiterEinordnen aufgerufen wird ne Exception auf, weiss jemand wieso??
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| for i := 1 to anzahlCubes do begin if rOrtnr = i then prc_MitarbeiterEinordnen(TListView(FindComponent('lvCube' + IntToStr(i))),rTitel,rName,rVorname,rBST,rMAnr) else if rOrtnr = 98 then prc_MitarbeiterEinordnen(lvAbwesend,rTitel,rName,rVorname,rBST,rMAnr) else if rOrtnr = 99 then prc_MitarbeiterEinordnen(lvaufdemStand,rTitel,rName,rVorname,rBST,rMAnr) else if (i < 0) or (anzahlCubes < i) then ShowMessage(inttostr(rOrtnr) + ' ist eine ungültige Raumnummer.'); end; |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure Tfrm_main.prc_MitarbeiterEinordnen(lv:TListview; Titel,Name,Vorname,bst,manr:String); var tlist:TListItem; begin ShowMessage('Einordnen'); tlist := (lv as TListview).Items.Add; if Titel ='' then begin tlist.Caption := Name + ', ' + Vorname; end else begin tlist.Caption := Name + ' ' + Titel + ', ' + Vorname; end; tlist.SubItems.Add(bst); tlist.SubItems.Add(manr); tlist.SubItems.Add('leer'); end; |
|
|
Sprint
      
Beiträge: 849
|
Verfasst: Mo 11.07.05 10:27
Wenn du deine TListView's dynamisch erstellt hast, bekommen die denn einen Namen von dir? lvCube1 bis lvCubeX (X = anzahlCubes)
Prüfe doch in prc_MitarbeiterEinordnen mit if Assigned(lv) then ob überhaupt ein ListView übergeben worden ist. Oder besser gleich bei FindComponent. FindComponent gibt dann nil zurück.
_________________ Ciao, Sprint.
|
|
csigg 
      
Beiträge: 706
WIn XP, Win NT, Win2000, Suse8.0
Delphi 5, Delphi 6
|
Verfasst: Mo 11.07.05 10:29
Ja, die bekommen einen Namen (lvCube1,..) folgendes funktioniert z.B. auch ohne Probleme:
Delphi-Quelltext 1: 2: 3: 4:
| for i := 1 to anzahlCubes do begin TListView(FindComponent('lvCube' + IntToStr(i))).Items.Clear; end; |
|
|
Sprint
      
Beiträge: 849
|
Verfasst: Mo 11.07.05 10:51
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| var Component: TComponent; begin
for i := 1 to anzahlCubes do if rOrtnr = i then begin Component := FindComponent('lvCube' + IntToStr(i)); if Assigned(Component) and (Component is TListView) then prc_MitarbeiterEinordnen(TListView(Component),rTitel,rName,rVorname,rBST,rMAnr); end else if rOrtnr = 98 then prc_MitarbeiterEinordnen(lvAbwesend,rTitel,rName,rVorname,rBST,rMAnr) else if rOrtnr = 99 then prc_MitarbeiterEinordnen(lvaufdemStand,rTitel,rName,rVorname,rBST,rMAnr) else if (i < 0) or (anzahlCubes < i) then ShowMessage(inttostr(rOrtnr) + ' ist eine ungültige Raumnummer.');
end; |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure Tfrm_main.prc_MitarbeiterEinordnen(lv: TListview; Titel, Name, Vorname, bst, manr: String); begin
with lv.Items.Add do begin if Titel = '' then Caption := Name + ', ' + Vorname else Caption := Name + ' ' + Titel + ', ' + Vorname; SubItems.Add(bst); SubItems.Add(manr); SubItems.Add('leer'); end;
end; |
Kannst ja mal testen...
_________________ Ciao, Sprint.
|
|
iKilledKenny
      
Beiträge: 394
Erhaltene Danke: 8
Win XP
D5 Prof, C# Express 2005
|
Verfasst: Mo 11.07.05 10:53
wo genau tritt die exception auf, beim aufruf oder in prc_MitarbeiterEinordnen?
viele grüße
alex
edit:
wenns so geht wie "sprint" geschrieben hat, dann lags wohl an der variablen benamsung "tlist", was auch meine idee gewesen wäre...
|
|
|