Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Компоненты";
Текущий архив: 2006.08.20;
Скачать: [xml.tar.bz2];

Вниз

Компонент кнопки со стилем BS_FLAT   Найти похожие ветки 

 
Sp_pnz ©   (2006-01-19 03:28) [0]

Здравствуйте, такой вопрос, хотелось бы создать копонент кнопки с о стилем BS_FLAT ,  в какой стороне копать? как выбрать родителя?


 
Юрий Зотов ©   (2006-01-19 09:26) [1]

Кнопку и выбрать. Добавить булево поле FFlat, свойство Flat, метод SetFlat и перекрыть метод CreateParams. Контрольное время - 5 минут. :о)


 
Sp_pnz ©   (2006-01-20 14:35) [2]

Всё так просто?:)


 
olegz77   (2006-01-20 15:16) [3]

а как обновлять свойство Flat??? Как я понимаю так:  в методе SetFlat надо, наверное, с помощью Get/SetWindowLong установить (или сбросить) флаг BS_FLAT и вызвать RecreateWnd. Так или нет?


 
olegz77   (2006-01-20 15:23) [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;


 
Юрий Зотов ©   (2006-01-20 15:49) [5]


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)


 
Sp_pnz ©   (2006-01-20 16:26) [6]

Спасибо, получилось, а вот встречный вопрос, а можно ли то же самое проделать, но уже с Родителем  - TbitBtn ?


 
Sp_pnz ©   (2006-01-20 16:40) [7]

У меня не получилось...



Страницы: 1 вся ветка

Форум: "Компоненты";
Текущий архив: 2006.08.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.122 c
1-1152025091
Piter
2006-07-04 18:58
2006.08.20
Непонятная работа FindFirst / FindNext


2-1154158166
Батя
2006-07-29 11:29
2006.08.20
Реестр


3-1150177063
Layner
2006-06-13 09:37
2006.08.20
Locate на 2 поля, возможно?


1-1152085849
JohnnySE
2006-07-05 11:50
2006.08.20
работа с DLL и ее интерфейсами


2-1154511794
Gnoll
2006-08-02 13:43
2006.08.20
FindFirst, FindNext .....





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский