Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.15;
Скачать: CL | DM;

Вниз

CheckBox и TreeView   Найти похожие ветки 

 
Alex Y ©   (2002-07-01 08:41) [0]

Подскажите пожалуйста, как в TreeView сделать множественный выбор, т.е. чтобы я мог бы галочками выбирать несколько узлов (Так как это реализоано в AVP и пр.).

Заранее благодарен.


 
XShura ©   (2002-07-01 09:13) [1]

Используй свойство IndexState


 
MBo ©   (2002-07-01 09:47) [2]

uses commctrl


procedure TForm1.FormCreate(Sender: TObject);
begin
SetWindowLong(TreeView1.Handle, GWL_STYLE,
GetWindowLong(TreeView1.Handle, GWL_STYLE) or TVS_CHECKBOXES);
end;

function TVGetCheck(TV:TTreeView;n:integer):integer;
var
item:tTVItem;
begin
item.hItem:=TV.Items[n].ItemId;
item.mask:= TVIF_STATE;
TV.Perform(TVM_GETITEM,0,integer(@item));
Result:=(item.state and $2000) shr 13;
end;

procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
begin
for i:=0 to treeview1.Items.Count-1 do
memo1.lines.add(treeview1.Items[i].text+" "+
inttostr(TVGetCheck(TreeView1,i)));
end;


 
Alex Y ©   (2002-07-01 10:09) [3]

MBo

Спасибо! То что нужно.


 
MBo ©   (2002-07-01 10:13) [4]

>Alex Y
можно работать и со StateImages+StateIndex


 
Alex Y ©   (2002-07-01 10:16) [5]

А еще вопрос.
Как сделать, чтобы при этом помечались все дочерние узлы?


 
MBo ©   (2002-07-01 10:31) [6]

обходи их, делая

Procedure TVSetCheck(TV:TTreeView;n:integer);
var
item:tTVItem;
j:integer;
begin
item.hItem:=TV.Items[n].ItemId;
item.mask:= TVIF_STATE;
TV.Perform(TVM_GETITEM,0,integer(@item));
item.state:=(item.state or $2000) and DWORD(not $1000);
item.statemask:=$FFFFFFFF;
TV.Perform(TVM_SETITEM,0,integer(@item));
end;


 
Alex Y ©   (2002-07-01 10:39) [7]

Нет, я имею ввиду, когда я мышкой выделяю один узел, то по какому событию мне помечать дочерние узлы?


 
MBo ©   (2002-07-01 10:42) [8]

думаю, по MouseUp проверять наличие детей и состояние (изменение) и тогда обходить


 
Alex Y ©   (2002-07-01 10:43) [9]

А если делать через StateImages+StateIndex, то на какое событие вешаться?
OnChange при щелчке на одном и том же узле не вызывается, а OnClick некрасиво работает - узел меняет состояние при щелчке на белой области TReeView.


 
MBo ©   (2002-07-01 10:49) [10]

>Alex Y
Пробуй, экспериментируй


 
Alex Y ©   (2002-07-01 10:56) [11]

Сделал, Спасибо!



Страницы: 1 вся ветка

Текущий архив: 2002.07.15;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
14-47678
Bocman
2002-06-17 10:43
2002.07.15
Глюк


3-47073
N A N
2002-06-18 13:30
2002.07.15
Как прекратить выборку данных


1-47405
BKV
2002-07-02 18:44
2002.07.15
Как включить scrollbar


14-47763
RIV
2002-06-12 14:37
2002.07.15
Кто лучший гитарист в мире?


4-47911
KiberArt
2002-05-11 10:52
2002.07.15
The KeyboardProc hook procedure is an application-defined