Форум: "Основная";
Текущий архив: 2003.01.09;
Скачать: [xml.tar.bz2];
ВнизПоиск по TreeView типо как по базе (FindKey, Locate) Найти похожие ветки
← →
ЮРИЙ_К (2002-12-27 12:58) [0]Коллеги, нет-ли такой возможности как САБЖ, шоб без перелопачивания всего дерева в поисках DATA?
← →
Дмитрий К.К. (2002-12-27 13:08) [1]
> ЮРИЙ_К © (27.12.02 12:58)
Смотря, как ты заполняешь сей TreeView.
← →
Song (2002-12-27 13:11) [2]Нет. Только цикл.
← →
Дмитрий К.К. (2002-12-27 13:15) [3]
> Song © (27.12.02 13:11)
А если он заполняет дерево, параллельно делая указатели?
← →
mrcat (2002-12-27 13:21) [4]>>А если он заполняет дерево, параллельно делая указатели?
И как он будет искать эти указатели?
← →
Дмитрий К.К. (2002-12-27 13:33) [5]
> mrcat © (27.12.02 13:21)
> >>А если он заполняет дерево, параллельно делая указатели?
> И как он будет искать эти указатели?
Добавил узел в дерево, запомнил TTreeNode c какой-нибудь характеристикой (описанием узла), а потом искать по ХАРАКТЕРИСТИКЕ и возвращать пресловутый TTreeNode.
← →
mrcat (2002-12-27 13:46) [6]>>Дмитрий К.К. © (27.12.02 13:33)
Например, пользователь хочет найти какой-либо указатель в TTreeView, для чего задает в форме поиска его ХАРАКТЕРИСТИКУ. Как поиск будет проходить дальше?
← →
Дмитрий К.К. (2002-12-27 14:11) [7]Погодь, ща тестовый пример сделаю.
← →
Дмитрий К.К. (2002-12-27 14:22) [8]
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:52) [9]А ведь можно использовать и DAta, типа Pointer. Вся фишка в том, что я формирую дерево из базы, и DAta присваиваю ID, затем открывая эту форму, смотрю, в каком режиме база, если Edit, то хочу дерево позиционировать на енто самое ID, а не по названию ветки.
← →
Дмитрий К.К. (2002-12-27 14:55) [10]
> ЮРИЙ_К © (27.12.02 14:52)
Ну дык значит, главная работа будет происходить при формировании дерева.
← →
mrcat (2002-12-27 14:59) [11]ну....,млин, согласен =)))
З.Ы. 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 15:46) [12]
> mrcat © (27.12.02 14:59)
Дык, батенька, вы, наверняка, в курсях, какие возникают тормоза при прохождении через узлы TreeView ;)
← →
murzikN (2002-12-27 15:57) [13]Попробуй свою базу закачать в TList или TSortList, добавив в записи элемент Node - ссылку на узел дерева и поиск осуществляй по List-у или SortList-у, а затем уже становись на нужный узел.
← →
ЮРИЙ_К (2002-12-27 16:37) [14]Могет я чего не въезжаю, дык зачема мне TList??, если я знаю конкретно значение узла, т.е. его Data. Я думал, может есть чегость, типо TreeView1.Selected.Data.Раскройся 8-(((
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.01.09;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c