Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.20;
Скачать: CL | DM;

Вниз

treview значение узла   Найти похожие ветки 

 
lorn   (2006-08-01 17:55) [0]

мастера вся надежда на Вас
есть treeview с кучей узлов
вот такого типа
table
     +->row
     +->row
     +->row
            \->Cell
                     \->Data
                             \-> значение
     +->row
как автоматически пробежать по этому дереву и вытащить "значения" ну и положить их куданить типа в stringgrid
дайте код плиз


 
StriderMan ©   (2006-08-01 18:01) [1]

копать сюда TTreeeView.Items.Item[i].Level


 
Ega23 ©   (2006-08-01 19:05) [2]

Есть такая штука. Рекурсия.


 
Ega23 ©   (2006-08-01 19:06) [3]

Хотя если глубина вложенности постоянна и на 4-м уровне кроме "значения" ничего быть не может - тогда [1].


 
lorn   (2006-08-02 10:27) [4]

а рабочий код можно глянуть
что то не получается


 
Ega23 ©   (2006-08-02 10:28) [5]


> а рабочий код можно глянуть


"Можно. Утром деньги - вечером стулья". (с)


> что то не получается


Что конкретно не получается.


 
lorn   (2006-08-02 10:34) [6]

все равно не понял  как вытащмть значение
вот и прошу пример


 
Ega23 ©   (2006-08-02 10:40) [7]


> вот и прошу пример


Легко.


function TCustomKdrDBTreeView.SetSelectedNode(
 const Value: Variant): TTreeNode;
var
i:Integer;
begin
Result:=nil;
for i:=0 to FTreeItems.Count-1 do
begin
 if not (TKdrDBTreeViewItemIdent(FTreeItems.Items[i]).isValid) then
     raise Exception.Create("Invalid ident");

 With TKdrDBTreeViewItemIdent(FTreeItems.Items[i]) do
  if KeyFieldValue=Value then
   begin
    if(TKdrDBTreeViewItemIdent(FTreeItems.Items[i]).Node = nil) then
    begin
     Result := nil;
     Break;
    end
    else
    begin
      if not (TMyNode(TKdrDBTreeViewItemIdent(FTreeItems.Items[i]).Node).isValid) then
       raise Exception.Create(Self.name + ":Ivalid Node");
      Result:=Node;
      Break;
    end;
   end;
end;
end;


 
Ega23 ©   (2006-08-02 10:43) [8]

Код неоднократно полностью работал, встечается в нескольких коммерческих проектах.


 
lorn   (2006-08-02 10:44) [9]

огромное человеческое спасибо
щас буду разбераться


 
lorn   (2006-08-02 10:49) [10]

всё равно не понял
по проще есть что нибуть


 
Ega23 ©   (2006-08-02 10:55) [11]


function TCustomKdrDBTreeView.AddItem: Integer;
var
ms:TMemoryStream;
begin
try
 Result:=FTreeItems.Add(TKdrDBTreeViewItemIdent.Create);
 With TKdrDBTreeViewItemIdent(FTreeItems.Items[Result]) do
  begin
   KeyFieldValue:=FDataLink.DataSet.FieldByName(KeyField).Value;
   ParentKeyFieldValue:=FDataLink.DataSet.FieldByName(ParentField).Value;
   DisplayFieldValue:=FDataLink.DataSet.FieldByName(DisplayField).AsString;
   if (ImageField<>"") then
    if not (FDataLink.DataSet.FieldByName(ImageField).IsNull) then
     begin
      ms:=TMemoryStream.Create;
      try
       TBLOBField(FDataLink.DataSet.FieldByName(ImageField)).SaveToStream(ms);
       ms.Position:=0;
       Image:=TBitmap.Create;
       try
        Image.LoadFromStream(ms);
        ImageIndex:=FImageList.Add(Image, nil);
       except
        ImageIndex:=-1;
       end;
      finally
       ms.Free;
      end;
     end;
  end;
except
 Result:=-1;
end;

end;


 
Ega23 ©   (2006-08-02 10:59) [12]

Если ты ещё не понял, то я издеваюсь.
Я этот компонент 2 месяца писал. А тут "дайте код"...
Не заработал ты, парень, на код.
Открывай хелп, пиши тесты, если есть КОНКРЕТНЫЕ вопросы - спрашивай.
На халяву за тебя твою работу тут делать никто не будет.


 
Elen ©   (2006-08-02 11:09) [13]


> по проще есть что нибуть

Попробуй выгони значения всех веток через TreeView1.SaveToFile("Файл")
и анализируй каждую строку в Файле - если там в начале строки 4 TAB символа - это твое значение


 
lorn   (2006-08-02 11:16) [14]

я понял что этокомпонент у тебя -мне такие сложности не нужны и я не претендую на твой хлеб
вобщем сам разобрался-хелпы помогли

for i:=0 to TV.Items.Count-1 do
if TV.Items.Item[i].Level="№ уровня" then
 begin

with ListView1.Items.Add do
  begin
          Caption:=TV.Items.Item[i].Text;
           ImageIndex:=0;
     end;
 end;
end;

ну вот типа того и получилось
всем спасибо за помощь ,понимание и сочуствие
тема закрыта


 
Ega23 ©   (2006-08-02 11:24) [15]


> вобщем сам разобрался-хелпы помогли


"Вот теперь тебя люблю я,
Вот теперь тебя хвалю я, " (с)

Молодец. Рекомендую и в дальнейшем сначала читать хелп, а потом просить код.



Страницы: 1 вся ветка

Текущий архив: 2006.08.20;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.029 c
4-1146405087
BOGDAN
2006-04-30 17:51
2006.08.20
Не могу создать иконку с прозрачностью


2-1154336277
D@Nger
2006-07-31 12:57
2006.08.20
DBGrid и цвет выделенной ячейки


5-1137874955
Mih@s
2006-01-21 23:22
2006.08.20
TValueListEditor


15-1153073622
NAS
2006-07-16 22:13
2006.08.20
Оплачу програмку


3-1150370483
Alexey V.
2006-06-15 15:21
2006.08.20
Импорт dbf файлов в Firebird