Форум » GUI » Как заменить иконку в MOUSEHOVER и MOUSELEAVE ? » Ответить

Как заменить иконку в MOUSEHOVER и MOUSELEAVE ?

Andrey: Правлю старые исходники, переделывать крупно не хочется. Нужно заменить две иконки - {"iLogErr64x1","iLogErr64x2"} на { "iLogOk64x1", "iLogOk64x2" } Как это сделать ? [pre2] @ , BUTTONEX BUTTON_Log ... ICON "iLogErr64x1" ; .... ON MOUSEHOVER ( SetProperty(ThisWindow.Name, This.Name, "ICON", "iLogErr64x2" ) ,; SetProperty(ThisWindow.Name, This.Name, "fontcolor", aFBtnClr2 ) ) ; ON MOUSELEAVE ( SetProperty(ThisWindow.Name, This.Name, "ICON", "iLogErr64x1" ) ,; SetProperty(ThisWindow.Name, This.Name, "fontcolor", aFBtnClr1 ) ) ;[/pre2] Если делаю так [pre2]SetProperty( cForm, "oBut_Log", "Icon", "iLogOk64x1")[/pre2] то иконка меняется один раз. Как заменить иконку в MOUSEHOVER и MOUSELEAVE ?

Ответов - 12

SergKis: Andrey птшет Как заменить иконку в MOUSEHOVER и MOUSELEAVE ? [pre2] @ , BUTTONEX BUTTON_Log ... ICON "iLogErr64x1" ; .... ON MOUSEHOVER {|o| o := This.Cargo, This.Icon := iif( o:nMode == 1, o:a1[1], o:a1[2] ), ; This.FontColor := aFBtnClr2 ) } ; ON MOUSELEAVE {|o| o:= This.Cargo, This.Icon := iif( o:nMode == 1, o:a2[1], o:a2[2] ) ,; This.FontColor := aFBtnClr1 ) } ; This.BUTTON_Log.Cargo := oHmgData() This.BUTTON_Log.Cargo:a1 := {"iLogErr64x1","iLogErr64x2"} This.BUTTON_Log.Cargo:a2 := {"iLogOk64x1", "iLogOk64x2"} This.BUTTON_Log.Cargo:nMode := 1 [/pre2]

Andrey: Это классный вариант ! Спасибо ! А к свойствам MOUSEHOVER и MOUSELEAVE доступ через SetProperty( ) есть ? Или нужно убить всю кнопку и заново её создать на форме ?

SergKis: Andrey пишет А к свойствам MOUSEHOVER и MOUSELEAVE доступ через SetProperty( ) есть ? Не понял твоего вопроса , команды This... - это команды препроцессора (короче писать), внутри их Set\GetProperty(...) Смотри i_this.ch или ф-ии Set\GetProperty(...) работу с параметрами


Andrey: SergKis пишет: Не понял твоего вопроса Ну типа такого:[pre] STATIC bStat1, bStat2 bStat2 := {|| SetProperty(ThisWindow.Name, This.Name, "ICON", "iLogOk64x2"), SetProperty(ThisWindow.Name, This.Name, "fontcolor", aFBtnClr2) } bStat1 := {|| SetProperty(ThisWindow.Name, This.Name, "ICON", "iLogOk64x1"), SetProperty(ThisWindow.Name, This.Name, "fontcolor", aFBtnClr1) } SetProperty( cForm, "oBut_Log", "MOUSEHOVER", bStat2) SetProperty( cForm, "oBut_Log", "MOUSELEAVE", bStat1) SetProperty( cForm, "oBut_Log", "Icon", "iLogOk64x1")[/pre] Или ещё как то по другому ?

SergKis: Andrey Смотри i_buton.ch DEFINE BUTTONEX ... Базовые названия ON GOTFOCUS, ON LOSTFOCUS, а ON MOUSEHOVER, ON MOUSELEAVE - это альтернативные названия В Set\GetProperty() используются базовые названия , так же посмотри на этот счет (пост 4304 и далее) тема "Новая версия ..." PS Не стоит так писать, как ты делаешь, получается из серии "масляная каша, каша масляная", т.е. писать в Set\GetProperty() This... Можно сразу This.Icon := ... - и там и там исп. среда This. Ты находишься в событии кнопки, значит стоит This среда для кнопки

Andrey: Вот так можно ? [pre2]STATIC bStat1, bStat2 bStat2 := {|| This.Icon := "iLogOk64x2", This.Fontcolor := aFBtnClr2 } bStat1 := {|| This.Icon := "iLogOk64x1", This.Fontcolor := aFBtnClr1 } SetProperty( cForm, "oBut_Log", "MOUSEHOVER", bStat2) SetProperty( cForm, "oBut_Log", "MOUSELEAVE", bStat1) SetProperty( cForm, "oBut_Log", "Icon", "iLogOk64x1")[/pre2]

SergKis: Andrey Две первых SetProperty() нельзя, прочитай внимательно, что я написал выше про названия PS Добавь в hbp файл параметр -po=... для получения файла после препроцессора (сделай маленький prg для теста) с командами bStat2 := {|| SetProperty(ThisWindow.Name, This.Name, "ICON", "iLogOk64x2"), SetProperty(ThisWindow.Name, This.Name, "fontcolor", aFBtnClr2) } и bStat2 := {|| This.Icon := "iLogOk64x2", This.Fontcolor := aFBtnClr2 } посмотри, что получишь, возможно удивишься

Andrey: [pre2] SetProperty( cForm, "oBut_Log", "gotfocus", bStat2) SetProperty( cForm, "oBut_Log", "lostfocus", bStat1) [/pre2] Опять поторопился... А так ?

SergKis: Andrey Тему и Пост указанный посмотри, там ключевые слова прописаны списком

Andrey: Да, просмотрел... [pre2] This.("oBut_Log").OnGotFocus := bStat2 This.("oBut_Log").OnLostFocus := bStat1[/pre2] Синтаксис удобней писать ! Спасибо !

SergKis: Andrey пишет This.("oBut_Log").OnGotFocus := bStat2 This.("oBut_Log").OnLostFocus := bStat1 Синтаксис удобней писать ! Опять поторопился. Удобней This.oBut_Log.OnGotFocus := bStat2 This.oBut_Log.OnLostFocus := bStat1 или cObj := "oBut_Log" DEFINE BUTTONEX &cObj ... ... This.(cObj).OnGotFocus := bStat2 This.(cObj).OnLostFocus := bStat1

Andrey: SergKis пишет: Опять поторопился. Удобней This.oBut_Log.OnGotFocus := bStat2 This.oBut_Log.OnLostFocus := bStat1 Да это уже мелочи... Я понял что там лучше ставить переменную, просто здесь это в качестве простоты сделал. Спасибо БОЛЬШОЕ !



полная версия страницы