Вниз
Скачать: CL | DM;

Создание BitBtn-кнопки в KOL.   Найти похожие ветки 

← →
Alexei6021   (2006-05-06 12:54) [0]

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

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


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


← →
ECM ©   (2006-05-06 13:30) [1]

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


← →
ECM ©   (2006-05-06 13:40) [2]

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


← →
Alexei6021   (2006-05-06 17:53) [3]

Пишу такую строку: 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 19:11) [4]

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

> 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);

...


← →
Vladimir Kladov   (2006-05-06 21:34) [5]

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


← →
YDS   (2006-06-09 17:40) [6]

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


← →
parovoZZ ©   (2006-06-11 21:40) [7]

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


← →
YDS   (2006-06-15 16:43) [8]

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


← →
ECM ©   (2006-06-15 17:23) [9]


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

Да

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

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

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


← →
parovoZZ ©   (2006-06-17 06:34) [10]

А если ли из dll?


← →
YDS   (2006-06-17 11:29) [11]


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


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


← →
ECM ©   (2006-06-17 12:21) [12]

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

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



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

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.031 c
2-1172051723
Максимус
2007-02-21 12:55
2007.03.11
Связанные таблицы


1-1168947051
Ромка
2007-01-16 14:30
2007.03.11
Сочетания клавиш


6-1159806707
vedm
2006-10-02 20:31
2007.03.11
TIdMultiPartFormDataStream и большие файлы.


15-1171349221
chvank
2007-02-13 09:47
2007.03.11
Photoshop


2-1171788207
Egoist
2007-02-18 11:43
2007.03.11
Tray Icon - Msg, WM_USER, Msg




   Наверх