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

Вниз

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

 
Matveih1 ©   (2008-06-27 11:45) [0]

Как сделать чтобы в компоненте TreeView можно было проставлять крыжи как в CheckBox


 
Palladin ©   (2008-06-27 11:46) [1]

Скачать компонент.


 
clickmaker ©   (2008-06-27 11:48) [2]

в принципе, через StateImages можно попробовать


 
Ega23 ©   (2008-06-27 11:52) [3]


> в принципе, через StateImages можно попробовать


ИМХО, лучше через Overlay


 
clickmaker ©   (2008-06-27 11:54) [4]

> лучше через Overlay

разве? Это же перекроет основные иконки, нет?
а State - будет слева


 
Ega23 ©   (2008-06-27 11:57) [5]


> разве? Это же перекроет основные иконки, нет?


Он не перекрывает, а накладывает.

Короче, зависит от того, есть ли у него вообще иконки...  :)


 
Milk   (2008-06-27 12:03) [6]

Не об этом ли речь?
SetWindowLong(TreeView1.Handle,GWL_STYLE,GetWindowLong(TreeView1.Handle,GW L_STYLE) or WM_VSCROLL);


 
Matveih1 ©   (2008-06-27 12:06) [7]


> Скачать компонент.

Какой и где скачать?
> Короче, зависит от того, есть ли у него вообще иконки...
>   :)

Не использовал. А можно пример


 
clickmaker ©   (2008-06-27 12:08) [8]

> [6] Milk   (27.06.08 12:03)
> Не об этом ли речь?

а скролл тут причем?


 
Milk   (2008-06-27 12:12) [9]


> clickmaker ©   (27.06.08 12:08) [8]

Скролл для того чтобы, если дерево слишком "высокое" позволить им пользоваться:)
Ну, а если "крыжики" это CheckBox-ы, то вполне решает проблему


 
clickmaker ©   (2008-06-27 12:21) [10]

> [9] Milk   (27.06.08 12:12)

как скролл может решить проблему "крыжиков"?


 
Matveih1 ©   (2008-06-27 12:28) [11]

Есть решение с примеров?


 
Milk   (2008-06-27 12:30) [12]

Да убрать or WM_VSCROLL и закончить диспут, только вот автор, что-то примолк:)


 
Milk   (2008-06-27 12:31) [13]


> Milk   (27.06.08 12:30) [12]
См. Milk   (27.06.08 12:03) [6]


 
Rouse_ ©   (2008-06-27 12:35) [14]

Крыжики говоришь? :) Хех :)))

unit CheckedTreeView;

interface

uses
 Windows, Messages, SysUtils, Classes, Controls, ComCtrls, CommCtrl;

type
 TGSCheckedTreeView = class(TTreeView)
 private
   FCheckBox: Boolean;
   procedure SetCheckBox(const Value: Boolean);
 public
   function GetChecked(Node: TTreeNode): Boolean;
   procedure SetChecked(Node: TTreeNode; Checked: Boolean);
 published
   property CheckBox: Boolean read FCheckBox write SetCheckBox default False;
 end;

procedure Register;

implementation

const
 TVIS_CHECKED = $2000;

procedure Register;
begin
 RegisterComponents("Test", [TGSCheckedTreeView]);
end;

{ TGSCheckedTreeView }

function TGSCheckedTreeView.GetChecked(Node: TTreeNode): Boolean;
var
 Item :TTVItem;
begin
 Item.Mask  := TVIF_STATE;
 Item.hItem := Node.ItemId;
 TreeView_GetItem(Node.TreeView.Handle, Item);
 Result := (Item.State and TVIS_CHECKED) = TVIS_CHECKED;
end;

procedure TGSCheckedTreeView.SetCheckBox(const Value: Boolean);
var
 FStyle: Integer;
begin
 FCheckBox := Value;
 FStyle := GetWindowLong(Handle, GWL_STYLE);
 if FCheckBox then
   FStyle := FStyle or TVS_CHECKBOXES
 else
   if (FStyle and TVS_CHECKBOXES) = TVS_CHECKBOXES then
     FStyle := FStyle and not TVS_CHECKBOXES;
 SetWindowLong(Handle, GWL_STYLE, FStyle);
 Repaint;
end;

procedure TGSCheckedTreeView.SetChecked(Node: TTreeNode; Checked: Boolean);
var
 Item :TTVItem;
begin
 FillChar(Item, SizeOf(TTVItem), 0);
 with Item do
 begin
   hItem     := Node.ItemId;
   Mask      := TVIF_STATE;
   StateMask := TVIS_STATEIMAGEMASK;
   if Checked then
     Item.State :=TVIS_CHECKED
   else
     Item.State :=TVIS_CHECKED shr 1;
   TreeView_SetItem(Node.TreeView.Handle, Item);
 end;
end;

end.


 
Milk   (2008-06-27 12:41) [15]


> Rouse_ ©   (27.06.08 12:35) [14]
> Крыжики говоришь? :) Хех :)))

В свое время пользовался этим Unit-ом. А затем показалось, что SetWindowLong проще.


 
Rouse_ ©   (2008-06-27 12:45) [16]


> А затем показалось, что SetWindowLong проще.

Да? А мне показалось что этот юнит его и использует :)


 
{RASkov} ©   (2008-06-27 12:47) [17]

> [13] Milk   (27.06.08 12:31)

5=5 и какой толк? :)


 
Milk   (2008-06-27 12:47) [18]


> Rouse_ ©   (27.06.08 12:45) [16]

:)


 
Milk   (2008-06-27 12:51) [19]

> {RASkov} ©   (27.06.08 12:47) [17]
Хотел ответить на
Matveih1 ©   (27.06.08 12:28) [11]
Есть решение с примеров?

промахнулся с со строкой Цитата:(


 
{RASkov} ©   (2008-06-27 13:06) [20]

> [19] Milk   (27.06.08 12:51)

Я имел в виду, что ты предлогаешь нечто такое:

N:=GetWindowLong(TreeView1.Handle,GW L_STYLE); //Пусть будет 5
//SetWindowLong(TreeView1.Handle,GWL_STYLE, N {or WM_VSCROLL}); //Т.е. предложил убрать WM_VSCROLL
SetWindowLong(TreeView1.Handle,GWL_STYLE, N); //Получилось с пустого в порожнее
вот и выходит: получил 5 и "сунул" 5 :)


 
Matveih1 ©   (2008-06-27 13:35) [21]

Может я что то не то делаю но у меня не работает!


 
clickmaker ©   (2008-06-27 13:41) [22]

для TVS_CHECKBOXES версия comctl32.dll должна быть >= 4.70


 
Rouse_ ©   (2008-06-27 13:45) [23]


> Matveih1 ©   (27.06.08 13:35) [21]
> Может я что то не то делаю но у меня не работает!

Так ты покажи как ты делаешь :)


> для TVS_CHECKBOXES версия comctl32.dll должна быть >= 4.70

т.е. должен быть установлен Internet Explorer 4.0 и выше :)


 
Matveih1 ©   (2008-06-27 13:49) [24]

Все хорошо - это я промазал! Спасибо


 
Matveih1 ©   (2008-06-27 13:54) [25]

Рисовать CheckBox - теперь рисует. А как программно понять выставлен крыж или нет


 
Rouse_ ©   (2008-06-27 14:26) [26]


> А как программно понять выставлен крыж или нет

GetChecked говорит выставлен или нет, SetChecked выставляет...


 
Matveih1 ©   (2008-06-27 14:37) [27]

Да все верно. Спасибо еще раз!



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

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

Наверх




Память: 0.53 MB
Время: 0.017 c
15-1213097229
Заочник-самоучка
2008-06-10 15:27
2008.07.27
Хочу совет


11-1188808520
Nikfel
2007-09-03 12:35
2008.07.27
Отображение системного контекстного меню эксплорера.


15-1213080452
{RASkov}
2008-06-10 10:47
2008.07.27
Ограничение доступа в интернет


15-1212916219
tesseract
2008-06-08 13:10
2008.07.27
eve-online А кто на форуме вообще играет, знаю что есть и много


15-1211663863
Германн
2008-05-25 01:17
2008.07.27
Насколько же я могу быть тупым!