Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.29;
Скачать: 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 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.055 c
2-1137178412
tech
2006-01-13 21:53
2006.01.29
Мастера, поделитесь опытом!


2-1136446969
Е.
2006-01-05 10:42
2006.01.29
Заголовок формы


3-1133012302
начиннающий
2005-11-26 16:38
2006.01.29
eoAsyncExecute


2-1137341442
Новичечек
2006-01-15 19:10
2006.01.29
Помогите пожалуйста новечку!!


15-1136983081
вразлет
2006-01-11 15:38
2006.01.29
Sound