Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.04 c
10-1112271485
BPK
2005-03-31 16:18
2006.01.29
Word.Application в окне моего приложения - как?


2-1136568214
Aleks
2006-01-06 20:23
2006.01.29
подскажите пожалуйсто как программно управлять архиватором


15-1136185376
begin...end
2006-01-02 10:02
2006.01.29
С Днём рождения! 2 января


15-1136062855
Anatoly Podgoretsky
2006-01-01 00:00
2006.01.29
С Новым Годом


2-1136976284
Новичек
2006-01-11 13:44
2006.01.29
Наименьшее значение Handle.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский