AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zur TreeView

Ein Thema von Akut-Programming · begonnen am 7. Sep 2004 · letzter Beitrag vom 9. Sep 2004
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#11

Re: Frage zur TreeView

  Alt 8. Sep 2004, 13:15
... dann füge das neue objekt doch gleichzeitig an die richtige gruppe an...

immer wieder neu aufbauen ist bei ein paar daten sicher kein problem, aber wenn du sehr viele daten hast, dann bedeutet das schon eine nervige zeitverzögerung. hatte mal das gleiche problem gelöst habe ich es so, dass sogar am anfang der baum nicht ganz auggbaut wird, sondern nur bis zum jeweiligen sichtbaren level.

schreib dir doch eine funktion die die objekte einfügt, der übergibst du den zugehörigen gruppenknoten und bekommst zurück den neuen kindknoten (ist sinnvoll, wenn du noch weitere ebenen aufbauen willst ansonsten reicht eine prozedur)
diese funktion/prozedur kannst du auch in dein bisheriges einbinden!

gruß rené
  Mit Zitat antworten Zitat
Akut-Programming

Registriert seit: 18. Aug 2003
648 Beiträge
 
#12

Re: Frage zur TreeView

  Alt 8. Sep 2004, 13:20
Zitat von ibp:
schreib dir doch eine funktion die die objekte einfügt, der übergibst du den zugehörigen gruppenknoten und bekommst zurück den neuen kindknoten (ist sinnvoll, wenn du noch weitere ebenen aufbauen willst ansonsten reicht eine prozedur)
diese funktion/prozedur kannst du auch in dein bisheriges einbinden!

gruß rené
hmm kannste mir mal vielleicht n code schnipsel geben?? Ich habe ja überlegt die treeView nach dem Gruppennamen zu durchsuchen. Nur leider weiß ich auch nicht wies geht... Wenn ich anstatt der Gruppennamen Gruppen IDs im Baum anzeigen würde, könnte ich ja über den index gehen, nur das ist leider nicht so. - Ich müsste irgendwie auf den Node kommen, zu dem ich das eigentliche Objekt eingefügt habe!?
Akut-Programming
be cool, be hot ... just be
  Mit Zitat antworten Zitat
Akut-Programming

Registriert seit: 18. Aug 2003
648 Beiträge
 
#13

Re: Frage zur TreeView

  Alt 8. Sep 2004, 13:57
Okay ich hab die Lösung...
Delphi-Quellcode:
           Node := frmMain.lvObjects.Items[0];
           While ( Node <> Nil )
           Do Begin
              If ( Node.Text = cbGruppe.Text ) Then Break;
              Node := Node.GetNextSibling; // holt den Verwandten auf der gleichen Ebene
           End;
           If ( Assigned(Node) ) Then frmMain.lvObjects.Items.AddChild(Node, edBezeichnung.Text);
Gruß,
Akut-Programming
be cool, be hot ... just be
  Mit Zitat antworten Zitat
Akut-Programming

Registriert seit: 18. Aug 2003
648 Beiträge
 
#14

Re: Frage zur TreeView

  Alt 9. Sep 2004, 11:32
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ß,
Akut-Programming
be cool, be hot ... just be
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:36 Uhr.
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