Форум: "Основная";
Текущий архив: 2006.01.29;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.072 c