![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#16
|
||||
|
||||
|
Цитата:
Код:
type TTrackBar = class(ComCtrls.TTrackBar) protected procedure CreateParams(var Params: TCreateParams); override; end; type TForm1 = class(TForm) TrackBar1: TTrackBar; .... procedure TTrackBar.CreateParams(var Params: TCreateParams); begin inherited; Params.Style:= Params.Style or CommCtrl.TBS_TOOLTIPS; end; |
|
#17
|
||||
|
||||
|
Цитата:
Код:
TTrackBar = class(ComCtrls.TTrackBar)
procedure CreateParams(var Params: TCreateParams); override;
end;
...
procedure TTrackBar.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style := Params.Style and not TBS_ENABLESELRANGE or TBS_FIXEDLENGTH or TBS_TOOLTIPS;
end;Это не изврат, а вполне документированный метод изменения класса под свои нужды. Хотелось через SetWindowLong, но в Дельфи 7 так не получилось, хоть все стили установились. |
|
#18
|
||||
|
||||
|
Возник вопрос, этот код действует на всех наследников данного переделанного класса, а как попроще можно такое проделать лишь с одним экземпляром, - создать свой класс, изменить и его использовать вместо родительского, делал так, но это просто не одна строка в коде набирается, других вариантов случайно нет?
|
|
#19
|
||||
|
||||
|
Другой вариант, который не прошёл для TBS_TOOLTIPS, SetWindowLong или, действительно, писать свой класс.
|