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

Вниз

hIcon и SpeedButton   Найти похожие ветки 

 
IgoX   (2002-01-22 15:47) [0]

Привет каждому
Подскажите как если это можно имея hIcon поместить ее на SpeedButton


 
Serghei   (2002-01-22 15:55) [1]

Один метод но не самый лучший наверное и достаточно длинный!

Создаешь TImageList, в него запихиваешь свой Hicon при помощи метода AddIcon потом рисуешь это изображение на Glyph для кнопки.


 
Serghei   (2002-01-22 16:01) [2]

По моему так:

Var tmp_Icon : TIcon;
ImageList : TImageList;
tmp_BMP : TBitMap;
begin
tmp_Icon:=TIcon.Create;
ImageList:=TImageList.Create;
tmp_BMP:=TBitmap.Create;
//tmp_Icon.Handle:=LoadIcon ili ExtractAssociatedIcon(...)
//SpeedButton1.Glyph.Canvas.Loa
ImageList1.AddIcon(tmp_Icon);
ImageList1.GetBitmap(indexbitmapa, tmp_bmp);
SpeedButton1.Glyph.Assign(tmp_bmp);
end;


 
Serghei   (2002-01-22 16:09) [3]

Сорри, можно и не создавать дополнительный битмап просто пишешь

ImageList1.GetBitmap(indexbitmapa, SpeedButton1.Glyph);

Если получится, сообщи!
Удачи!


 
IgoX   (2002-01-22 17:55) [4]

Спасибо все работает а можно как нибудь без каких либо других
визуальных компонентов.


 
Serghei   (2002-01-22 18:01) [5]

Tac ietio i esti nevizualiniie componenti! :o)
TIcon i TImageList!
Citobi ne zagrujati svoi proceduri v proge, mojeshi sozdati functiu cotoraia vhodnim parametrom imeet iconcu, vernee ee handl a vihodnim - bitmap cotorii prisvaivaeshi svoemu SpeedButton.
Cioto tipa
SB.Glipgh:=IcoToBmp(_HI : HICON);
A po drugomu ia ne znaiu kak, ne proboval!
Udaci!


 
Serghei   (2002-01-22 18:09) [6]

Opiati ia!
Vspomnil escio odno sredstvo!
Porabotai s DrawIcon ili DrawIconEx risua ee na Glyph.Canvas dlia SpeedButton
Udaci!


 
IgoX   (2002-01-22 18:36) [7]

Через DrawIcon я пробывал но в GetDC я должен указать handle окна а SpeedButton таким не является, я прорисовал на обычную кнопку но после нажатия она исчезает
Вот я надыбал но несовсем то т.к. не все иконки нормально получаются
ICONINFO inf;
GetIconInfo(FileInfo.hIcon,&inf);
SpeedButton1->Glyph->Handle = inf.hbmColor;


 
Serghei   (2002-01-23 09:41) [8]

Почему ГетДС для окна, этот ДС ты получаешь для кнопкп, точнее
DrawIconEx(SpeedButton1.Glyph.Canvas.Handle,....)
Или я ошибаюсь?
Object.Canvas.Handle и есть тот самый ДС для обжекта (SpeedButton) насколько я помню!


 
Serghei   (2002-01-23 09:52) [9]

Да, и еще одно - не знаю как СпеедБатон а обычную кнопку ТБатон можно приделать с заголовком, с кнопками минимайз, максимайз, клоуз как и у нормального окна, то есть можно сделать из нее что-то вроде окна и передвигать ее по форме, изменять размеры. Это делается при помощо функции GetWindowLong i SetWindowLong. Так что фактически она и является окном!

Удачи!


 
IgoX   (2002-01-23 11:04) [10]

Specifies the Windows GDI handle to the device context for this canvas.
__property HDC Handle = {read=GetHandle, write=SetHandle, nodefault};
Set Handle to the HDC for the device context the canvas must draw into. When a windowed control responds to a Windows paint message, the HDC for drawing is passed in to the PaintWindow method. In other cases, an HDC can be obtained for a window by calling the GetDeviceContext method of a control. Additionally, Windows provides API calls to obtain an HDC for a printer or for a memory image.

Из help видно что это только для windowed control а SpeedButton таким не является, GetDeviceContext это одно и тоже что API функция GetDC(hwnd) а у SpeedButton нет hwnd


 
Serghei   (2002-01-23 11:24) [11]

Не помню уже где читал но точно помню что там было сказано что DC это эквивалентно Canvas.Handle - а тебе ведь именно это и надо, ведь ты рисуешь не самой кнопке а используя ее свойство Glyph которое при этом является TBitmap-ом и имеет ведь свойство Canvas.Handle что равно DC.


 
IgoX   (2002-01-23 11:32) [12]

Я попробывал но ни чего не вышло DrawIcon(SpeedButton1->Glyph->Canvas->Handle,0,0,FileInfo.hIcon);
GetLastError() выдает 0


 
Serghei   (2002-01-23 11:40) [13]

Cм.
TCanvas.handle (Properties)

Specifies the Windows GDI handle to the device context for this canvas.

property Handle: HDC;

Description

Set Handle to the HDC for the device context the canvas must draw into. When a windowed control responds to a Windows paint message, the HDC for drawing is passed in to the PaintWindow method. In other cases, an HDC can be obtained for a window by calling the GetDeviceContext method of a control. Additionally, Windows provides API calls to obtain an HDC for a printer or for a memory image.

Read the Handle property to supplement the drawing services provided by the TCanvas object with API calls that require a handle to a device context. Most of the Windows GDI calls require an HDC.
С ДровИкон должно получиться но только он тебе отрисует иконку в 32х32 а не 16х16, а вот с этим ДровИконЕх и у меня были те же самые проблемы - рисовал рисовал а ничего так и не отрисовывалось! :o( Фиг его знает почему - значит придется наверное тебе остановится на том варианте что ты реализовал вчера!
Удачи!


 
IgoX   (2002-01-23 12:10) [14]

Спасибо за отзыв



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

Форум: "Основная";
Текущий архив: 2002.02.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
4-19026
Fredy314
2001-12-11 14:22
2002.02.07
Как можно перехватить Копирование/вставку в буфер.


3-18764
voice
2002-01-13 12:07
2002.02.07
AppendRecord...


14-18982
smuggler
2001-12-19 13:23
2002.02.07
Вирус!


3-18731
der
2002-01-10 09:42
2002.02.07
Периодически возникает ошибка. Insufficient memory for this operation.


1-18914
Stexen
2002-01-23 22:26
2002.02.07
Компановка Екзешников





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