Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поиск по TreeView типо как по базе (FindKey, Locate) [D6, WinXP]


ЮРИЙ_К ©   (2002-12-27 12:58:00) 

Коллеги, нет-ли такой возможности как САБЖ, шоб без перелопачивания всего дерева в поисках DATA?


ЮРИЙ_К   (2002-12-27 16:37:00) [1]

Могет я чего не въезжаю, дык зачема мне TList??, если я знаю конкретно значение узла, т.е. его Data. Я думал, может есть чегость, типо TreeView1.Selected.Data.Раскройся 8-(((


murzikN   (2002-12-27 15:57:00) [2]

Попробуй свою базу закачать в TList или TSortList, добавив в записи элемент Node - ссылку на узел дерева и поиск осуществляй по List-у или SortList-у, а затем уже становись на нужный узел.


Дмитрий К.К.   (2002-12-27 15:46:00) [3]


> mrcat © (27.12.02 14:59)


Дык, батенька, вы, наверняка, в курсях, какие возникают тормоза при прохождении через узлы TreeView ;)


mrcat   (2002-12-27 14:59:00) [4]

ну....,млин, согласен =)))
З.Ы. c небольшой оговоркой: TStringList.IndexOf есть не что иное как обычный:
function TStrings.IndexOf(const S: string): Integer;
begin
for Result := 0 to GetCount - 1 do
if CompareStrings(Get(Result), S) = 0 then Exit;
Result := -1;
end;

что в данном контексте не есть решение =)


Дмитрий К.К.   (2002-12-27 14:55:00) [5]


> ЮРИЙ_К © (27.12.02 14:52)


Ну дык значит, главная работа будет происходить при формировании дерева.


ЮРИЙ_К   (2002-12-27 14:52:00) [6]

А ведь можно использовать и DAta, типа Pointer. Вся фишка в том, что я формирую дерево из базы, и DAta присваиваю ID, затем открывая эту форму, смотрю, в каком режиме база, если Edit, то хочу дерево позиционировать на енто самое ID, а не по названию ветки.


Дмитрий К.К.   (2002-12-27 14:22:00) [7]

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls;

type
TTreeForm = class(TForm)
TreeView1: TTreeView;
AddButton: TButton;
AddEdit: TEdit;
SearchButton: TButton;
SearchEdit: TEdit;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure SearchButtonClick(Sender: TObject);
procedure AddButtonClick(Sender: TObject);
private
public
end;

var
TreeForm: TTreeForm;
StringList: TStringList;

implementation

{$R *.DFM}

function GiveTreeNodeEspeciallyForMrCat(StrForSearch: string): TTreeNode;
var
IndexNode: Integer;
begin
Result := nil;
IndexNode := StringList.IndexOf(StrForSearch);
if IndexNode > -1 then Result := (StringList.Objects[IndexNode] as TTreeNode);
end;

procedure TTreeForm.FormCreate(Sender: TObject);
begin
StringList := TStringList.Create;
end;

procedure TTreeForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
StringList.Free;
end;

procedure TTreeForm.SearchButtonClick(Sender: TObject);
var
SelTreeNode: TTreeNode;
begin
SelTreeNode := GiveTreeNodeEspeciallyForMrCat(SearchEdit.Text);
if SelTreeNode <> nil then
TreeView1.Selected := SelTreeNode else ShowMessage("Нетуть!");
TreeView1.SetFocus;
end;

procedure TTreeForm.AddButtonClick(Sender: TObject);
var
AddTreeNode: TTreeNode;
begin
AddTreeNode := TreeView1.Items.Add(nil, AddEdit.Text);
StringList.AddObject(AddEdit.Text, AddTreeNode);
AddEdit.Clear;
end;

end.


Дмитрий К.К.   (2002-12-27 14:11:00) [8]

Погодь, ща тестовый пример сделаю.


mrcat   (2002-12-27 13:46:00) [9]

>>Дмитрий К.К. © (27.12.02 13:33)
Например, пользователь хочет найти какой-либо указатель в TTreeView, для чего задает в форме поиска его ХАРАКТЕРИСТИКУ. Как поиск будет проходить дальше?


Дмитрий К.К.   (2002-12-27 13:33:00) [10]


> mrcat © (27.12.02 13:21)
> >>А если он заполняет дерево, параллельно делая указатели?
> И как он будет искать эти указатели?


Добавил узел в дерево, запомнил TTreeNode c какой-нибудь характеристикой (описанием узла), а потом искать по ХАРАКТЕРИСТИКЕ и возвращать пресловутый TTreeNode.


mrcat   (2002-12-27 13:21:00) [11]

>>А если он заполняет дерево, параллельно делая указатели?
И как он будет искать эти указатели?


Дмитрий К.К.   (2002-12-27 13:15:00) [12]


> Song © (27.12.02 13:11)


А если он заполняет дерево, параллельно делая указатели?


Song   (2002-12-27 13:11:00) [13]

Нет. Только цикл.


Дмитрий К.К.   (2002-12-27 13:08:00) [14]


> ЮРИЙ_К © (27.12.02 12:58)


Смотря, как ты заполняешь сей TreeView.


Наверх

Титульная страница Поиск, карта сайта Написать письмо