Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.03.11;
Скачать: 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 вся ветка

Текущий архив: 2007.03.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.041 c
15-1171537147
ryslan56
2007-02-15 13:59
2007.03.11
HTML


3-1166154309
merko$
2006-12-15 06:45
2007.03.11
Подключение к удаленной БД


15-1171602255
Думкин
2007-02-16 08:04
2007.03.11
Как надо сдавать зачеты. :)


2-1172056986
Selected
2007-02-21 14:23
2007.03.11
Выделить файл


2-1171965728
lic
2007-02-20 13:02
2007.03.11
Процедура, требующая параметры типа pointer