Вниз
Скачать: CL | DM;

ShellTreeView with checkbox   Найти похожие ветки 

 
Ups ©   (2005-12-22 09:32) [0]

Здравствуйте уважаемые мастера. Проблема состоит в следуещем: в 7 делфе кидаю на форму ShellTreeView в котором надо выбрать нужные папки с помощью чекбоксов. А вот как в этом дереве отобразить напротив каждой папки чекбокс незнаю :(


 
Rouse_ ©   (2005-12-22 09:37) [1]

Вот тебе маленький наследник от стандартного TTreeView, переделай на TShellTreeView

unit GSCheckedTreeView;

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("GrandSoft", [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.



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.034 c
4-1132058595
bogdan
2005-11-15 15:43
2006.01.29
ограничение доступа к файлу или каталогу


15-1136884541
Leonid
2006-01-10 12:15
2006.01.29
Как определить физический размер дисплея ?


15-1136048842
Arazel
2005-12-31 20:07
2006.01.29
Нужна полная документация и если можно примеры по NTFS


4-1132253502
reskator
2005-11-17 21:51
2006.01.29
несколько USB мышей в качестве датчиков перемещений


2-1136799037
softmaster
2006-01-09 12:30
2006.01.29
DBLookupComboBoxEh




   Наверх