Cabe aclarar que al pasar mucho tiempo programando PHP he perdido el hilo en Object Pascal , este es el asunto, estoy haciendo pruebas con una aplicación REST, el caso es que recibo todos los datos tanto Padre como hijo en un FDMemTable, todo bien, mi problema es al llenar esos datos con su relación Padre/Hijo (Un Padre un TListBoxGroupHeader y sus hijos un TListBoxItem), ya que esos datos no viene ordenados de tal forma, tengo los siguientes códigos para tratar de ordenar esa relación en el ListBox:
procedure GetProducts(DataSet: TDataSource; List: TListBox); begin DataSet.DataSet.First; while not Dataset.DataSet.eof do begin if Dataset.DataSet.FieldByName('parent').Value = 'root' then begin ItemEncabezado := TListBoxGroupHeader.Create(List); ItemEncabezado.Text := Dataset.DataSet.FieldByName('name').Value; List.AddObject(ItemEncabezado); GetChildrens(Dataset,List,Dataset.DataSet.FieldByName('id').AsString); end; Dataset.DataSet.Next; end; end; procedure GetChildrens(DatasetParent: TDataSource; List: TListbox; ID: string); begin DatasetParent.DataSet.First; while not DatasetParent.DataSet.eof do begin if DatasetParent.DataSet.FieldByName('id').Value = ID then begin ItemNormal := TListBoxItem.Create(List); ItemNormal.Text := DatasetParent.DataSet.FieldByName('name').Value; ItemNormal.ItemData.Accessory := TListBoxItemData.TAccessory(1); List.AddObject(ItemNormal); end; DatasetParent.DataSet.Next; end; end;
y el resultado no es el esperado, porque sólo me muestra un sólo TListBoxGroupHeader con el Texto "MANZANA" y un sólo TListBoxItem con el Texto del mismo nombre, en el Dataset hay tres Campos, id, Parent y Name, los dos primeros está la relación, se supone que debería hacer recursividad pero la verdad es que llevo dias en esto .
A ver si me hechan un mano, Saludos.