Автор | Сообщение |
|
| постоянный участник
|
Пост N: 7419
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.06.23 12:50. Заголовок: Как заменить иконку в MOUSEHOVER и MOUSELEAVE ?
Правлю старые исходники, переделывать крупно не хочется. Нужно заменить две иконки - {"iLogErr64x1","iLogErr64x2"} на { "iLogOk64x1", "iLogOk64x2" } Как это сделать ? @ , 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 ) ) ; Если делаю так SetProperty( cForm, "oBut_Log", "Icon", "iLogOk64x1") то иконка меняется один раз. Как заменить иконку в MOUSEHOVER и MOUSELEAVE ?
|
|
|
Ответов - 12
[только новые]
|
|
|
| постоянный участник
|
Пост N: 4307
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.06.23 15:50. Заголовок: Andrey птшет Как зам..
Andrey птшет цитата: | Как заменить иконку в MOUSEHOVER и MOUSELEAVE ? |
| @ , 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
|
|
|
|
| постоянный участник
|
Пост N: 7420
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.06.23 16:47. Заголовок: Это классный вариант..
Это классный вариант ! Спасибо ! А к свойствам MOUSEHOVER и MOUSELEAVE доступ через SetProperty( ) есть ? Или нужно убить всю кнопку и заново её создать на форме ?
|
|
|
|
| постоянный участник
|
Пост N: 4308
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.06.23 17:19. Заголовок: Andrey пишет А к сво..
Andrey пишет цитата: | А к свойствам MOUSEHOVER и MOUSELEAVE доступ через SetProperty( ) есть ? |
| Не понял твоего вопроса , команды This... - это команды препроцессора (короче писать), внутри их Set\GetProperty(...) Смотри i_this.ch или ф-ии Set\GetProperty(...) работу с параметрами
|
|
|
|
| постоянный участник
|
Пост N: 7421
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.06.23 17:29. Заголовок: SergKis пишет: Не п..
SergKis пишет: Ну типа такого: 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") Или ещё как то по другому ?
|
|
|
|
| постоянный участник
|
Пост N: 4309
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.06.23 17:35. Заголовок: Andrey Смотри i_but..
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 среда для кнопки
|
|
|
|
| постоянный участник
|
Пост N: 7422
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.06.23 17:55. Заголовок: Вот так можно ? :sm..
Вот так можно ? 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")
|
|
|
|
| постоянный участник
|
Пост N: 4310
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.06.23 17:59. Заголовок: Andrey Две первых S..
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 } посмотри, что получишь, возможно удивишься
|
|
|
|
| постоянный участник
|
Пост N: 7423
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.06.23 18:04. Заголовок: SetProperty( cForm..
SetProperty( cForm, "oBut_Log", "gotfocus", bStat2) SetProperty( cForm, "oBut_Log", "lostfocus", bStat1) Опять поторопился... А так ?
|
|
|
|
| постоянный участник
|
Пост N: 4311
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.06.23 18:07. Заголовок: Andrey Тему и Пост ..
Andrey Тему и Пост указанный посмотри, там ключевые слова прописаны списком
|
|
|
|
| постоянный участник
|
Пост N: 7424
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.06.23 18:56. Заголовок: Да, просмотрел... :..
Да, просмотрел... This.("oBut_Log").OnGotFocus := bStat2 This.("oBut_Log").OnLostFocus := bStat1 Синтаксис удобней писать ! Спасибо !
|
|
|
|
| постоянный участник
|
Пост N: 4312
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.06.23 19:05. Заголовок: Andrey пишет T..
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
|
|
|
|
|
| постоянный участник
|
Пост N: 7425
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.06.23 19:34. Заголовок: SergKis пишет: Опят..
SergKis пишет: цитата: | Опять поторопился. Удобней This.oBut_Log.OnGotFocus := bStat2 This.oBut_Log.OnLostFocus := bStat1 |
| Да это уже мелочи... Я понял что там лучше ставить переменную, просто здесь это в качестве простоты сделал. Спасибо БОЛЬШОЕ !
|
|
|
|