Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.08.20;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.036 c
2-1154254593
Destroyer
2006-07-30 14:16
2006.08.20
Переменные среды (%UserProfile%)


10-1122960775
Dell3r
2005-08-02 09:32
2006.08.20
Файлы типа .doc в один файл


15-1153806797
Ega23
2006-07-25 09:53
2006.08.20
С Днём рождения! 25 июля


15-1153777222
QuickFinder
2006-07-25 01:40
2006.08.20
Code::Blocks Studio


15-1152305966
Германн
2006-07-08 00:59
2006.08.20
Вот странно!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский