AGB  ·  Datenschutz  ·  Impressum  







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

Listview und seine Child´s

Ein Thema von bundy · begonnen am 14. Dez 2007 · letzter Beitrag vom 19. Dez 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von bundy
bundy

Registriert seit: 24. Mai 2003
Ort: Eisenstadt
438 Beiträge
 
Delphi 2007 Architect
 
#1

Listview und seine Child´s

  Alt 14. Dez 2007, 11:28
Hallo liebe DP !

Ich programmiere gerade eine Auktionshaus Software.
Ich verfüge über einen Table (MySql) - Categorien, der do aufgebaut ist:

Code:

cat_id   parent_id  cat_name .........Rest unwichtig
  1          0        Auto & Motorrad         ......
  2          0        Briefmarken & Münzen    ......
.
.
.
  25         2       Briefmarken Deutschland  ......
  26         2       Briefmarken Europa       ......
.
.
.
  30        25       Deutschland bis 1944      ......
usw...
Ich will das ganze jetzt in einer TreeList darstellen.
Die Nodes mit ihren Subnodes.

Aber wie kann ich das coden wenn ich nicht weiss, wie viele Subnodes jede Kategorie hat ?
Im OnClick Ereigniss bekomme ich das hin, weil ich ja abfragen kann welcher Node gerade focusiert ist.
Da mach ich das so:
Delphi-Quellcode:
procedure TForm2.cxTreeList1DblClick(Sender: TObject);
var
i:integer;
  ANode:TcxTreeListNode;

begin
indexnode:= cxTreeList1.FocusedNode;
mySQLQuery1.SQL.Text:='select * from categories where parent_ID = '+QuotedStr(cxTreeList1.Columns[0].Value);
mySQLQuery1.Active:=True;
mySQLQuery1.First;
for i := 0 to mySQLQuery1.RecordCount-1 do
    begin
      ANode := cxTreeList1.AddChild(indexnode);
     ANode.Values[0] := mySQLQuery1.FieldByName('cat_id').AsString;
     ANode.Values[1] := mySQLQuery1.FieldByName('parent_id').AsString;
     ANode.Values[2] := mySQLQuery1.FieldByName('cat_name').AsString;
     ANode.MakeVisible;
     ANode.Focused := True;

    mySQLQuery1.Next;
    end;

end;
jetzt meine Frage , ich will das erstellen der Nodes im Vorfeld machen, nicht erst beim Klicken auf die jeweiligen Nodes.
Ich denke irgendwie im Kreis
Hätte jemand vieleicht Lösungsvorschläge für mich ?

lg
Bundy
+++Glaube keiner Statistik, die du nicht selbst getürkthast.++++
********************
Ein anonymer Statistiker. *
********************
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#2

Re: Listview und seine Child´s

  Alt 14. Dez 2007, 11:48
Der Baum ist ja in der Tabelle virtuell schon abgebildet, anhand von cat_id und parent_id. parent_id ist praktisch ein Unterknoten von cat_id.

Du musst halt die Tabelle auslesen, in einem Array oder einer TList ablegen und deinen Baum per parent_id und cat_id nachbilden und organisieren.
  Mit Zitat antworten Zitat
Benutzerbild von bundy
bundy

Registriert seit: 24. Mai 2003
Ort: Eisenstadt
438 Beiträge
 
Delphi 2007 Architect
 
#3

Re: Listview und seine Child´s

  Alt 14. Dez 2007, 11:58
jup da liegt das problem
+++Glaube keiner Statistik, die du nicht selbst getürkthast.++++
********************
Ein anonymer Statistiker. *
********************
  Mit Zitat antworten Zitat
Benutzerbild von bundy
bundy

Registriert seit: 24. Mai 2003
Ort: Eisenstadt
438 Beiträge
 
Delphi 2007 Architect
 
#4

Re: Listview und seine Child´s

  Alt 14. Dez 2007, 16:03
wie kann ich in einer tlist solche Verlinkungen durchführen ?

ich hab mal folgenden code:

Delphi-Quellcode:
  type
  PMyList = ^AList;
  AList = record
    cat_id: Integer;
    parent_id: Integer;
    cat_name:string;
  end;
procedure TForm2.cxButton1Click(Sender: TObject);
var
i:integer;
MyList: TList;
ARecord: PMyList;
begin
 MyList := TList.Create;
 mySQLQuery1.SQL.Text:='select * from categories where parent_ID = 0';
 mySQLQuery1.Active:=True;
 mySQLQuery1.First;
 for i := 0 to mySQLQuery1.RecordCount-1 do
    begin
         New(ARecord);
         ARecord^.cat_id := mySQLQuery1.FieldByName('cat_id').AsInteger;
         ARecord^.parent_id := mySQLQuery1.FieldByName('parent_id').AsInteger;
         ARecord^.cat_name := mySQLQuery1.FieldByName('cat_name').AsString;
         MyList.Add(ARecord);
         mySQLQuery1.Next;
    end;

end;
Ich bitte euch um ein paar Tips, ich glaub ich steh auf´n Schlauch
+++Glaube keiner Statistik, die du nicht selbst getürkthast.++++
********************
Ein anonymer Statistiker. *
********************
  Mit Zitat antworten Zitat
Benutzerbild von bundy
bundy

Registriert seit: 24. Mai 2003
Ort: Eisenstadt
438 Beiträge
 
Delphi 2007 Architect
 
#5

Re: Listview und seine Child´s

  Alt 16. Dez 2007, 17:08
^^Schieb
+++Glaube keiner Statistik, die du nicht selbst getürkthast.++++
********************
Ein anonymer Statistiker. *
********************
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#6

Re: Listview und seine Child´s

  Alt 17. Dez 2007, 23:26
Was erwartest du denn?

Den halben Lösungsansatz hast du doch schon. Du musst nur cat_id mit verbauen und parent_id orientiert sich daran.
  Mit Zitat antworten Zitat
Benutzerbild von bundy
bundy

Registriert seit: 24. Mai 2003
Ort: Eisenstadt
438 Beiträge
 
Delphi 2007 Architect
 
#7

Re: Listview und seine Child´s

  Alt 18. Dez 2007, 13:02
Das Problem ist nur das jede Unterkategorie beliebig viele Unterkatagorien haben kann.
Das bedeutete manche haben:

Hauptkategorie - Unterkategorie - Unterkategorie- Unterkategorie

und andere

Hauptkategorie - Unterkategorie -Unterkategorie

Wie mach ich das mit den verschiedenen Ebenen (Tiefen) der Kategorien.

lg
Bundy
+++Glaube keiner Statistik, die du nicht selbst getürkthast.++++
********************
Ein anonymer Statistiker. *
********************
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#8

Re: Listview und seine Child´s

  Alt 18. Dez 2007, 20:55
Per Rekursion.

Eine Möglichkeit:
Du fängst bei parent_id = 0 an, da hast du alle Stammknoten.

Dann gehst du von oben den Baum rekursiv durch und schaust, ob es in der Tabelle (oder Liste) Einträge gibt, wo parent_id = cat_id ist und da hast du dann den Knoten, wo du deinen (ersten) Unterknoten dranhängen kannst.

Dann gehst du 'ne Ebene tiefer und wiederholst das. Usw. ...
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Listview und seine Child´s

  Alt 18. Dez 2007, 21:03
Hallo bundy,

siehe auch hier und hier.

Gruss
Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von bundy
bundy

Registriert seit: 24. Mai 2003
Ort: Eisenstadt
438 Beiträge
 
Delphi 2007 Architect
 
#10

Re: Listview und seine Child´s

  Alt 19. Dez 2007, 12:13
danke für die Links & Info´s
, werde mir mal den Code durch meinen Gehirncompiler jagen.
Melde mich bei Rückfragen.

danke Nuclear-Ping & Omata

lg
bundy
+++Glaube keiner Statistik, die du nicht selbst getürkthast.++++
********************
Ein anonymer Statistiker. *
********************
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 03:19 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