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