Створення BitBtn-кнопки в KOL
Вітаю! Підкажіть, будь ласка, як створити BitBtn-кнопку, якщо можна, наведіть приклад. Я знайшов такий опис: function NewBitBtn( AParent: PControl; const Caption: String; Options: TBitBtnOptions; Layout: TGlyphLayout; GlyphBitmap: HBitmap; GlyphCount: Integer): PControl;
Тільки не можу розібратися з властивістю GlyphBitmap: HBitmap.
MSDN: HBITMAP Handle для bitmap. Якщо щодо об'єктів KOL то це - TBitmap.Handle
Якщо картинка знаходиться в ресурсах модуля, що завантажується BitBtn1 := NewBitBtn( Form, "BitBtn1", [ ], glyphLeft, LoadBmp( hInstance, "BITBTN1_BITMAP", Result ), 1 );
Пишу такий рядок: BitBtn1:=NewBitBtn(Bparam,"",[bboNoCaption],glyphOver, LoadBmp( hInstance, "e:\vv.bmp", Result ),1).SetSize(25,25).PlaceDown.Shift 20,15);
Але або картинку не знаходить, або я не знаю. Змінна Result: Pobj просто оголошена і нічому не дорівнює. (Нагадаю, це для KOL)
порада: поставити MCK та а) не паритися б) або дивитися як робить MCK і копіювати його виклики у свій чистий проект.
По ходу теж постало питання: підчіплюю до BitBtn бітмап картинку, що представляє із себе зображення на білому тлі, а на кнопці це біле тло залишається білим, тобто. непрозорим. Лівий нижній піксель у біт-мапі білий, тобто. якщо використовую ту саму картинку на VCL SpeedButton, то все OK - прозорий фон. Чи тут потрібно окремо маску якимось чином задавати? Яким?
А чи взагалі реально зробити кнопку прозорою?
Ау, гуру, може хто відповість на 2 останні запитання?
> А взагалі реально зробити кнопку прозорою?Так> Ау, гуру, може хто відповість на 2 останні питання?Так, я можу. (Хоч і не гуру) Відповів? :)
А якщо серйозно -заженіть картинку в ImageList, а його прикрутіть до BitBtn. Це найпростіший (для MCK) спосіб.
А якщо з dll?
> А якщо серйозно - заженіть картинку в ImageList, а його прикрутіть > до BitBtn. Це найпростіший (для MCK) спосіб.
Спасибі, допомогло. Але я людина настирлива, а тому ще питання: чому KOL-овський BitBtn не хоче теми WinXP сприймати - кнопка, як була сірим квадратом, так цим квадратом і залишається, не дивлячись на всі маніфести. Як її змусити бути гарною?
> Чому KOL-овський BitBtn не хоче теми WinXP сприйматиТому, що це кнопка зі своїм малюнком BS_OWNERDRAW. Малює KOL (а не Windows). Але код відтворення звичайний без використання тем. Можна спробувати доробити приблизно як це зроблено для GRAPHCTL_XPSTYLES (BitBtn у графічних контролах, на жаль, відсутня)