Nun hab ich noch ein kleines Problem.. hier ist erstmal der Code:
Delphi-Quellcode:
procedure TfrmMain.lvObjectsClick(Sender: TObject);
var
ListItem: TListItem;
i, i2, GroupID: integer;
ListFilled: Boolean;
begin
lvObjectdata.Items.Clear;
//Alle Objects zur Gruppe in einer ListView anzeigen
if lvObjects.Selected.HasChildren=true
then begin
dstGetAllObjects.Active:=false;
dstGetAllObjects.CommandText:='select id from groups_tbl where bezeichnung = '''+lvObjects.Selected.Text+'''';
dstGetAllObjects.Active:=true;
GroupID:=dstGetAllObjects.Fields.Fields[0].AsInteger;
if dstGetAllObjects.RecordCount <>0
then begin
for i := 0 to dstGetAllObjects.RecordCount-1
do begin
//Alle Objekte anzeigen, wenn er Admin ist
if frmLogin.IsAdmin='ja'
then begin
dstGetAllObjects.Active:=false;
dstGetAllObjects.CommandText:='select * from Objects_tbl where groupid = '''+IntToStr(groupid)+'''';
dstGetAllObjects.Active:=true;
dstGetAllObjects.First;
ListItem := lvObjectdata.Items.Add;
ListItem.Caption :=dstGetAllObjects.Fields.Fields[0].AsString;
ListItem.SubItems.Add(dstGetAllObjects.Fields.Fields[1].AsString);
ListItem.SubItems.Add(dstGetAllObjects.Fields.Fields[2].AsString);
ListItem.SubItems.Add(dstGetAllObjects.Fields.Fields[3].AsString);
ListItem.SubItems.Add(dstGetAllObjects.Fields.Fields[4].AsString);
ListItem.SubItems.Add(dstGetAllObjects.Fields.Fields[5].AsString);
ListItem.SubItems.Add(dstGetAllObjects.Fields.Fields[6].AsString);
ListItem.SubItems.Add(dstGetAllObjects.Fields.Fields[7].AsString);
dstGetAllObjects.Next;
ListFilled:=true;
end else
//Nur die Objekte anzeigen, die er erstellt hat
if frmLogin.IsAdmin='nein'
then begin
dstGetAllObjects.Active:=false;
dstGetAllObjects.CommandText:='select * from Objects_tbl where groupid = '''+IntToStr(groupid)+''' and creator like '''+frmLogin.UserID+'''';
dstGetAllObjects.Active:=true;
dstGetAllObjects.First;
ListItem := lvObjectdata.Items.Add;
ListItem.Caption :=dstGetAllObjects.Fields.Fields[0].AsString;
ListItem.SubItems.Add(dstGetAllObjects.Fields.Fields[1].AsString);
ListItem.SubItems.Add(dstGetAllObjects.Fields[2].AsString);
ListItem.SubItems.Add(dstGetAllObjects.Fields.Fields[3].AsString);
ListItem.SubItems.Add(dstGetAllObjects.Fields.Fields[4].AsString);
ListItem.SubItems.Add(dstGetAllObjects.Fields.Fields[5].AsString);
ListItem.SubItems.Add(dstGetAllObjects.Fields.Fields[6].AsString);
ListItem.SubItems.Add(dstGetAllObjects.Fields.Fields[7].AsString);
dstGetAdminstatus.Next;
end;
end;
end;
end;
//Einzelnes Object anzeigen
dstGetObjectData.Active:=false;
dstGetObjectData.CommandText:='select * from Objects_tbl where bezeichnung = '''+lvObjects.Selected.Text+'''';
dstGetObjectData.Active:=true;
dstGetObjectData.First;
if dstGetObjectData.RecordCount <>0
then begin
tbsToDo.Enabled:=true;
tbsWhatsNew.Enabled:=true;
tbsObjectdateien.Enabled:=true;
for i := 0 to dstGetObjectData.RecordCount -1
do begin
ListItem := lvObjectdata.Items.Add;
ListItem.Caption :=dstGetObjectData.Fields.Fields[0].AsString;
ListItem.SubItems.Add(dstGetObjectData.Fields.Fields[1].AsString);
ListItem.SubItems.Add(dstGetObjectData.Fields.Fields[2].AsString);
ListItem.SubItems.Add(dstGetObjectData.Fields.Fields[3].AsString);
ListItem.SubItems.Add(dstGetObjectData.Fields.Fields[4].AsString);
ListItem.SubItems.Add(dstGetObjectData.Fields.Fields[5].AsString);
ListItem.SubItems.Add(dstGetObjectData.Fields.Fields[6].AsString);
ListItem.SubItems.Add(dstGetObjectData.Fields.Fields[7].AsString);
dstGetObjectData.Next;
end;
end;
end;
Das Problem ist nun, ich frage einer Seits ab, ob der User den Status 'Admin' hat - wenn ja, soll er alle Objekte zu den Gruppen angezeigt bekommen. Ist er nicht Admin, wird abgefragt ob er der Ersteller des Objekts ist ('Creator') und soll somit nur die angezeigt bekommen, die er eingetragen hat. - In diesem Fall bekomme ich die Gruppen angezeigt, und auch die Objekte werden dann jeweils untergeordnet, in sofern er schon welche angelegt hat. Nun will ich es so machen, das wenn auf eine Gruppe geklickt wird, erstmal alle Objekte & ihre Daten in einer weiteren ListView angezeigt werden. Ist der User Admin, sollen eben alle erstmal in der ListView angezeigt werden.. aber wenn er der Ersteller ist, nur die, die er erstellt hat. - Es stehen aber nur die jeweiligen Objekte als Child in der TreeView und ich müsste jedes einzelne anklicken, um die Objektdaten einzusehen. Ich finde leider keinen Fehler in meinem Code, warum das nicht klappt -
Kann mir jemand vielleicht sagen, wo ich meinen Denkfehler habe??
Gruß,