[]
D>Не используй этот стиль. Самь добавь StateImage в виде чекбокса и переключай картинки на MouseUp (Смотри GetHitTestInfoAt, GetNodeAt)
Мотивация против использования этого стиля? Я использую — все ок. Под XP чекбоксы выглядят как надо, если темы включены, под более старыми виндами — как стандартные чекбоксики. В чем проблема использования этого стиля?
Здравствуйте, Flamer, Вы писали:
F>Здравствуйте, Danchik, Вы писали:
F>[]
D>>Не используй этот стиль. Самь добавь StateImage в виде чекбокса и переключай картинки на MouseUp (Смотри GetHitTestInfoAt, GetNodeAt)
F>Мотивация против использования этого стиля? Я использую — все ок. Под XP чекбоксы выглядят как надо, если темы включены, под более старыми виндами — как стандартные чекбоксики. В чем проблема использования этого стиля?
Контроля больше Люблю чтоб все тип-топ было. А XP стиль картинки можна и подгрузить
[]
D>Контроля больше Люблю чтоб все тип-топ было. А XP стиль картинки можна и подгрузить
В чем контроля больше? Просветите темного, плз. Отслеживать/устанавливать состояние чекбокса? Не проблема, делается на раз — около 15 строк кода. Так в чем суксь встроенной возможности задешево поиметь чекбоксы в TreeView, я так и не понял?
Здравствуйте, Flamer, Вы писали:
F>Здравствуйте, Danchik, Вы писали:
F>[]
D>>Контроля больше Люблю чтоб все тип-топ было. А XP стиль картинки можна и подгрузить
F>В чем контроля больше? Просветите темного, плз. Отслеживать/устанавливать состояние чекбокса? Не проблема, делается на раз — около 15 строк кода. Так в чем суксь встроенной возможности задешево поиметь чекбоксы в TreeView, я так и не понял?
Не тема для спора. Чесно.
Знаю что ты приверженец подхода "не извращайте стандартный интерфейс"
Покажи лучше человеку эти 15 строк. Сразу скажу что этот стиль не использую
Здравствуйте, Danchik, Вы писали:
D>Сразу скажу что этот стиль не использую
Вот именно поэтому и не стоит советовать другим не использовать то, чем не пользуешься сам. Я лишь указал на то, что есть и другая возможность, а мое недоумение вызвано вашим "не используй этот стиль". Сразу возникает вопрос "а почему?"
Здравствуйте, Flamer, Вы писали:
F>Здравствуйте, Danchik, Вы писали:
D>>Сразу скажу что этот стиль не использую
F>Вот именно поэтому и не стоит советовать другим не использовать то, чем не пользуешься сам.
Каюсь, неправильно выразился
F>Я лишь указал на то, что есть и другая возможность, а мое недоумение вызвано вашим "не используй этот стиль". Сразу возникает вопрос "а почему?"
Точно не помню давно это было, ой давно...
Ладно чтоб исправить ситуацию
type
TForm1 = class(TForm)
TreeView1: TTreeView;
procedure TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormCreate(Sender: TObject);
private{ Private declarations }
FSaveTVProc : TWndMethod;
procedure NewTreeViewProc (var Message : TMessage);
public{ Public declarations }end;
....
implementation
....
procedure TForm1.FormCreate(Sender: TObject);
var
aStyle : Cardinal;
begin
aStyle := GetWindowLong(TreeView1.Handle, GWL_STYLE);
aStyle := aStyle or $115;
SetWindowLong(TreeView1.Handle, GWL_STYLE, aStyle);
FSaveTVProc := TreeView1.WindowProc;
TreeView1.WindowProc := NewTreeViewProc;
end;
procedure TForm1.NewTreeViewProc(var Message: TMessage);
var
aHintTest : THitTests;
begin
case Message.Msg of
WM_LBUTTONDOWN :
begin
aHintTest := TreeView1.GetHitTestInfoAt(TWMLButtonDown (Message).XPos, TWMLButtonDown (Message).YPos);
if htOnStateIcon in aHintTest then begin{ чекать низзяя }
TWMLButtonDown (Message).Result := 0;
Dispatch(Message);
Exit;
end;
end;
end;
if Assigned (FSaveTVProc) then
FSaveTVProc (Message);
end;