![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
treview значение узла [D5, 2000]
lorn © (2006-08-01 17:55:00)мастера вся надежда на Вас
есть treeview с кучей узлов
вот такого типа
table
+->row
+->row
+->row
\->Cell
\->Data
\-> значение
+->row
как автоматически пробежать по этому дереву и вытащить "значения" ну и положить их куданить типа в stringgrid
дайте код плиз
Ega23 (2006-08-02 11:24:00) [1]
> вобщем сам разобрался-хелпы помогли
"Вот теперь тебя люблю я,
Вот теперь тебя хвалю я, " (с)
Молодец. Рекомендую и в дальнейшем сначала читать хелп, а потом просить код.
lorn (2006-08-02 11:16:00) [2]я понял что этокомпонент у тебя -мне такие сложности не нужны и я не претендую на твой хлеб
вобщем сам разобрался-хелпы помогли
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;
ну вот типа того и получилось
всем спасибо за помощь ,понимание и сочуствие
тема закрыта
Elen (2006-08-02 11:09:00) [3]
> по проще есть что нибуть
Попробуй выгони значения всех веток через TreeView1.SaveToFile('Файл')
и анализируй каждую строку в Файле - если там в начале строки 4 TAB символа - это твое значение
Ega23 (2006-08-02 10:59:00) [4]Если ты ещё не понял, то я издеваюсь.
Я этот компонент 2 месяца писал. А тут "дайте код"...
Не заработал ты, парень, на код.
Открывай хелп, пиши тесты, если есть КОНКРЕТНЫЕ вопросы - спрашивай.
На халяву за тебя твою работу тут делать никто не будет.
Ega23 (2006-08-02 10:55:00) [5]
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;
lorn (2006-08-02 10:49:00) [6]всё равно не понял
по проще есть что нибуть
lorn (2006-08-02 10:44:00) [7]огромное человеческое спасибо
щас буду разбераться
Ega23 (2006-08-02 10:43:00) [8]Код неоднократно полностью работал, встечается в нескольких коммерческих проектах.
Ega23 (2006-08-02 10:40:00) [9]
> вот и прошу пример
Легко.
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;
lorn (2006-08-02 10:34:00) [10]все равно не понял как вытащмть значение
вот и прошу пример
Ega23 (2006-08-02 10:28:00) [11]
> а рабочий код можно глянуть
"Можно. Утром деньги - вечером стулья". (с)
> что то не получается
Что конкретно не получается.
lorn (2006-08-02 10:27:00) [12]а рабочий код можно глянуть
что то не получается
Ega23 (2006-08-01 19:06:00) [13]Хотя если глубина вложенности постоянна и на 4-м уровне кроме "значения" ничего быть не может - тогда [1].
Ega23 (2006-08-01 19:05:00) [14]Есть такая штука. Рекурсия.
StriderMan (2006-08-01 18:01:00) [15]копать сюда
TTreeeView.Items.Item[i].Level