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




Пост N: 1929
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.11.11 21:36. Заголовок: Примеры из Минигуи -ошибки, вопросы..... (продолжение)


Всем привет.
Взялся смотреть примеры из МиниГуи, так не все работают. Может кто подскажет что там "допилить" нужно ?
А заодно может и исправить и добавить новые....

Очень красочный пример: \MiniGUI\SAMPLES\Advanced\AVI_Animation - не работает под Win7 (наверно AVI-шки нет в ресурсах)
Предложение Григорию:
Можно ли добавить еще один пример с отдельным AVI-файлом в ресурсах проекта и показом такого же бегунка ?


Пример: \MiniGUI\SAMPLES\Advanced\DisplayMode - не работает под ХР и далее....


Пример: \MiniGUI\SAMPLES\Advanced\Tsb_filter - вылетает на ХР
--------------------------------------------------------------------------------
Harbour MiniGUI Errorlog File
Harbour MiniGUI Extended Edition 2.0.1 - 2011.09.21
--------------------------------------------------------------------------------
Date: 11/15/2011 Time: 22:13:24
Error BASE/1124 Argument error: LEFT

Called from LEFT(0)
Called from SCANSOFT(195)
Called from MAIN(84)


Пример: \MiniGUI\SAMPLES\BASIC\MsgEdit - не собирается...
Z:\MiniGUI\SAMPLES\BASIC\MsgEdit>call ..\..\..\batch\compile.bat demo /L shell32
Harbour 3.1.0dev (Rev. 17042)
Copyright (c) 1999-2011, http://harbour-project.org/
Compiling 'demo.prg'...
Lines 20133, Functions/Procedures 30
Generating C source output to 'demo.c'... Done.
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
demo.c:
Error E2141 demo.prg 993: Declaration syntax error
*** 1 errors in Compile ***

C compile error.



Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 230 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 All [только новые]


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




Пост N: 2817
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.09.19 08:34. Заголовок: Andrey пишет ENTER з..


Andrey пишет
 цитата:
ENTER зацикливается ?


Конечно. Измени
 
WITH OBJECT This.Object
:Event( 0, {| | InkeyGui(200) } )
:Event( 1, {| | Form_Main.Btn_Start1.Setfocus , _PushKey( VK_SPACE ) } )
:Event( 2, {| | Form_Main.Btn_Start2.Setfocus , _PushKey( VK_SPACE ) } )
:Event( 3, {| | Form_Main.Btn_Start3.Setfocus , _PushKey( VK_SPACE ) } )
:Event( 4, {| | Form_Main.Btn_Start4.Setfocus , _PushKey( VK_SPACE ) } )
:Event( 5, {| | Form_Main.Btn_Start5.Setfocus , _PushKey( VK_SPACE ) } )
:Event(99, {|ow| ow:Release() } )
END WITH


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




Пост N: 2818
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.09.19 08:39. Заголовок: Andrey пишет Это каж..


Andrey пишет
 цитата:
Это каждый раз мне придётся в МиниГуи \include\ править ?


Что то мне подсказывает, что Григорий и HOTKEY добавит в BUTTONEX и команду поправит.
Команду предлагаю так сделать
 
#xcommand ON KEY <key> [ OF <parent> ] ACTION <action> [ RESULT ] [ TO <lresult> ] ;
=> ;
[ <lresult> := ] iif( HB_ISNUMERIC( <key> ) , _DefineHotKey ( <"parent"> , 0 , <key> , <{action}> ) , ;
_SetHotKeyByName ( <"parent"> , <"key"> , <{action}> ) )

тогда можно писать
ON KEY VK_7 ACTION ...
и
ON KEY 7 ACTION ...

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




Пост N: 2819
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.09.19 09:23. Заголовок: SergKis пишет Команд..


SergKis пишет
 цитата:
Команду предлагаю так сделать


Нет, так не пойдет команда, все время число будет.
Возможно, в функцию добавить
 
FUNCTION _SetHotKeyByName ( cParentForm, cKey, bAction )
...
ENDIF

IF Val(cKey) ) >= 1
RETURN _DefineHotKey( cParentForm, 0, Val(cKey), bAction )
ENDIF

IF !Empty ( cKey ) .AND. ISCHARACTER ( cKey )



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




Пост N: 2820
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.09.19 09:36. Заголовок: SergKis пишет Возмож..


SergKis пишет
 цитата:
Возможно, в функцию добавить


Будет то же самое - число. Куда то меня унесло,
ушел отдыхать.

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




Пост N: 6427
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.09.19 09:44. Заголовок: SergKis пишет: Коне..


SergKis пишет:

 цитата:
Конечно. Измени


Не работает. В другом окне делаю так:
      ON KEY RETURN OF Form_NewZ ACTION {|| Form_NewZ.Button_Find.Setfocus, InkeyGui(200), _PushKey( VK_SPACE ) }  
ON KEY ESCAPE OF Form_NewZ ACTION {|| aRet := {}, Form_NewZ.Release() }

END WINDOW

Видно что курсор прыгает на кнопку, а отработки нет.
ESC - срабатывает нормально.
Дело в том что у меня на кнопке Button_Find - большой код, там несколько функций.
Хотелось бы не переписывать, а заставить кнопку Button_Find срабатывать на ENTER !

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




Пост N: 2821
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.09.19 11:51. Заголовок: Andrey пишет Пример..


Andrey пишет [quote]`
Пример от Григория поправил (2а варианта назначения)Скрытый текст


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




Пост N: 6428
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.09.19 17:06. Заголовок: SergKis пишет: Прим..


SergKis пишет:

 цитата:
Пример от Григория поправил (2а варианта назначения)


Спасибо ! То что нужно !

SergKis пишет:

 цитата:
ставим
oBrw:UserKeys(VK_1, {|ob| _wPost(1, ob, ob) })
oBrw:UserKeys(VK_2, {|ob| _wPost(2, ob, ob) })
и т.д.


За это тоже СПАСИБО !

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




Пост N: 6429
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.09.19 18:19. Заголовок: SergKis пишет: :Ev..


SergKis пишет:

 цитата:
:Event( 1 , {|| This.butt_1.SetFocus, DoEvents(), _PushKey( VK_SPACE ) } )
:Event( 2 , {|| This.butt_2.SetFocus, DoEvents(), _PushKey( VK_SPACE ) } )
:Event( 3 , {|| This.butt_3.SetFocus, DoEvents(), _PushKey( VK_SPACE ) } )


Как можно сделать эмуляцию перехода мышкой на кнопку если включён градиент на кнопке ?
Т.е. на кнопке сделано
 
aColor := CLR_GREEN
aGrOverB2 := { { 0.5, CLR_BLACK, aColor }, { 0.5, aColor , CLR_BLACK } }
aGrFillB2 := { { 0.5, aColor , CLR_WHITE }, { 0.5, CLR_WHITE, aColor } }
.....
BACKCOLOR aGrOverB2 GRADIENTFILL aGrFillB2 ;
ON MOUSEHOVER ( This.Fontcolor := aBtnClr2, This.Icon := cIco2x2, This.GradientFill := aGrFillB2 ) ;
ON MOUSELEAVE ( This.Fontcolor := aBtnClr0, This.Icon := cIco2x1, This.GradientOver := aGrOverB2 ) ;
ACTION {|| _wPost(2) }

Использование This.butt_2.SetFocus - не подсвечивает кнопку ! Только текст кнопки подсвечивает.
Хотелось бы - нажал горячую клавишу, кнопка под светилась и юзер понял какую кнопку нажал.
Это для красоты.

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




Пост N: 2822
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.09.19 18:46. Заголовок: Andrey пишет Как мож..


Andrey пишет
 цитата:
Как можно сделать эмуляцию перехода мышкой на


Как то так
 
FUNCTION HMG_SetMousePos( nHandle, y1, x1 )
Local y := GetWindowRow(nHandle)
Local x := GetWindowCol(nHandle)
Default y1 := 1, x1 := 1

SetCursorPos( x + x1, y + y1 )

RETURN Nil

В примере выше добавить
:Event( 12, {|| HMG_SetMousePos(This.butt_F.Handle) } )
...
ON KEY F3 ACTION _wPost(12)
...

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




Пост N: 6430
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.09.19 21:33. Заголовок: SergKis пишет: Как ..


SergKis пишет:

 цитата:
Как то так


Да ! Классно выходит. СПАСИБО !

SergKis пишет:

 цитата:
Пример от Григория поправил (2а варианта назначения)С


Что то не получается в моём случае.
Делаю так:
 
@ ... BUTTONEX Button_Find ;
........
ACTION { || SaveSeekAdres(cFileMemo,nCity,cCity,nStreet,cStreet,nDom,cDom,;
nStro,cStro,nKorp,cKorp,nPodz,cPodz,nKvar,cKvar),;
SaveZaivkMenu(cFileMemo2, nZDmfAnt, nZDBase, nZDogAb) ,;
aDimAdr := {nCity,cCity,nStreet,cStreet,nDom,cDom,nStro,cStro,nKorp,cKorp,nPodz,cPodz,nKvar,cKvar} ,;
aDimZaS := {nLastDay,lOtmena,lOst,lKeyOff,lZClose,lDClose } ,;
cVal := Form_NewZ.Label_Adres.Value ,;
aRet := FindListZaivka(nZDmfAnt, nZDBase, nZDogAb, aDimZaS, aDimAdr, cVal) ,;
Form_NewZ.Release() }

@ ........ BUTTONEX Button_Exit ;
...........
ACTION { || aRet := {}, DoEvents(), Form_NewZ.Release() }

...........
WITH OBJECT This.Object
:Event( 1, {|| Form_NewZ.Button_Find.Setfocus, DoEvents(), _PushKey( VK_SPACE ) } )
:Event(99, {|ow| ow:Release() } )
END WITH

ON KEY RETURN OF Form_NewZ ACTION _wPost(1 , This.button_Find.Index)
ON KEY ESCAPE OF Form_NewZ ACTION _wPost(99, This.button_Exit.Index)

END WINDOW

Как сделать не перетаскивая код-блока из кнопки, чтобы срабатывал _wPost(1) и _wPost(99) ?
Не хочется перетаскивать код из кнопки. Или так нельзя делать ?
Если перетащу код из кнопки в :Event( 1, {|| ..... - то всё работает отлично !

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




Пост N: 2823
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.09.19 21:57. Заголовок: Andrey пишет Что то ..


Andrey пишет
 цитата:
Что то не получается в моём случае.


Из своего примера
 
(This.Object):Event(11, {|| SetMousePos(This.Btn_1.Handle), This.Btn_1.SetFocus, DoEvents(), _PushKey( VK_SPACE ) })
...
ON KEY F3 ACTION _wPost(11)

 цитата:
Если перетащу код из кнопки в :Event( 1, {|| ..... - то всё работает отлично !


Именно так и должно быть, на контролах, всегда, только сообщения

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




Пост N: 2824
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.09.19 23:11. Заголовок: PS AC..


PS
 
ACTION _wPost(1, This.Index)

:Event( 1, { || SaveSeekAdres(cFileMemo,nCity,cCity,nStreet,cStreet,nDom,cDom,;
nStro,cStro,nKorp,cKorp,nPodz,cPodz,nKvar,cKvar),;
SaveZaivkMenu(cFileMemo2, nZDmfAnt, nZDBase, nZDogAb) ,;
aDimAdr := {nCity,cCity,nStreet,cStreet,nDom,cDom,nStro,cStro,nKorp,cKorp,nPodz,cPodz,nKvar,cKvar} ,;
aDimZaS := {nLastDay,lOtmena,lOst,lKeyOff,lZClose,lDClose } ,;
cVal := Form_NewZ.Label_Adres.Value ,;
aRet := FindListZaivka(nZDmfAnt, nZDBase, nZDogAb, aDimZaS, aDimAdr, cVal) ,;
_wSend(99) } )


ON KEY RETURN OF Form_NewZ ACTION ( SetMousePos(This.button_Find.Handle), This.button_Find.SetFocus, DoEvents(), _wPost(1, This.button_Find.Index) )
ON KEY ESCAPE OF Form_NewZ ACTION _wPost(99)



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




Пост N: 2826
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.09.19 15:11. Заголовок: PPS Для кнопки Exit ..


PPS
Для кнопки Exit
 
@ ........ BUTTONEX Button_Exit ;
...........
ACTION _wPost(2, This.Index) ;

:Event( 2, { || aRet := {}, _wSend(99) } )

ON KEY ESCAPE OF Form_NewZ ACTION ( SetMousePos(This.button_Exit.Handle), This.button_Exit.SetFocus, DoEvents(), _wPost(2, This.button_Exit.Index) )
или
если есть
LOCAL aRet := {}
то сразу делать
@ ........ BUTTONEX Button_Exit ;
...........
ACTION _wPost(99) ;

ON KEY ESCAPE ACTION ( SetMousePos(This.button_Exit.Handle), This.button_Exit.SetFocus, DoEvents(), _PushKey( VK_SPACE ) /* или _wPost(99) или _wSend(99) */ )


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




Пост N: 6432
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.09.19 19:24. Заголовок: Всем привет. А как о..


Всем привет.
А как объявить в проге, что нужно линковать функцию, у которой нет явного вызова ?

Т.е. вызов функции объявлен в массиве меню, примерно так:
AADD( aDim, {"FLAG_RU.bmp" , "Test menu - Russian ", "RunTest1", "Stroka1" , 1 } )
чтобы потом можно было вызвать RunTest1() ?
А то сейчас пишет, что нет такой функции в ехе-файле.
В библиотеке которую линкую эта функция есть.

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




Пост N: 1580
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 12.09.19 09:35. Заголовок: Andrey пишет: как о..


Andrey пишет:

 цитата:
как объявить в проге, что нужно линковать функцию


Попробуй добавить

 цитата:
REQUEST RunTest1



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




Пост N: 6433
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.09.19 14:11. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

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


Спасибо !

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




Пост N: 6434
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.09.19 14:23. Заголовок: Обнаружил небольшой ..


Обнаружил небольшой баг в примере MiniGUI\SAMPLES\BASIC\Menu\menudemo5.prg
Выбираем меню Options и потом любое другое меню.
После выхода из меню можно кликнуть правой кнопкой мышки и это же меню появиться опять на форме.
В Options-2 и Options-3 от этого избавился, как рекомендовал раньше.
Больше такого избавления в примерах нигде нет !
А новичкам это тоже будет интересно.
Последний пример совместно написанный с Сергеем выслал на почту.

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




Пост N: 1581
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 12.09.19 15:38. Заголовок: Andrey пишет: Обнар..


Andrey пишет:

 цитата:
Обнаружил небольшой баг в примере


Благодарю за сообщение
Добавил две новые функции для проверки

 цитата:
- New: function IsContextMenuDefined ( cFormName );
- New: function IsNotifyMenuDefined ( cFormName ).


Andrey пишет:

 цитата:
Больше такого избавления в примерах нигде нет


Посмотри как это работает в примере из папки
\samples\Basic\MENU_Dynamic

Andrey пишет:

 цитата:
пример совместно написанный с Сергеем выслал на почту


Благодарю за пример
Уже включил его в первую бету новой сборки, которую подготовил сегодня

 цитата:
* New: 'Extended Dynamic Context Menu' sample.
Contributed by Sergej Kiselev and Verchenko Andrey
(see menudemo6.prg in folder \samples\Basic\Menu)



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




Пост N: 6435
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.09.19 18:26. Заголовок: Можно ли включить в ..


Можно ли включить в Минигуи стандартную функцию расчёта размера фонта в зависимости от ширины и высоты LABEL ?
Свои есть, но что-то не дотягивают до стандарта.
И не знаю как рассчитать размеры для фонтов BOLD ?
Вот например есть такая у меня функция:
////////////////////////////////////////////////////////////////// 
// Функция вернёт максимальный размер фонта для заданной строки по заданной ширине
FUNCTION FontSizeMaxAutoFit( cText, cFName, nWinWidth )
LOCAL nTxtWidth, nFSize, lExit := .T.

nFSize := 6
DO WHILE lExit
nTxtWidth := GetTxtWidth( cText, nFSize, cFName )
IF nTxtWidth >= nWinWidth
lExit := .F.
ELSE
nFSize++
ENDIF
ENDDO

RETURN nFSize

Если текст короткий то половина слова показывается на LABEL, нижняя часть слова обрезается, слишком большой фонт.
Помогите сделать такие универсальные функции !

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




Пост N: 2860
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.09.19 19:18. Заголовок: Andrey пишет Помогит..


Andrey пишет
 цитата:
Помогите сделать такие универсальные функции !


Они уже в тек. версии есть, для регистрированного фонта, посмотри changelog
 
* New: Added the useful pseudo-functions GetFontWidth( FontName, nLen ) and
GetFontHeight( FontName ) for receiving of the font's parameters.
Note that a font should be defined by command
DEFINE FONT <FontName> FONTNAME <sysfont> ...

и пример, который отсылал Григорию, там есть применение GetFontWidth( FontName, nLen ) для меню. Универсальность
nW := 0; AEval(aText, {|ct| nW := Max(nW, GetFontWidth( 'Font_1', Len(ct) ) })

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

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