Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание BitBtn-кнопки в KOL. [KOL, Windows]


Alexei6021 ©   (2006-05-06 12:54:00) 

Здравствуйте! Подскажите, пожалуйста, как создать BitBtn-кнопку, если можно, приведите пример. Я нашел такое описание:

function NewBitBtn( AParent: PControl; const Caption: String; Options: TBitBtnOptions; Layout: TGlyphLayout; GlyphBitmap: HBitmap; GlyphCount: Integer ): PControl;


Только никак не могу разобраться со свойством GlyphBitmap: HBitmap.


ECM   (2006-06-17 12:21:00) [1]

> отчего KOL-овский BitBtn не хочет темы WinXP воспринимать

Потому, что это кнопка с собственной отрисовкой BS_OWNERDRAW. Рисует KOL (а не Windows). Но код отрисовки обычный без использования тем. Можно попробовать доделать - примерно как это сделано для GRAPHCTL_XPSTYLES (BitBtn в графических контролах, к сожалению, отсутствует)


YDS   (2006-06-17 11:29:00) [2]


> А если серьёзно - загоните картинку в ImageList а его прикрутите
> к BitBtn. Это самый простой (для MCK) способ.


Спасибо, помогло.
Но я человек настырный, а потому еще вопрос: отчего KOL-овский BitBtn не хочет темы WinXP воспринимать - кнопа, как была серым квадратом, так этим квадратом и остается, не смотря на все манифесты. Как ее заставить быть красивой?


parovoZZ   (2006-06-17 06:34:00) [3]

А если ли из dll?


ECM   (2006-06-15 17:23:00) [4]


> А вообще реально сделать кнопку прозрачной?

Да

> Ау, гуру, может кто ответит на 2 последних вопроса?

Да, я могу ... (хотя и не гуру)
Ответил? :)

А если серьёзно - загоните картинку в ImageList а его прикрутите к BitBtn. Это самый простой (для MCK) способ.


YDS   (2006-06-15 16:43:00) [5]

Ау, гуру, может кто ответит на 2 последних вопроса?


parovoZZ   (2006-06-11 21:40:00) [6]

А вообще реально сделать кнопку прозрачной?


YDS   (2006-06-09 17:40:00) [7]

По ходу тоже возник вопрос: подцепляю к BitBtn битмап картинку, представляющую из себя изображение на белом фоне, а на кнопке этот белый фон остается белым, т.е. непрозрачным. Левый нижний пиксель в битмапе белый, т.е. если использую ту же картинку на VCL SpeedButton, то все OK - фон прозрачный. Или тут нужно отдельно маску каким-то образом задавать? Каким?


Vladimir Kladov   (2006-05-06 21:34:00) [8]

совет: поставить MCK и а) не париться б) либо смотреть как делает MCK и копировать его вызовы в свой чистый проект.


ECM   (2006-05-06 19:11:00) [9]

Неужели нельзя внимательно почитать и подумать :)

> ECM ©   (06.05.06 13:40) [2]
> Если картинка находится в ресурсах загружаемого модуля


> Но либо картинку не находит

Конечно - откуда в ресурсах модуля картинка с именем ресурса 'e:\vv.bmp'?
Если картинка лежит отдельно - то её надо предварительно загрузить. Например так:
var
 BitBtn: PControl;
 B: PBitmap;
begin
 B := NewBitmap(100,100);
 B.LoadFromFile('C:\WINDOWS\Blue Lace 16.bmp');
 BitBtn := NewBitBtn(Form,'BitBtn',[],glyphLeft,B.Handle,1);

...


Alexei6021   (2006-05-06 17:53:00) [10]

Пишу такую строку: BitBtn1:=NewBitBtn(Bparam,'',[bboNoCaption],glyphOver, LoadBmp( hInstance, 'e:\vv.bmp', Result ),1).SetSize(25,25).PlaceDown.Shift(20,15);

Но либо картинку не находит, либо я не знаю.
Переменная Result:Pobj просто объявлена и ничему не равна.
Что опять не так? (Напомню, это для KOL)


ECM   (2006-05-06 13:40:00) [11]

Если картинка находится в ресурсах загружаемого модуля
BitBtn1 := NewBitBtn( Form, 'BitBtn1', [  ], glyphLeft, LoadBmp( hInstance, 'BITBTN1_BITMAP', Result ), 1 );


ECM   (2006-05-06 13:30:00) [12]

MSDN: HBITMAP Handle to a bitmap.  
Если в относительно объектов KOL то это - TBitmap.Handle


Наверх

Титульная страница Поиск, карта сайта Написать письмо