![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Компонент кнопки со стилем BS_FLAT [D7]
Sp_pnz © (2006-01-19 03:28:00)Здравствуйте, такой вопрос, хотелось бы создать копонент кнопки с о стилем BS_FLAT , в какой стороне копать? как выбрать родителя?
Sp_pnz (2006-01-20 16:40:00) [1]У меня не получилось...
Sp_pnz (2006-01-20 16:26:00) [2]Спасибо, получилось, а вот встречный вопрос, а можно ли то же самое проделать, но уже с Родителем - TbitBtn ?
Юрий Зотов (2006-01-20 15:49:00) [3]
type
TFlatButton = class(TButton)
private
FFlat: boolean;
procedure SetFlat(const Value: boolean);
protected
procedure CreateParams(Params: TCreateParams); override;
published
property Flat: boolean read FFlat write SetFlat default False;
end;
procedure TFlatButton.CreateParams(Params: TCreateParams);
begin
inherited;
if FFlat then
Params.Style := Params.Style or BS_FLAT
end;
procedure TFlatButton.SetFlat(const Value: boolean);
begin
if FFlat <> Value then
begin
FFlat := Value;
RecreateWnd;
end
end;
Это полный код. Пяти минут даже много.
:o)
olegz77 (2006-01-20 15:23:00) [4]не. Все намного проще. Я уже сделал.
1. В CreateParams:
inherited CreateParams(Params);
if FFlat then
Params.Style := Params.Style or BS_FLAT;
2. В SetFlat:
if FFlat <> Value then
begin
FFlat := Value;
RecreateWnd;
end;
olegz77 (2006-01-20 15:16:00) [5]а как обновлять свойство Flat??? Как я понимаю так: в методе SetFlat надо, наверное, с помощью Get/SetWindowLong установить (или сбросить) флаг BS_FLAT и вызвать RecreateWnd. Так или нет?
Sp_pnz (2006-01-20 14:35:00) [6]Всё так просто?:)
Юрий Зотов (2006-01-19 09:26:00) [7]Кнопку и выбрать. Добавить булево поле FFlat, свойство Flat, метод SetFlat и перекрыть метод CreateParams. Контрольное время - 5 минут. :о)