Autor Beitrag
csigg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 706

WIn XP, Win NT, Win2000, Suse8.0
Delphi 5, Delphi 6
BeitragVerfasst: 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??

ausblenden 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;



ausblenden 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;
 //  tlist.ImageIndex := imgindex;
   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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 706

WIn XP, Win NT, Win2000, Suse8.0
Delphi 5, Delphi 6
BeitragVerfasst: Mo 11.07.05 10:29 
Ja, die bekommen einen Namen (lvCube1,..) folgendes funktioniert z.B. auch ohne Probleme:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
for i := 1 to anzahlCubes do
 begin
      TListView(FindComponent('lvCube' + IntToStr(i))).Items.Clear;
 end;
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Mo 11.07.05 10:51 
ausblenden 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;


ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 8

Win XP
D5 Prof, C# Express 2005
BeitragVerfasst: 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...