On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 6462
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.10.19 13:47. Заголовок: Динамическое изменение размеров иконки/картинки ?


Всем привет.
Столкнулся с проблемой изменения размеров иконки/картинки на кнопке.
Имеется иконка + картинка одного размера в ресурсах проги.
iSanta128         ICON           res\Santa128x128.ico 
Santa128 PNG res\santa128x128.png

Как на базе этой иконки/картинки получить другой размер ?
Есть ли какие функции в MiniGui или в FW ?
В МиниГуи можно же загрузить из ресурса объект и получить его хендл:
M->hImg   := LoadImage( "Santa128" )

А хенд на кнопку как можно поместить ?
И можно ли делать преобразования иконки/картинки по этому хендлу ?
Я слабо разбираюсь в этой тематике, просветите пожалуйста меня.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 28 , стр: 1 2 All [только новые]


постоянный участник




Пост N: 6463
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.10.19 19:13. Заголовок: Смену иконки на кноп..


Смену иконки на кнопки в МиниГуи можно делать так:
   SetProperty ( "wMain", "Btn_01" , "Icon" , cFilePath( hb_ProgName() ) + "\Res\HP.ico" ) 
А как можно сделать смену иконки через хендл загруженной иконки ?
  hIcoNew := LoadImage( cFilePath( hb_ProgName() ) + "\Res\HP.ico" )


Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1598
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 07.10.19 21:29. Заголовок: Andrey пишет: как ..


Andrey пишет:

 цитата:
как можно сделать смену иконки через хендл загруженной иконки ?


У меня получилось сделать таким образом в контрольном примере:
FUNCTION SetHBitmapFromhIcon( cIcon ) 

LOCAL hIcon, hWnd

hIcon := LoadIcon( cIcon )

Form_1.Button_8.HBitmap := hIcon

hWnd := GetControlHandle ( 'Button_8', 'Form_1' )

SendMessage ( hWnd, STM_SETIMAGE, IMAGE_ICON, hIcon )

RETURN NIL


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2935
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.10.19 22:08. Заголовок: Есть рассогласование..


Есть рассогласование в выделенных местах
 
*-----------------------------------------------------------------------------*
FUNCTION _EraseControl ( i, p )
*-----------------------------------------------------------------------------*
LOCAL hWnd
LOCAL mVar
LOCAL t, x

x := _HMG_aControlFontHandle

IF ISNUMERIC ( x ) .AND. !Empty ( x ) .AND. ;
!( ( t := AScan ( _HMG_aControlHandles, x ) ) > 0 .AND. _HMG_aControlType [t] == "FONT" )
DeleteObject ( x )
ENDIF

IF _HMG_aControlType $ "OBUTTON" .AND. !Empty( _HMG_aControlMiscData1 )
DestroyIcon ( _HMG_aControlBrushHandle )
ELSE
DeleteObject ( _HMG_aControlBrushHandle )
ENDIF

...
и
*-----------------------------------------------------------------------------*
STATIC FUNCTION _SetGetImageHBitmap ( ControlName , ParentForm , hBitmap )
*-----------------------------------------------------------------------------*
LOCAL hWnd
LOCAL RetVal
LOCAL i

IF ( i := GetControlIndex ( ControlName , ParentForm ) ) > 0

IF PCount() == 2

RetVal := _HMG_aControlBrushHandle

ELSE

IF _HMG_aControlBrushHandle <> 0
DeleteObject ( _HMG_aControlBrushHandle )
ENDIF

_HMG_aControlBrushHandle := hBitmap
hWnd := GetControlHandle ( ControlName, ParentForm )

SendMessage ( hWnd, STM_SETIMAGE, IMAGE_BITMAP, hBitmap )
...


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2936
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.10.19 22:10. Заголовок: Упс, пролетело, но ..


Упс, [ i ] пролетело, но должно быть понятно

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6464
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.10.19 22:55. Заголовок: На кнопках в меню вс..


На кнопках в меню всегда делаю примерно так:
         //           1.text      2.ico       3.ico    4.font   5.backcolor   6.font  7.backcolor 
aBtn1 := { "Button 1", "iSantax1", "iSantax2", BLACK, {159,191,236}, YELLOW, {128,0,0} }
@ nY, nX BUTTONEX Btn_01 WIDTH nBtnW HEIGHT nBtnH ;
CAPTION aBtn1[1] ICON aBtn1[2] BOLD SIZE nFSBtn ;
FLAT NOXPSTYLE HANDCURSOR NOTABSTOP ;
FONTCOLOR aBtn1[4] BACKCOLOR aBtn1[5] ;
ON MOUSEHOVER ( This.Fontcolor := This.Cargo[6], This.Backcolor := This.Cargo[7], This.Icon := This.Cargo[3] ) ;
ON MOUSELEAVE ( This.Fontcolor := This.Cargo[4], This.Backcolor := This.Cargo[5], This.Icon := This.Cargo[2] ) ;
ACTION _wPost( 1, This.Index ) ;
ON INIT { || This.Cargo := aBtn1 }

Сменить то на кнопке ОДНУ иконку получиться, а как тогда 2 иконки поменять можно будет ?
Может вместо имен иконок в ресурсном файле задавать хендлы иконок ?
А как можно изменить размер иконок ? Через какую функцию ?

Вот мой пример - https://cloud.mail.ru/public/4eVv/LYoFJ8vbd

А можно получить из иконки 128х128 программно другие размеры иконок ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2937
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.10.19 10:56. Заголовок: Andrey пишет Сменить..


Andrey пишет
 цитата:
Сменить то на кнопке ОДНУ иконку получиться


Нормально (будет освобождаться память) можно не иконки, см. текст выше
 цитата:
Есть рассогласование в выделенных местах



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6465
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.10.19 12:36. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
hIcon := LoadIcon( cIcon )
Form_1.Button_8.HBitmap := hIcon



Т.е. можно будет использовать для иконок такой синтаксис:
            //           1.text                2.ico                          3.ico                    4.font   5.backcolor   6.font  7.backcolor  
aBtn1 := { "Button 1", LoadIcon("iSantax1"), LoadIcon("iSantax2"), BLACK, {159,191,236}, YELLOW, {128,0,0} }
@ nY, nX BUTTONEX Btn_01 WIDTH nBtnW HEIGHT nBtnH ;
CAPTION aBtn1[1] ICON aBtn1[2] BOLD SIZE nFSBtn ;
FLAT NOXPSTYLE HANDCURSOR NOTABSTOP ;
FONTCOLOR aBtn1[4] BACKCOLOR aBtn1[5] ;
ON MOUSEHOVER ( This.Fontcolor := This.Cargo[6], This.Backcolor := This.Cargo[7], This.HBitmap := This.Cargo[3] ) ;
ON MOUSELEAVE ( This.Fontcolor := This.Cargo[4], This.Backcolor := This.Cargo[5], This.HBitmap := This.Cargo[2] ) ;
ACTION _wPost( 1, This.Index ) ;
ON INIT { || This.Cargo := aBtn1 }



Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1599
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 08.10.19 15:23. Заголовок: SergKis пишет: Есть..


SergKis пишет:

 цитата:
Есть рассогласование в выделенных местах


Прошу прощения, был не прав.
Ниже привожу рабочий вариант этой функции:

 цитата:
FUNCTION SetBtnIconPicture( cIcon )  

LOCAL hIcon, hWnd, idx := Form_1.Button_8.Index

DestroyIcon( _HMG_aControlBrushHandle [idx] )

hIcon := LoadIconByName( cIcon )

hWnd := GetControlHandle ( 'Button_8', 'Form_1' )

SendMessage ( hWnd, STM_SETIMAGE, IMAGE_ICON, hIcon )

_HMG_aControlPicture [idx] := cIcon
_HMG_aControlBrushHandle [idx] := hIcon

RedrawWindow ( hWnd )

RETURN NIL


Но, конечно, проще будет написать так:

 цитата:
Form_1.Button_8.Picture := 'button5.ICO'


вместо вызова этой дополнительной функции

 цитата:
SetBtnIconPicture('button5.ICO')



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6466
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.10.19 16:14. Заголовок: Вообще то идея была ..


Вообще то идея была немного другая.
Имя одну иконку 128х128 в ресурсах - динамически изменять размер иконки при изменении размера кнопки.
Т.е. из иконки 128х128 меняем размер и передаём изменённые хендлы двух иконок в массив This.Cargo := aBtn1
aBtn1[2] := новый хендл иконки
aBtn1[3] := новый хендл иконки
Тогда смена иконок будет идти автоматом, если сделать This.HBitmap := This.Cargo[3] и This.HBitmap := This.Cargo[2]

Если начать использовать LoadIconByName( cIcon ), т.е. контейнер иконок в ресурсах, то с BCC 5.51 ничего не выйдет.
Чаще всего ошибка сборки:
Turbo Incremental Link 5.66 Copyright (c) 1997-2002 Borland
Fatal: Access violation. Link terminated.
hbmk2[Icons_All]: Error: Running linker. 2

Не понимает линковщик контейнеров иконок.
Как это обойти, не знаю.
Есть муторный вариант создать каждую иконку для каждого размера и помещать в отдельные папки
 
Exit16 ICON res\16\Exit.ico
Exit32 ICON res\32\Exit.ico
Exit64 ICON res\64\Exit.ico
Exit72 ICON res\72\Exit.ico
Exit96 ICON res\96\Exit.ico
Exit128 ICON res\128\Exit.ico

Но тогда работы будет огого...

Вот и хотелось бы иметь одну иконку в ресурсах, а из неё получать "на лету" другие размеры и передавать на кнопку для событий:
ON MOUSEHOVER ( This.Fontcolor := This.Cargo[6], This.Backcolor := This.Cargo[7], This.HBitmap := This.Cargo[3] ) ;   
ON MOUSELEAVE ( This.Fontcolor := This.Cargo[4], This.Backcolor := This.Cargo[5], This.HBitmap := This.Cargo[2] ) ;


Возможно ли добавить новый синтаксис для кнопки ?
This.HBitmap := hIcon

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2938
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.10.19 16:28. Заголовок: Andrey В ButtonEx н..


Andrey
В ButtonEx на входе image или icon имена, т.е. load... делается внутри и destroy тоже делается внутри по разному для image и icon. Для Load... image\icon вне ButtonEx надо решить вопрос, кто будет делать Destroy... image\icon ? Скорее всего, destroy надо выносить на разработчика, т.е. сделал Load... делай и Destroy ... . Не уверен, что это надо и надо ломать существующую схему.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2939
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.10.19 16:37. Заголовок: PS Изменять размер i..


PS
Изменять размер icon \ image есть параметры IMAGESIZE nImgSize, nImgSize, ты знаешь. Вот и играй ими, да есть небольшое искажение при этом, если не 128х128 использовать а 64x64, то искажения меньше

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6467
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.10.19 18:28. Заголовок: SergKis пишет: Изме..


SergKis пишет:

 цитата:
Изменять размер icon \ image есть параметры IMAGESIZE nImgSize, nImgSize, ты знаешь.


Размеры иконок изменить нельзя. Можно изменить размеры image. А мне нужно пока для icon.

SergKis пишет:

 цитата:
Не уверен, что это надо и надо ломать существующую схему.


Можно и не ломать.
Тогда нужно бы сделать новый объект кнопки BUTTON2EX или BUTTON2H или BUTTONICO чисто под хендл иконки.
В С же есть хендл иконки, почему в МиниГуи нельзя ?
И - destroy надо выносить на разработчика, можно и на разработчика.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6468
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.10.19 21:42. Заголовок: Вот получился пример..


Вот получился пример с изменение размеров иконок.
Правда меняются только иконки на форме, для событий ON MOUSEHOVER и ON MOUSELEAVE не знаю как делать.

Вот пример - https://cloud.mail.ru/public/8kjH%2F3N39UouCy

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1600
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.10.19 10:36. Заголовок: Andrey пишет: получ..


Andrey пишет:

 цитата:
получился пример с изменение размеров иконок


Благодарю за Ваш пример!
Добавил эту возможность в ядро библиотеки.
Теперь функция изменения размера иконок выглядит так:

 цитата:
// вызвать изменение размера иконок 
FUNCTION ChangeIcons(aIcoName)
LOCAL hIcoNew, cResourceName, aBtn
LOCAL w := wMain.Spinner_1.Value
LOCAL h := wMain.Spinner_1.Value

//cResourceName := "iSantax1" //GetStartUpFolder() + "\Res\Santa.ico"
aBtn := This.Btn_01.Cargo
cResourceName := aBtn[2]
hIcoNew := LoadIconByName( cResourceName, w, h )
wMain.Btn_01.Icon := hIcoNew
// SetBtnIconPicture(wMain.Btn_01.Handle, wMain.Btn_01.Index, hIcoNew)

//cResourceName := "iFolder1" //GetStartUpFolder() + "\Res\Folder.ico"
aBtn := This.Btn_02.Cargo
cResourceName := aBtn[2]
hIcoNew := LoadIconByName( cResourceName, w, h )
wMain.Btn_02.Icon := hIcoNew
// SetBtnIconPicture(wMain.Btn_02.Handle, wMain.Btn_02.Index, hIcoNew)

//cResourceName := "iHMGx1" //GetStartUpFolder() + "\Res\HP.ico"
aBtn := This.Btn_03.Cargo
cResourceName := aBtn[2]
hIcoNew := LoadIconByName( cResourceName, w, h )
wMain.Btn_03.Icon := hIcoNew
// SetBtnIconPicture(wMain.Btn_03.Handle, wMain.Btn_03.Index, hIcoNew)

//cResourceName := "iExitx1" //GetStartUpFolder() + "\Res\Exit.ico"
aBtn := This.Btn_04.Cargo
cResourceName := aBtn[2]
hIcoNew := LoadIconByName( cResourceName, w, h )
wMain.Btn_04.Icon := hIcoNew
// SetBtnIconPicture(wMain.Btn_04.Handle, wMain.Btn_04.Index, hIcoNew)

RETURN NIL


Andrey пишет:

 цитата:
есть хендл иконки, почему в МиниГуи нельзя ?


Теперь будет возможно работать с указателем иконки
Благодарю за помощь

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1601
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.10.19 10:51. Заголовок: Andrey пишет: для с..


Andrey пишет:

 цитата:
для событий ON MOUSEHOVER и ON MOUSELEAVE не знаю как делать


Теперь можно записать определение кнопки для событий ON MOUSEHOVER и ON MOUSELEAVE таким образом:

 цитата:
         aBtn1 := { "Button 1", "iSantax1", "iSantax2", BLACK, {159,191,236}, YELLOW, {128,0,0}  } 
@ nY, nX BUTTONEX Btn_01 WIDTH nBtnW HEIGHT nBtnH ;
CAPTION aBtn1[1] ICON aBtn1[2] BOLD SIZE nFSBtn ;
FLAT NOXPSTYLE HANDCURSOR NOTABSTOP ;
FONTCOLOR aBtn1[4] BACKCOLOR aBtn1[5] ;
ON MOUSEHOVER ( This.Fontcolor := This.Cargo[6], This.Backcolor := This.Cargo[7], This.Icon := LoadIconByName( This.Cargo[3], nIcoSize, nIcoSize ) ) ;
ON MOUSELEAVE ( This.Fontcolor := This.Cargo[4], This.Backcolor := This.Cargo[5], This.Icon := LoadIconByName( This.Cargo[2], nIcoSize, nIcoSize ) ) ;
ACTION _wPost( 1, This.Index ) ;
ON INIT { || This.Cargo := aBtn1 }

Работает

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2940
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.10.19 11:30. Заголовок: gfilatov2002 В прод..


gfilatov2002
В продолжении надо использовать
_HMG_aControlHeadClick [k] := { imagewidth, imageheight }
т.е.
This.IconWidth, This.IconSize или для image и icon одинаково
This.ImageWidth
This.ImageHeight
This.Btn_01.ImageWidth
This.Btn_01.ImageHeight
wMain.Btn_01.ImageWidth
wMain.Btn_01.ImageHeight
тогда заданные размеры в
#xcommand @ <row>,<col> BUTTONEX <name> ;
...
[ PICTURE <bitmap> ] ;
[ IMAGESIZE <imagewidth> , <imageheight> ] ;
[ ICON <icon> ] ;
...
можно использовать в то же
This.Icon := LoadIconByName( This.Cargo[3], This.ImageWidth, This.ImageHeight )

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1602
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.10.19 12:02. Заголовок: SergKis пишет: для ..


SergKis пишет:

 цитата:
для image и icon одинаково
This.ImageWidth
This.ImageHeight


Принято.
Благодарю за дельное предложение

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6469
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 09.10.19 13:30. Заголовок: Ура ! :sm178: Тепе..


Ура !
Теперь можно в ресурсах держать только одну иконку.
До этого столько времени уходило на рисовку и написание ресурсов....

Осталось разобраться с PNG-картинками.
Вот проект - https://cloud.mail.ru/public/JX9a%2FjkeCeJ9cX

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1603
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.10.19 14:27. Заголовок: Andrey пишет: Остал..


Andrey пишет:

 цитата:
Осталось разобраться с PNG-картинками


Легко: для этого даже не надо ничего изменять в исходниках библиотеки.

Ниже дополненный код Вашего примера:

 цитата:
// вызвать изменение размера картинок 
FUNCTION ChangePicture()
LOCAL hIcoNew, cResourceName, aBtn
LOCAL w := wMain.Spinner_1.Value
LOCAL h := wMain.Spinner_1.Value

aBtn := This.Btn_01.Cargo
cResourceName := aBtn[2]
SetBtnPicture(wMain.Btn_01.Index, 'Btn_01', cResourceName, w, h)

aBtn := This.Btn_02.Cargo
cResourceName := aBtn[2]
SetBtnPicture(wMain.Btn_02.Index, 'Btn_02', cResourceName, w, h)

aBtn := This.Btn_03.Cargo
cResourceName := aBtn[2]
SetBtnPicture(wMain.Btn_03.Index, 'Btn_03', cResourceName, w, h)

aBtn := This.Btn_04.Cargo
cResourceName := aBtn[2]
SetBtnPicture(wMain.Btn_04.Index, 'Btn_04', cResourceName, w, h)

RETURN NIL

////////////////////////////////////////////////////////////////////////////
FUNCTION SetBtnPicture( idx, cBtnName, cResourceName, w, h )

_HMG_aControlHeadClick [idx][1] := w
_HMG_aControlHeadClick [idx][2] := h

wMain.&(cBtnName).Picture := cResourceName

RETURN NIL



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6470
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 09.10.19 15:56. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Легко: для этого даже не надо ничего изменять в исходниках библиотеки.


Спасибо БОЛЬШОЕ !
А с иконками когда пример будет работать ?

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1604
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.10.19 16:02. Заголовок: Andrey пишет: с ик..


Andrey пишет:

 цитата:
с иконками когда пример будет работать ?


После выхода новой сборки 19.10

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6471
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 09.10.19 17:03. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
После выхода новой сборки 19.10



Ждем с нетерпеньем !

На сайте http://www.hmgextended.com/download.html :
Harbour MiniGUI Extended Edition 19.08 setup.
Includes MiniGUI libraries, include files, development tools, source code, sample applications, documentation, Harbour compiled libraries, Harbour include files and Harbour compiler binaries. Libraries are compiled for Borland C++.
Borland C++ Compiler version 5.8


Borland C++ Compiler version 5.8 - это сейчас Open Source лицензия ?
Не хотелось бы попадать под всякие разборки...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6475
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.10.19 09:25. Заголовок: Всем привет ! В дого..


Всем привет !
В догонку к исправлениям для иконок.
Имеем сейчас в МиниГуи такую команду:
   DRAW ICON IN WINDOW Form_1 AT 0, 0 PICTURE cIco WIDTH 96 HEIGHT 96 COLOR aBackColor

Можно ли сделать/добавить вот такой новый синтаксис:
   nImgSize := 48 
hIco := LoadIconByName( cIco, nImgSize, nImgSize )
DRAW ICON IN WINDOW Form_1 AT 0, 0 PICTURE hIco WIDTH nImgSize HEIGHT nImgSize COLOR aBackColor
или
DRAW ICON IN WINDOW Form_1 AT 0, 0 HPICTURE hIco WIDTH nImgSize HEIGHT nImgSize COLOR aBackColor

Т.е. показ иконки через загруженный хендл иконки ?

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1605
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 12.10.19 18:25. Заголовок: Andrey пишет: добав..


Andrey пишет:

 цитата:
добавить вот такой новый синтаксис


Такая возможность уже существует в этой команде
Попробуй

 цитата:
DRAW ICON IN WINDOW Form_1 AT 0, 0 HICON hIco WIDTH nImgSize HEIGHT nImgSize COLOR aBackColor



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6478
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.10.19 19:21. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Попробуй


Отлично, Работает. Спасибо !

А в доку эти команды попадут ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6514
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.11.19 18:02. Заголовок: Всем привет ! Надо б..


Всем привет !
Надо бы пример исправить \MiniGUI\SAMPLES\BASIC\ButtonEx_DynamicMenu\demo.prg, вот так:
         // Расчет фонтов кнопок  STOP ------------------------------ 

// получить размер иконки кнопки в зависимости от высоты кнопки
nIcoSize := INT(nBtnH - 10) // размер иконки
nIcoSize := IIF( nIcoSize > 128, 128, nIcoSize)

FOR nI := 1 TO Len(aBtn)

cN := aBtn[nI][1]
@ nY, nX BUTTONEX &cN WIDTH nBtnW HEIGHT nBtnH ;
CAPTION aBtn[nI][2] ICON aBtn[nI][4] BOLD SIZE aBtn[nI][9] ;
FLAT NOXPSTYLE HANDCURSOR NOTABSTOP ;
BACKCOLOR aBtn[nI][6] GRADIENTFILL aBtn[nI][7] ;
ON MOUSEHOVER ( This.Fontcolor := aFC2Btn, This.GradientFill := This.Cargo[2][7] ,;
This.Icon := LoadIconByName( This.Cargo[2][5], This.ImageWidth, This.ImageHeight ) ) ;
ON MOUSELEAVE ( This.Fontcolor := aFC1Btn, This.GradientOver := This.Cargo[2][6] ,;
This.Icon := LoadIconByName( This.Cargo[2][4], This.ImageWidth, This.ImageHeight ) ) ;
ACTION _wPost( 1, This.Index ) ;
ON INIT { || This.Cargo := { nI, aBtn[ nI ] } }

This.&(cN).ImageWidth := nIcoSize
This.&(cN).ImageHeight := nIcoSize
This.&(cN).Icon := LoadIconByName( aBtn[nI,4], nIcoSize, nIcoSize )

aN := aBtn[ nI ][8] // HotKey array

А то в некоторых случаях пролёт получается, пока придумал как сделать все мозги себе вынес...

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1623
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 17.11.19 19:25. Заголовок: Andrey пишет: приме..


Andrey пишет:

 цитата:
пример исправить


Поправлю, конечно.
Благодарю за помощь

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7341
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.03.23 20:21. Заголовок: Вывожу на форме икон..


Вывожу на форме иконку:
               DRAW ICON IN WINDOW &cForm AT nY, nX2 + nG PICTURE cFile2 WIDTH nWImg HEIGHT nHImg COLOR WHITE

Если в эти координаты надо перерисовать такую же иконку, но с другими размерами,
надо ли убивать хендл этой иконки ?
И как это сделать ?

При задании имени файла - какой будет хендл этой иконки.
Команду - DestroyIcon( hIcon ) видел, hIcon - какой будет, если выводим иконку по имени ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 28 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 18
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет