Форум: "Начинающим";
Текущий архив: 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