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




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


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

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

Пример: \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 
ПрофильЦитата Ответить
Новых ответов нет , стр: 1 2 3 4 5 6 7 8 9 10 11 12 All [см. все]


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




Пост N: 6381
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.08.19 14:19. Заголовок: SergKis пишет: Мало..


SergKis пишет:

 цитата:
Маловато будет ?


Об этом забыл вообще....
Спасибо !

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




Пост N: 6405
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 27.08.19 17:18. Заголовок: Всем привет ! Хочу п..


Всем привет !
Хочу получить расчёт по времени вот такого вида - 00:00:00.0145
В C# есть такой формат даты, нагляден очень.
А в Харборе такого нет.
Можно прикрутить такой формат времени в МиниГуи ?
Для расчётов самый раз будет, а то Seconds() не всегда даёт разницу по времени.
Выдаёт типа 00:00:00
Можно конечно написать свою функцию, но тогда её каждый раз нужно будет таскать из своих исходников.

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




Пост N: 2770
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 27.08.19 18:39. Заголовок: Andrey пишет В C# ес..


Andrey пишет
 цитата:
В C# есть такой формат даты, нагляден очень.
А в Харборе такого нет.


А если немного подумать, то все получится
 
Local k, t := hb_datetime()
...
k := hb_datetime() - t
? t, k, t + k,'|', hb_StrToTS('') + k
получишь такой результат
2019-08-27 18:33:23.825 0.000005 2019-08-27 18:33:24.262 | 00:00:00.437


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




Пост N: 6406
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 27.08.19 20:12. Заголовок: Хотелось бы проще, т..


Хотелось бы проще, типа такого:
t := hb_datetime()  
CalcToDbf() // расчёт
? "Время расчёта =", MG_MilliSeconds( hb_datetime() - t )

Время расчёта = 00:00:00.437


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




Пост N: 2771
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 27.08.19 20:29. Заголовок: Andrey пишет Хотелос..


Andrey пишет
 цитата:
Хотелось бы проще


Твой вариант
#xtranslate MG_MilliSeconds( k ) => Ltrim( hb_TSToStr( hb_StrToTS('') + k, .T. ) )

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




Пост N: 6407
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 27.08.19 21:52. Заголовок: SergKis пишет: Твой..


SergKis пишет:

 цитата:
Твой вариант


Что-то ошибку выдаёт:
Turbo Incremental Link 5.66 Copyright (c) 1997-2002 Borland
Error: Unresolved external '_HB_FUN_MG_MILLISECONDS' referenced from W:\HB_PROJECT\OBJ\FORM_CALC1.OBJ
hbmk2[Calc_5Menu]: Error: Running linker. 2


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




Пост N: 2772
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.08.19 00:24. Заголовок: Andrey #xtranslate ..


Andrey
#xtranslate MG_MilliSeconds( <k> ) => Ltrim( hb_TSToStr( hb_StrToTS('') + <k>, .T. ) )

k := hb_datetime() - t
? mg_MilliSeconds( k )
? mg_MilliSeconds( (hb_datetime() - t) )
результат
00:00:00.57
00:00:00.574

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




Пост N: 6408
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.08.19 08:40. Заголовок: Доброго утра всем ! ..


Доброго утра всем !
Наверное лучше функцию назвать так HMG_TimeMS().
В виде функции у меня работает, а если делаю в мой INCLUDE
#xtranslate MG_MilliSeconds( <k> ) => Ltrim( hb_TSToStr( hb_StrToTS('') + <k>, .T. ) )
то не собирается exe-ник.

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




Пост N: 6421
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.09.19 00:07. Заголовок: Всем привет. Хочу чт..


Всем привет.
Хочу чтобы по кнопкам юзер мог нажимать цифирки 1,2,3....
Знаю что можно назначить горячую клавишу, не хочу этого.

Можно ли повесить событие на кнопки по цифрам ?

Очень понравилась такая структура назначение событий:
   DEFINE WINDOW Form_Main ; 
.....
ON INIT {|| _wPost(3) }
.....

WITH OBJECT This.Object
:Event( 0, {| | InkeyGui(200) } )
:Event( 1, {| | Form_Main.Btn_Start1.Setfocus , _PushKey( VK_RETURN ) } )
:Event( 2, {| | Form_Main.Btn_Start2.Setfocus , _PushKey( VK_RETURN ) } )
:Event( 3, {| | Form_Main.Btn_Start3.Setfocus , _PushKey( VK_RETURN ) } )
:Event( 4, {| | Form_Main.Btn_Start4.Setfocus , _PushKey( VK_RETURN ) } )
:Event( 5, {| | Form_Main.Btn_Start5.Setfocus , _PushKey( VK_RETURN ) } )
:Event(99, {|ow| ow:Release() } )
END WITH


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




Пост N: 2808
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.09.19 09:54. Заголовок: Andrey пишет Можно л..


Andrey пишет
 цитата:
Можно ли повесить событие на кнопки по цифрам ?


Надо знать куда хочешь вешать, к примеру
для тсб (пример Tsb_lAdjColumn) вместо (для твоей таблицы событий)
 
// oBrw:UserKeys(VK_F3, {|ob| _wPost(3, ob, ob) })
// oBrw:UserKeys(VK_F4, {|ob| _wPost(4, ob, ob) })
ставим
oBrw:UserKeys(VK_1, {|ob| _wPost(1, ob, ob) })
oBrw:UserKeys(VK_2, {|ob| _wPost(2, ob, ob) })
и т.д.

для горячей клавиши
SET KEY VK_1 ACTION _wPost(1, oBrw, oBrw)
SET KEY VK_2 ACTION _wPost(2, oBrw, oBrw)
и т.д.
в событии Event будет устанавливаться среда This для Tsb
для GetBox так же можно ставить событие нажатия клавиш (примеры в basic\GetBox...)


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




Пост N: 1578
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 06.09.19 10:10. Заголовок: Andrey пишет: Можно..


Andrey пишет:

 цитата:
Можно ли повесить событие на кнопки по цифрам ?


Посмотри рабочий пример ниже
Скрытый текст


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




Пост N: 2809
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.09.19 10:24. Заголовок: gfilatov2002 пишет П..


gfilatov2002 пишет
 цитата:
Посмотри рабочий пример ниже


Для BUTONEX нет HOTKEY, а у Andrey в основном используются они.

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




Пост N: 2810
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.09.19 10:36. Заголовок: PS По указанному сво..


PS
По указанному свойству HOTKEY кнопки ставится горячая клавиша, т.е. большой разницы нет писать HOTKEY 9 в кнопке или ставить горячую клавишу SET KEY VK_9 ACTION ...

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




Пост N: 6422
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.09.19 23:20. Заголовок: SergKis пишет: Для ..


SergKis пишет:

 цитата:
Для BUTONEX нет HOTKEY, а у Andrey в основном используются они.


Да, я про эту фичу.
А нельзя сделать для BUTONEX эту фичу HOTKEY в следующих версиях ?
Для окна можно обойтись пока и так
ON KEY ESCAPE OF Form_Main ACTION _wPost(99)
ON KEY VK_1 OF Form_Main ACTION _wPost(1)
и будет отрабатывать
     :Event( 1, {|  | Form_Main.Btn_Start1.Setfocus , _PushKey( VK_RETURN ) } ) 

Спасибо за подсказку !

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




Пост N: 6423
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.09.19 00:07. Заголовок: Что то не получается..


Что то не получается...
Это отрабатывает нормально - ON KEY ESCAPE OF Form_Main ACTION _wPost(99)
А как задать цифирки 1, 2, 3 ....
Пробовал так
ON KEY VK_1 OF Form_Main ACTION _wPost(1)  
ON KEY VK_2 OF Form_Main ACTION _wPost(2)
ON KEY VK_3 OF Form_Main ACTION _wPost(3)

Не компилируется, выдаёт ошибку...
Смотрел \Include\
i_keybd.ch и i_keybd_ext.ch
что то не нашёл...
Меню просто из 4-5-6 кнопок. Больше на форме ничего нет.
Как подключить цифирки 1, 2, 3 ... ?

P.S. Пока подключил так:
 
_DefineHotKey ( "Form_Main" , 0 , 49 , {|| _wPost(1) } )
_DefineHotKey ( "Form_Main" , 0 , 50 , {|| _wPost(2) } )
_DefineHotKey ( "Form_Main" , 0 , 51 , {|| _wPost(3) } )


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




Пост N: 2815
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.09.19 06:31. Заголовок: Andrey пишет Смотрел..


Andrey пишет
 цитата:
Смотрел \Include\
i_keybd.ch и i_keybd_ext.ch
что то не нашёл...


Надо без VK_... вариант по имени
#xcommand ON KEY <key> [ OF <parent> ] ACTION <action> [ RESULT ] TO <lresult> ;
=> ;
<lresult> := _SetHotKeyByName ( <"parent"> , <"key"> , <{action}> )
т.е.
ON KEY 1 OF Form_Main ACTION _wPost(1)
ON KEY 2 OF Form_Main ACTION _wPost(2)
ON KEY 3 OF Form_Main ACTION _wPost(3)

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




Пост N: 6424
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.09.19 06:56. Заголовок: SergKis пишет: ON K..


SergKis пишет:

 цитата:
ON KEY 1 OF Form_Main ACTION _wPost(1)
ON KEY 2 OF Form_Main ACTION _wPost(2)
ON KEY 3 OF Form_Main ACTION _wPost(3)


Всем доброго утра !

Всё равно не собирает. Выдаёт ошибку:
Harbour 3.2.0dev (r1904111533)
Copyright (c) 1999-2019, https://harbour.github.io/
form_ZaivkaNew.prg(1611) Error E0030 Syntax error "syntax error at 'KEY'"
form_ZaivkaNew.prg(1612) Error E0030 Syntax error "syntax error at 'KEY'"
form_ZaivkaNew.prg(1613) Error E0030 Syntax error "syntax error at 'KEY'"
3 errors
No code generated.


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




Пост N: 2816
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.09.19 07:07. Заголовок: Andrey Специально д..


Andrey
Специально для тебя вынес сюда команду, но ты на нее все равно не смотришь
#xcommand ON KEY <key> [ OF <parent> ] ACTION <action> [ RESULT ] TO <lresult> ;
=> ;
<lresult> := _SetHotKeyByName ( <"parent"> , <"key"> , <{action}> )

Чтобы писать как ты сделал надо в команде поправить
#xcommand ON KEY <key> [ OF <parent> ] ACTION <action> [ RESULT ] [ TO <lresult> ] ;
=> ;
[ <lresult> := ] _SetHotKeyByName ( <"parent"> , <"key"> , <{action}> )

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




Пост N: 6425
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.09.19 07:36. Заголовок: SergKis пишет: Спец..


SergKis пишет:

 цитата:
Специально для тебя вынес сюда команду, но ты на нее все равно не смотришь


Да, есть такое за мной...

SergKis пишет:

 цитата:
Чтобы писать как ты сделал надо в команде поправить


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

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




Пост N: 6426
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.09.19 08:16. Заголовок: А как на кнопку пове..


А как на кнопку повесить обработку ENTER ?
Делаю так:
ON KEY RETURN OF Form_NewZ ACTION {|| Form_NewZ.Button_Find.Setfocus, InkeyGui(200), _PushKey( VK_RETURN ) }
И вся форма вешается... Почему ?
ENTER зацикливается ?

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




Пост 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 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2861
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.09.19 19:23. Заголовок: PS можешь применить ..


PS
можешь применить коэффициент, если надо уменьшить\увеличить размер
nW := 0; AEval(aText, {|ct| nW := Max(nW, GetFontWidth( 'Font_1', Len(ct) ) * 0.8 /* 1.05 */ })

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




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


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


Для реальных размеров текста можно такую ф-юСкрытый текст


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




Пост N: 2863
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.09.19 20:23. Заголовок: PS Фонты с BOLD и др..


PS
Фонты с BOLD и др. атрибутами надо регистрировать DEFINE FONT ...

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




Пост N: 6450
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.09.19 23:37. Заголовок: SergKis пишет: доба..


SergKis пишет:

 цитата:
добавить NOSHOW, а в ON INIT This.Show()


Это относится к окну. Понял. Спасибо большое !
У меня проблема большая... по Tab.
Показываю окно с Tab карточкой юзеру.
На медленных компах видно как этот Tab дергается, т.е. на Tab вывожу объекты Label и GetBox.
Там их много, порядка 150 объектов. Вот и дергается Tab.
Можно как то это "дерганье" убрать ?
Код почти такой же как в примере MiniGUI\SAMPLES\BASIC\COLORED_TAB

Вот мой код
Скрытый текст


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




Пост N: 2914
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.09.19 23:57. Заголовок: Andrey пишет Это отн..


Andrey пишет
 цитата:
Это относится к окну. Понял. Спасибо большое !


Перенеси, обязательно, This.Center как в пред. версии hmg

 цитата:
Там их много, порядка 150 объектов. Вот и дергается Tab.


Попробуй окну NOSHOW и в ON INIT This.Show, как выше

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




Пост N: 6451
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.09.19 12:51. Заголовок: SergKis пишет: Поп..


SergKis пишет:

 цитата:

Попробуй окну NOSHOW и в ON INIT This.Show, как выше


Нет, окну не могу. Нужно для объекта Tab.

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




Пост N: 2915
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.09.19 14:22. Заголовок: Andrey Приведенный ..


Andrey
Приведенный тобой код, он в каком месте работает, в ON INIT ... или до END WINDOW ?

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




Пост N: 2916
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.09.19 14:27. Заголовок: Andrey пишет Нет, ок..


Andrey пишет
 цитата:
Нет, окну не могу. Нужно для объекта Tab.


Почему ? В чем причина ?
Можно показать готовое окно из hide и не видеть как мелькает при формировании.

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




Пост N: 6452
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.09.19 21:12. Заголовок: SergKis пишет: Поче..


SergKis пишет:

 цитата:
Почему ? В чем причина ?
Можно показать готовое окно из hide и не видеть как мелькает при формировании.


Я окно карточки делаю набегающим, т.е. в цикле увеличиваю размеры окна карточки (мини анимация).
Это делаю всё в
       ON INIT { || MyInitCard(cTableForm,lEditPrg,hCursorTable),; 
ResizeCardForm(cTableForm) , SizePageBack(1) } ;

Построение DEFINE TAB Tab_1 OF Form_Card до END WINDOW:
       SetTab_1Card(nRowTab,nFWidth,nFHeight,cFNameTab,nFSizeTab,lEditPrg,aBackColor,; 
aTabName, aTabColor, aDimCard, aFontNames, aFontFields, aTabFColor2 )

ON KEY ESCAPE OF Form_Card ACTION ThisWindow.Release
ON KEY PRIOR OF Form_Card ACTION MyPageUpCard(cTableForm) // это PageUp
ON KEY NEXT OF Form_Card ACTION MyPageDownCard(cTableForm) // это PageDown

END WINDOW
ACTIVATE WINDOW Form_Card

Можно ли скрыть построение TAB Tab_1 а потом его показать ?

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




Пост N: 2917
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.09.19 22:23. Заголовок: Andrey пишет Можно л..


Andrey пишет
 цитата:
Можно ли скрыть построение TAB Tab_1 а потом его показать ?


Если найдешь хандле всех дочерних окон - page, то, наверно, сможешь.
Сделай 2а окна, с tab -> hide, 2ое для анимации, т.е. заполняешь первое, размеры меняешь у второго.
Потом 1му -> размеры 2го и выводишь из hide+topmost+-, второму release.
Вроде, были примеры на анимацию окна, но не помню так ли.

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




Пост N: 2918
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.09.19 22:31. Заголовок: Andrey пишет ..


Andrey пишет
 цитата:
ON INIT { || MyInitCard(cTableForm,lEditPrg,hCursorTable),;
ResizeCardForm(cTableForm) , SizePageBack(1) } ;


Все как в примере colored_tab, на глаз видно передергивание (маленькое) перерисовки
Сделал NOSHOW + ON INIT ( ..., This.Show() ), все чистенько стало.
А так, ты сам елку (анимацию) сделал

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




Пост N: 6453
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.09.19 21:00. Заголовок: Всем привет ! Попро..


Всем привет !
Попросил сделать пример с TAB объектом на C# для WinForm.
Чуток по другому дергается для большлого кол-ва вкладок с TextBox.
Видать это особенность Win-api для WinForm.
Но есть одна особенность, в C# можно скрыть объект, а после прорисовки его показать !
Тогда "дерганья" не видно вообще !

Посмотрел хелп по МиниГуи. Для TAB нет свойства INVISIBLE.
Для других объектов есть, а для TAB нет.
Если бы был, то тогда было бы всё отлично !
Строим скрытый объект TAB, а потом можно было бы сделать в ON INIT { || Form_Card.Tab_1.Show .....

Григорий, можно ли добавить для TAB свойство INVISIBLE ?

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


Пост N: 1560
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 23.09.19 21:32. Заголовок: Andrey пишет: Если ..


Andrey пишет:

 цитата:
Если бы был, то тогда было бы всё отлично !
Строим скрытый объект TAB, а потом можно было бы сделать в ON INIT { || Form_Card.Tab_1.Show .....


Я, конечно, могу ошибаться, но разве Сергей тебе не то же самое предложил?
SergKis пишет:

 цитата:
Сделал NOSHOW + ON INIT ( ..., This.Show() ), все чистенько стало.



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




Пост N: 6454
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.09.19 21:59. Заголовок: PSP пишет: Я, конеч..


PSP пишет:

 цитата:
Я, конечно, могу ошибаться, но разве Сергей тебе не то же самое предложил?


У объекта TAB по хелпу нет свойства NOSHOW.
Сергей предложил сделать NOSHOW для всего окна.
Для меня показ окна обязателен.
Предложения с подменой окон уж очень сложен.

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




Пост N: 1587
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 24.09.19 10:27. Заголовок: Andrey пишет: можно..


Andrey пишет:

 цитата:
можно ли добавить для TAB свойство INVISIBLE ?


Для этого у всех контролов есть методы Hide/Show
Попробуй

 цитата:
*-----------------------------------------------------------------------------*
PROCEDURE Hide_CLick
*-----------------------------------------------------------------------------*

Form_1.Tab_1.Visible := .F.

RETURN
*-----------------------------------------------------------------------------*
PROCEDURE Show_CLick
*-----------------------------------------------------------------------------*

Form_1.Tab_1.Visible := .T.

RETURN



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




Пост N: 6455
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 24.09.19 13:37. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Для этого у всех контролов есть методы Hide/Show


А как этот метод заставить работать сразу при построение Tab_1 ?
Если делать так:
 DEFINE TAB Tab_1 OF Form_Card ;  
.........
ON CHANGE SizePageBack( Form_Card.Tab_1.Value )

Form_Card.Tab_1.Visible := .F.

_HMG_ActiveTabBottom := .F. // lBottomStyle

FOR nI := 1 TO LEN( aTabName )
IF aStatCheckTabView[nI] // показ вкладки разрешено !
PAGE aTabName[ nI ] //IMAGE cResTabImage
cNameLabel := 'Page_' + hb_ntos( nI )
@ 24, 2 LABEL &cNameLabel VALUE "" WIDTH 0 HEIGHT 0 BACKCOLOR aTabColor[nI]
// вывести поля карточки
ShowPageCard( nI, nRowTab, aTabColor[ nI ], aDimCard[ nI ],;
aFontNames, aFontFields, lEditPrg, nFSizeTab )
END PAGE
ENDIF
NEXT

END TAB

То происходит вылет программы.
Нужно строить объект DEFINE TAB сразу скрытым.
Как это сделать ?

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




Пост N: 6456
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.09.19 20:18. Заголовок: Всем привет ! Сделал..


Всем привет !
Сделал тестовый пример, показ из массива 20 вкладок по 25 объектов LABEL + 25 объектов GetBox
Построение на TAB происходит моментально, без "дерганья".
Значит эффект "дерганья" происходит тогда, когда считываются значения полей из базы.
Буду дальше пилить тестовый пример.

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




Пост N: 6458
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 02.10.19 12:45. Заголовок: Наконец то смог зако..


Наконец то смог закончить проверку "дерганья" карточки в TAB.
Мой косяк, делаю перерисовку всех объектов TAB в SizeTest.
Сам виноват, не там нужно было делать.
И вот это:
Form_1.Tab_1.Visible := .F.
Form_1.Tab_1.Visible := .T.

помогло убрать "дерганье" карточки в TAB !
Спасибо всем подсказчикам !

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




Пост N: 6506
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.11.19 18:04. Заголовок: Всем привет ! Stand..


Всем привет !

Standard Window:
@ <nRow> ,<nCol> FRAME <ControlName>
[ ID <nId> ]
[ OF | PARENT | DIALOG <ParentWindowName> ]
[ CAPTION <cCaption> ]
[ WIDTH <nWidth> ]
[ HEIGHT <nHeight> ]
[ FONT <cFontName> ]
[ SIZE <nFontSize> ]
[ BOLD ] [ ITALIC ] [ UNDERLINE ] [ STRIKEOUT ]
[ BACKCOLOR <anBackColor> ]
[ FONTCOLOR <anFontColor> ]
[ OPAQUE ]
[ TRANSPARENT ]
[ INVISIBLE ]
[ ON INIT <bInit> ]

Использую это объект. Заголовок всегда черным цветом. Можно ли его сделать другим цветом ?
Попробовал разные варианты, у меня не получилось.

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




Пост N: 6507
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.11.19 17:30. Заголовок: Посмотрел тест на ХР..


Посмотрел тест на ХР и Win8.1 - цвет заголовка FRAME тоже черный !
Думал опять какая то бодяга в Win8.1..
Смотрел ppo файл - цвет передается нормально !
_BeginFrame ( cObj,, nY, nX, nWFrm, nHFrm , aObjFrm[nI,2] , , , .F. , .F., .F., .F., .F. , aBackColor , {255, 0, 0} , .F. , .F. , , ) 

Значит в МиниГуи что-то сломалось....
Поставил проверку в h_frame.prg на строки
 
_HMG_aControlType [k] := "FRAME"
_HMG_aControlNames [k] := ControlName
_HMG_aControlHandles [k] := ControlHandle
...............
_HMG_aControlBkColor [k] := backcolor
_HMG_aControlFontColor [k] := fontcolor
? "_HMG_aControlFontColor["+HB_NtoS(K)+"]", HB_ValToExp( _HMG_aControlFontColor[k] )

Цвет передаётся нормально:
_HMG_aControlFontColor[27]	{255, 0, 0}	

А дальше не знаю где смотреть....
Посмотрите/попробуйте пожалуйста объект FRAME, это только у меня или везде так ЧЕРНЫМ цветом

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




Пост N: 1620
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 04.11.19 17:59. Заголовок: Andrey пишет: это т..


Andrey пишет:

 цитата:
это только у меня или везде так ЧЕРНЫМ цветом


Эта проблема уже обсуждалась ранее:
если используется THEMED Винда, то цвет текста в заголовке FRAME и в подписи CHECKBOX всегда черный.

Для того, чтобы увидеть цветной заголовок, надо использовать Классический вид в Винде, т.е. как в Windows 98

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




Пост N: 6508
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.11.19 18:24. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Эта проблема уже обсуждалась ранее:


Пропустил наверное... Пока сам на грабли не налетел, не запомнишь !
СПАСИБО, понял.

А в C# (он называется GroupBox) на любых темах цвет заголовка FRAME можно делать любым...
Вот пример - https://cloud.mail.ru/public/Ba8K/kzjVDx7tc
Может можно как нибудь сделать изменение цвета заголовка и для МиниГуи ?
Это не срочно, но чтобы было такое в МиниГуи.

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




Пост N: 1621
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 04.11.19 18:40. Заголовок: Andrey пишет: Может..


Andrey пишет:

 цитата:
Может можно как нибудь сделать изменение цвета заголовка и для МиниГуи ?


Да, есть уже.
Посмотри функцию MyFrame() в примере из папки samples\Basic\LABEL_3

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




Пост N: 6509
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.11.19 18:53. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Посмотри функцию MyFrame() в примере из папки samples\Basic\LABEL_3


Посмотрел...
Что-то не совсем понятно как прицепить эту функцию в модуль Form_fonts.prg проекта Tsb_composite ?
Там несколько FRAME и имена объектов разные.

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




Пост N: 6510
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.11.19 17:48. Заголовок: Вроде получилось сде..


Вроде получилось сделать несколько FRAME через функцию MyFrame(), но пришлось убрать имя и размер фонта в этой функции. И не по центру текста проходиь полоса, но пойдёт и так !
Спасибо Григорий !

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




Пост N: 6513
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.11.19 15:13. Заголовок: Всем привет ! Вот чт..


Всем привет !
Вот что за ерунда получается, как юзер добивается ошибки в работающей программе ?
Пробовал сам - не вылетает, а юзер что-то делает и вылетает.
Вот например такая ошибка:
Error MGERROR/0 Window: Form_Dim is already defined. Program terminated.
Called from MSGMINIGUIERROR(100) in module: h_error.prg
Called from _DEFINEMODALWINDOW(487) in module: h_windows.prg
Called from FORM_SEL_DIM(632) in module: Source\Sel_Dim_Hmg.prg
Called from SEL_DIM(561) in module: Source\Sel_Dim_Hmg.prg

В исходнике все правильно, у меня работает без ошибок:
    DEFINE WINDOW Form_Dim         ; 
....
MODAL NOSYSMENU ;
NOSIZE ;
ON INIT {|| OnInitFormDim(lKeyPass), oBrw_5:Setfocus() } // строка 632

Как расшифровать ошибку ?
Может доп.отладку какую то сделать ?
Окно Form_Dim только в ОДНОМ исходнике, и оно MODAL, т.е. другое окно не сделаешь, пока это окно не закроешь.
Или я чего-то не до понимаю ?

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




Пост N: 7136
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.11.19 16:15. Заголовок: Andrey пишет: Пробо..


Andrey пишет:

 цитата:
Пробовал сам - не вылетает, а юзер что-то делает и вылетает.


Проставь ему пиво , пусть колется как

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





Пост N: 243
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 12.11.19 21:41. Заголовок: Andrey пишет: Может..


Andrey пишет:

 цитата:
Может доп.отладку какую то сделать ?


Я в терминалке сделал второй поток и отслеживаю нажатые клавиши и сохраняю изменения экрана, имитирую видеопоток. Сохраняю все в базу, потом можно просматривать что делал пользователь, что нажимал в какой момент времени, снимок состояния базы и т.д. Иногда помогает понять что накосячили, да и подловить недобросовестных пользователей можно.... Наверное в гуи более затратно будте вести постоянную запись, но последние минуту -другую до вылета проги можно сохранять и выкладывать на ftp например

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




Пост N: 6517
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.11.19 17:12. Заголовок: Andrey пишет: Вот н..


Andrey пишет:

 цитата:
Вот например такая ошибка:
Error MGERROR/0 Window: Form_Dim is already defined. Program terminated.
Called from MSGMINIGUIERROR(100) in module: h_error.prg
Called from _DEFINEMODALWINDOW(487) in module: h_windows.prg
Called from FORM_SEL_DIM(632) in module: Source\Sel_Dim_Hmg.prg


Вроде разобрался с подсказки Сергея - почему так выходит, т.е. юзер ловит ошибку, а я нет .
У меня система Win8.1, у юзера Win7 и WinServer2008.
Юзер по кнопке успевает 2 раза кликнуть по мышке и 2 раза вызвать модальное окно с одинаковым именем.
У меня так не получается...
Сделал теперь в кнопке так:
        ACTION {|cw,cn| cw := ThisWindow.Name, cn := This.Name                        ,;  
SetProperty(cw,cn, "Enabled", .F.) ,;
Form_Sel_Dim() ,; // вызов справочника
iif( _IsWindowActive(cw), Setproperty(cw,cn, "Enabled", .T.), Nil ) ,;
Form_Seek.Label_Buff.Setfocus }


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



Пост N: 1
Зарегистрирован: 29.11.19
ссылка на сообщение  Отправлено: 29.11.19 10:25. Заголовок: Всем привет ! в прим..


Всем привет !
в примере \MiniGUI\SAMPLES\Advanced\Tsb_array_2\demo.prg, если увеличить количество колонок (раза в 3, выход за ширину TSBROWS)
и после запуска программы на горизонтальном SCRLLBAR удерживать кнопку движения вправо, всё подвисает.
Может кто то подскажет как побороть ?

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




Пост N: 2969
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.11.19 12:39. Заголовок: kkg пишет и после за..


kkg пишет
 цитата:
и после запуска программы на горизонтальном SCRLLBAR удерживать кнопку движения вправо, всё подвисает


Попробуйте сделать для колонок (при быстром скролинге не успевает за ним прорисовка тсб)
AEval( oBrw:aColumns, {|oc| oc:bGotFocus := {|| DoEvents() } } )
Если не поможет, то надо уменьшать количество колонок в просмотре, используя oc:Visible := .F. для скрытия и показываете, сгруппировав частями, переключая по выбору на нужную группу.

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



Пост N: 2
Зарегистрирован: 29.11.19
ссылка на сообщение  Отправлено: 29.11.19 14:08. Заголовок: SergKis пишет AEval..


SergKis пишет

 цитата:
AEval( oBrw:aColumns, {|oc| oc:bGotFocus := {|| DoEvents() } } )


Спасибо за идею, но не помогло, хотя улучшило.
Попробую через oBrw:bEvents "разжижить" событие WM_HSCROLL , SB_LINERIGHT

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




Пост N: 1627
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 29.11.19 22:30. Заголовок: kkg пишет: после за..


kkg пишет:

 цитата:
после запуска программы на горизонтальном SCRLLBAR удерживать кнопку движения вправо, всё подвисает


Да, это известная проблема с большим числом колонок и беспрерывным нажатием на стрелку

Как вариант решения, предлагается пример ниже:

 цитата:
 
#include "minigui.ch"
#include "tsbrowse.ch"

REQUEST SQLMIX

Procedure Main()

rddSetDefault( "SQLMIX" )

DEFINE WINDOW Form1 ;
AT 0,0 ;
WIDTH (RR_GetDesktopArea()[4] * 0.99) ;
HEIGHT (RR_GetDesktopArea()[3] * 0.91) ;
TITLE "TsBrowse Array Test" ;
MAIN ;
FONT 'Tahoma' SIZE 9

END WINDOW

Test()

Form1.Center
Form1.ACTIVATE

Return

*--------------------------------------------------------------

Function Test()
local i := 0
local j := 0
Local aStr := {}
local cAlias := "TEST"
local cBrw := "BRW"

PUBLIC &cBrw

FOR j := 1 TO 300
AADD( aStr, {"F_" + NTOC(j) , "N", 14, 2 } )
NEXT

dbCreate( cAlias, aStr,, .T., cAlias )

FOR i := 1 TO 100
(cAlias)->( DbAppend() )
FOR j := 1 TO 300
(cAlias)->( FieldPut(j, i*j) )
NEXT
NEXT

DEFINE TBROWSE &cBrw ;
At 20, 5 ;
ALIAS cAlias ;
OF Form1 ;
WIDTH (Form1.Width - 20) ;
HEIGHT (Form1.Height - 70) ;
COLORS { CLR_BLACK, CLR_WHITE } ;
FONT "MS Sans Serif" ;
SIZE 8 ;
CELL;
SELECTOR .T.
END TBROWSE

&cBrw:bUserKeys := { |x,y,z| left_right_key(x, y, z) }
&cBrw:bChange := { |x| tbrow_refresh(x) }

&cBrw:LoadFields( FALSE )

Return Nil

function left_right_key(pnKey, pnFlags, pSelf)
if pnKey == VK_LEFT .or. pNKey == VK_RIGHT
pSelf:refresh(.F.,.T.)
INKEYGUI(100)
pSelf:refresh(.F.,.T.)
end
return(pnKey)

function tbrow_refresh(x)
x:RefreshARow(x:nRowPos)
if x:nRowPos == x:nRowCount() .or. x:nRowPos == x:nRowCount() + 1
x:refresh(.F.,.T.)
end
return(NIL)



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



Пост N: 3
Зарегистрирован: 29.11.19
ссылка на сообщение  Отправлено: 30.11.19 02:56. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Как вариант решения, предлагается пример ниже:


Григорий спасибо, но и с SQLMIX и с массивом, результат всё равно крах.
click here

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




Пост N: 2979
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.11.19 09:31. Заголовок: kkg пишет с SQLMIX ..


kkg пишет
 цитата:
с SQLMIX и с массивом, результат всё равно крах


Правильнее, по мне, отработать счетчиками нажатия (+) и отпускания (сброс) клавиш VK_LEFT, VK_RIGHT,
т.е. если, к примеру, счетчик нажатий будет > 5, то не делать :GoLeft(), :GoRight() пока не отпустят или
не закончится прорисовка тсб. Похожая схема работает в моей версии (7+часть из 9) тсб при VK_UP, VK_DOWN,
нажатиях, если их >= :nRowCount(), то делаю листание страницы, вместо движения построчно.
Таким образом обхожу зависание прорисовки в 7ой версии тсб.

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




Пост N: 2980
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.11.19 15:37. Заголовок: SergKis пишет отрабо..


SergKis пишет
 цитата:
отработать счетчиками


Измененный пример от Григория со счетчиками Скрытый текст

Вроде работает

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



Пост N: 4
Зарегистрирован: 29.11.19
ссылка на сообщение  Отправлено: 30.11.19 18:13. Заголовок: SergKis пишет: Врод..


SergKis пишет:

 цитата:
Вроде работает


на этом примере да , но на примере из поставки с массивом + nFreeze на счётчиках не работает (по крайней мере у меня не получается), только с временной задержкой
Скрытый текст


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




Пост N: 2981
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.11.19 21:44. Заголовок: kkg пишет на этом пр..


kkg пишет
 цитата:
на этом примере да , но на примере из поставки с массивом + nFreeze на счётчиках не работает (по крайней мере у меня не получается), только с временной задержкой


Уменьшите значение
Static n_CntLeft := 0, n_CntRight := 0, n_LeftRight := 3
Вот пример Tsb_Array_2 с учетом :nFreeze Скрытый текст


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



Пост N: 5
Зарегистрирован: 29.11.19
ссылка на сообщение  Отправлено: 30.11.19 22:24. Заголовок: SergKis пишет: Умен..


SergKis пишет:

 цитата:
Уменьшите значение
Static n_CntLeft := 0, n_CntRight := 0, n_LeftRight := 3
Вот пример Tsb_Array_2 с учетом :nFreeze


так всё равно виснет если двигать зажатой кнопкой скрола в право

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




Пост N: 2982
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.12.19 00:39. Заголовок: kkg пишет так всё ра..


kkg пишет
 цитата:
так всё равно виснет если двигать зажатой кнопкой скрола в право


В моей сборки вправо и влево зажатый скролл работает по всей линейке и не виснет (hmg 19.09.2 сборка)
Если виснет у вас, то можно пробовать обработку сообщения WM_HSCROLL (цветом выделено)
 
function tsb_events( oBrw, nMsg, nWParam, nLParam )
Local nRet := 0, nKey, nFlag, nCol, nFrez
Local lCtrl := _GetKeyState( VK_CONTROL )
Local lShift := _GetKeyState( VK_SHIFT )
Local lAlt := _GetKeyState( VK_MENU )
Static n_CntLeft := 0, n_CntRight := 0, n_LeftRight := 3

nCol := oBrw:nCell
nFrez := oBrw:nFreeze + 1
nKey := nWParam
nFlag := nLParam

If lCtrl .or. lShift .or. lAlt
ElseIf nMsg == WM_KEYDOWN
If nKey == VK_LEFT .and. nCol > nFrez
n_CntLeft ++
If n_CntLeft >= n_LeftRight
nRet := 1
InkeyGui(100)
n_CntLeft := 0
EndIf
DoEvents()
ElseIf nKey == VK_RIGHT .and. nCol <= oBrw:nColCount()
n_CntRight ++
If n_CntRight >= n_LeftRight
nRet := 1
InkeyGui(100)
n_CntRight := 0
EndIf
DoEvents()
EndIf
Elseif nMsg == WM_HSCROLL
If ! oBrw:lDontchange
oBrw:HScroll( Loword( nKey ), HiWord( nFlag ) )
nRet := 1
InkeyGui(100)
DoEvents()
EndIf

ElseIf nMsg == WM_KEYUP
n_CntLeft := n_CntRight := 0
EndIf

return nRet

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

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



Пост N: 6
Зарегистрирован: 29.11.19
ссылка на сообщение  Отправлено: 01.12.19 02:43. Заголовок: SergKis пишет: В мо..


SergKis пишет:

 цитата:
В моей сборки вправо и влево зажатый скролл работает по всей линейке и не виснет (hmg 19.09.2 сборка)
Если виснет у вас, то можно пробовать обработку сообщения WM_HSCROLL (цветом выделено)


у меня сборка Harbour MiniGUI Extended Edition 19.10 (Update 2), на ней не работает.
заработало только так.
Скрытый текст


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




Пост N: 2983
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.12.19 11:45. Заголовок: kkg пишет заработало..


kkg пишет
 цитата:
заработало только так


hmg 19.09.2 сборка вашего примера скролл работает аналогично моего варианта, после двойных кликов по крайним кнопкам скролла (сообщения автоматом), при достижении крайних значений колонок, надо кликами на тсб активировать тсб работу.
Разваливается
- :nFreeze установленный (влево уходит на 1ю колонку) :nFreeze := 4
- Shift+End и Shift+Home (переход в конец\начало строки)
- врет с нумерацией SpecHeader, меняя нумерацию у :nFreeze колонок и соответсвенно у остальных

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




Пост N: 2984
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.12.19 11:58. Заголовок: PS Надо отметить, чт..


PS
Надо отметить, что и в моем примере SpecHeader врет одинаково и Shift+Home уст. на 1ю колонку, но по -> правильно перепрыгивает на колонку с учетом :nFreeze. Это, наверно, общая неточность в тсб.

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



Пост N: 7
Зарегистрирован: 29.11.19
ссылка на сообщение  Отправлено: 01.12.19 14:51. Заголовок: Ещё, после отпускани..


Ещё, после отпускания кнопки на скролбаре не сбрасывается сброс счётчика.
Допиливать нужно, но пока хоть не сваливается.
Уже приемлемо.

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




Пост N: 2985
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.12.19 18:07. Заголовок: kkg пишет Допиливать..


kkg пишет
 цитата:
Допиливать нужно, но пока хоть не сваливается


Что то допиливать надо, но у меня сборка hmg 19.10.2 на bcc 5.8 работает? не виснет по скроллу и клавишам.
Вот пример этой сборки https://TransFiles.ru/8n29c
Гонял туда-сюда работает и не виснет, так же как сборка bcc 5.5 hmg 19.09.2

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




Пост N: 2986
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.12.19 23:57. Заголовок: Повторю ссылку https..


Повторю ссылку https://TransFiles.ru/bwhwh

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



Пост N: 8
Зарегистрирован: 29.11.19
ссылка на сообщение  Отправлено: 02.12.19 01:47. Заголовок: SergKis пишет: Что ..


SergKis пишет:

 цитата:
Что то допиливать надо, но у меня сборка hmg 19.10.2 на bcc 5.8 работает? не виснет по скроллу и клавишам.


с oBrw:lLockFreeze := .F. на сборке 19.10.2 виснет + бегунок не дотягивает до последнего столбца

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




Пост N: 2987
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.12.19 10:19. Заголовок: kkg пишет с oBrw:lLo..


kkg пишет
 цитата:
с oBrw:lLockFreeze := .F. на сборке 19.10.2 виснет


При :nFreeze := 4 задан, надо :lLockFreeze := .T., избегать прорисовки замороженных колонок
По примеру с :lLockFreeze := .F. видно, что при работе левой кнопки скроллбар курсор добегает до 1ой колнки, а должен остановиться на 4ой, что и происходит при :lLockFreeze := .T.. Уже видно рассогласование в прорисовке.

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



Пост N: 9
Зарегистрирован: 29.11.19
ссылка на сообщение  Отправлено: 02.12.19 10:50. Заголовок: SergKis пишет: При ..


SergKis пишет:

 цитата:
При :nFreeze := 4 задан, надо :lLockFreeze := .F., избегать прорисовки замороженных колонок


На тяжёлых многоуровневых формах (много колонок) nFreeze нужен для замораживания ключевой информации,
а lLockFreeze := .F. нужен чтобы передать на следующий уровень строку с данными и номер (имя) кликнутой колонки,
но зачастую необходимая колонка находится в замороженной зоне поэтому и нужно чтобы курсор в неё заходил.

Для наглядности можно переставить местами
oBrw:lLockFreeze:=.f.
oBrw:nFreeze:=4

Ещё бывает необходимость редактировать данные в замороженной области

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




Пост N: 2988
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.12.19 11:27. Заголовок: kkg пишет На тяжёлых..


kkg пишет
 цитата:
На тяжёлых многоуровневых формах (много колонок) nFreeze нужен для замораживания ключевой информации,
а lLockFreeze := .F. нужен чтобы передать на следующий уровень строку с данными и номер (имя) кликнутой колонки,
но зачастую необходимая колонка находится в замороженной зоне поэтому и нужно чтобы курсор в неё заходил.


OK!
Попробуйте добавить в h_tbrowse.prg
 
METHOD DrawLine( xRow ) CLASS TSBrowse
...
Next

DoEvents()

EndIf

Return Self
...
METHOD DrawSelect( xRow, lDrawCell ) CLASS TSBrowse
...
If lDraw
AAdd( ::aDrawCols, nJ )
EndIf

Next

DoEvents()

EndIf

If ::bOnDraw != Nil
...

и пересобрать либу MakeLib.bat
Пример с :lLockFreeze := .F. мой вариант, вроде не виснет, покрутил туда-сюда какое то время.

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




Пост N: 2989
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.12.19 11:49. Заголовок: SergKis пишет вроде ..


SergKis пишет
 цитата:
вроде не виснет, покрутил туда-сюда какое то время


Стало обвисать перемещение клавишами, к сожалению, а скроллбар нет.

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




Пост N: 2990
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 04.12.19 16:35. Заголовок: kkg Попробуйте вари..


kkg
Попробуйте вариант, вроде работаеат, не обвисает у меня Скрытый текст


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



Пост N: 10
Зарегистрирован: 29.11.19
ссылка на сообщение  Отправлено: 04.12.19 17:48. Заголовок: SergKis пишет: Попр..


SergKis пишет:

 цитата:
Попробуйте вариант, вроде работаеат


я уже два дня на юзерах проверяю, вот такой вариант
Скрытый текст



но чтоб избежать лишнего Refresh пришлось поправить, h_tbrowse.prg

METHOD GoRight( lRefresh ) CLASS TSBrowse

Local nTxtWid, nWidth, nCell, nSkip //,
default lRefresh := ( ::lCanAppend .or. ::lIsArr )
.
.
.
if !Empty(lRefresh)
// lRefresh := ( ::lCanAppend .or. ::lIsArr )

While ! ::IsColVisible( ::nCell ) .and. ::nColPos < ::nCell
::nColPos ++
lRefresh := .T.
EndDo
endif

пока полёт нормальный, не учёл только не отображаемые колонки, но я их не использую

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



Пост N: 11
Зарегистрирован: 29.11.19
ссылка на сообщение  Отправлено: 04.12.19 18:02. Заголовок: SergKis пишет: Попр..


SergKis пишет:

 цитата:
Попробуйте вариант, вроде работаеат



спасибо, у меня не подвисает

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




Пост N: 2991
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 04.12.19 18:20. Заголовок: kkg Используйте в р..


kkg
Используйте в редакторе для сохранения отступов моноширинный шрифт - левая, первая кнопка с 123. т.е.
[ more ][ pre2 ]
тут текст
[ /pre2 ][ /more ]
очень трудно смотреть выложенный текст без выравнивания

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



Пост N: 12
Зарегистрирован: 29.11.19
ссылка на сообщение  Отправлено: 04.12.19 19:35. Заголовок: SergKis пишет: Испо..


SergKis пишет:

 цитата:
Используйте в редакторе для сохранения отступов моноширинный шрифт


ок

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




Пост N: 6547
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.12.19 12:07. Заголовок: SergKis пишет: Попр..


SergKis пишет:

 цитата:
Попробуйте вариант, вроде работаеат, не обвисает у меня



Тоже столкнулся с таким же повисанием.
У меня таблица из 46 столбцов, вешает прогу наглухо.

Я так понял что достаточно добавить
oBrw:bEvents := {|ob,nm,np,nl| tsb_events(ob,nm,np,nl) } и саму функцию обработки ?
У меня нет клавиш :bUserKeys

PS Попробовал, не собирается, выдаёт ошибку:
Harbour 3.2.0dev (r1909261630)
Copyright (c) 1999-2019, https://harbour.github.io/
tsb_prnExp.prg(462) Warning W0003 Variable 'NLPARAM' declared but not used in function 'TSB_EVENTS(399)'
hbmk2[5Tbrw_table]: Error: Running Harbour compiler (built-in). 1


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




Пост N: 2993
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.12.19 16:24. Заголовок: Andrey Попробовал, н..


Andrey
 цитата:
Попробовал, не собирается, выдаёт ошибку:


Посмотреть и исправить (или сменить режим компилятора на не строгий), наверно, ни как ?
 

nCol := oBrw:nCell
nFrez := oBrw:nFreeze + 1
nKey := Loword( nWParam )
nFlag := HiWord( nWParamnLParam )

If lCtrl .or. lShift .or. lAlt


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




Пост N: 6548
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.12.19 16:50. Заголовок: SergKis пишет: Посм..


SergKis пишет:

 цитата:
Посмотреть и исправить (или сменить режим компилятора на не строгий), наверно, ни как ?


Не могу. Контроль нужен.

Спасибо ! Заработало !

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




Пост N: 2994
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.12.19 17:34. Заголовок: Andrey пишет Заработ..


Andrey пишет
 цитата:
Заработало !


В своей версии сделал
 
CLASS TSBrowse FROM TControl
...
DATA lMoreFields AS LOGICAL INIT .F.
DATA nCntKeysLR AS NUMERIC INIT 0
DATA nMaxKeysLR AS NUMERIC INIT 3
DATA nCntScroll AS NUMERIC INIT 0
DATA nMaxScroll AS NUMERIC INIT 3

...
METHOD MoreFields( nMsg, nWParam, nLParam ) CLASS TSBrowse
Local nRet := 0, nCol, nFrez, nKey, nPos
Local lCtrl := _GetKeyState( VK_CONTROL )
Local lShift := _GetKeyState( VK_SHIFT )
Local lAlt := _GetKeyState( VK_MENU )

If lCtrl .or. lShift .or. lAlt ; RETURN nRet
EndIf

nCol := ::nCell
nFrez := ::nFreeze + 1
nKey := Loword( nWParam )
nPos := HiWord( nLParam )

If nMsg == WM_KEYDOWN
If nKey == VK_LEFT .and. nCol > nFrez
::nCntKeysLR ++
If ::nCntKeysLR >= ::nMaxKeysLR
nRet := 1
::nCntKeysLR := 0
EndIf
DO EVENTS
ElseIf nKey == VK_RIGHT .and. nCol < ::nColCount()
::nCntKeysLR ++
If ::nCntKeysLR >= ::nMaxKeysLR
nRet := 1
::nCntKeysLR := 0
EndIf
DO EVENTS
EndIf
ElseIf nMsg == WM_KEYUP
::nCntKeysLR := 0
Elseif nMsg == WM_HSCROLL
If ! ::lDontchange .and. ::lEnabled
IF nKey == SB_LINEUP ; ::nCntScroll ++
ELSEIF nKey == SB_LINEDOWN ; ::nCntScroll ++
ELSE ; ::nCntScroll := 0
ENDIF
IF ::nCntScroll >= ::nMaxScroll
nRet := 1
::nCntScroll := 0
ENDIF
EndIf
EndIf

RETURN nRet

...
METHOD HandleEvent( nMsg, nWParam, nLParam ) CLASS TSBrowse
...
IF ::lMoreFields
IF ! Empty( ::MoreFields( nMsg, nWParam, nLParam ) )
RETURN 1
ENDIF
ENDIF

If hb_IsBlock( ::bEvents )
If ! Empty( ar := EVal( ::bEvents, Self, nMsg, nWParam, nLParam ) )
Return 1
EndIf
EndIf
...
тогда в примере
oBrw:nFreeze := 4
oBrw:lLockFreeze := .F.
oBrw:lMoreFields := .T.
// oBrw:bEvents := {|ob,nm,np,nl| tsb_events(ob,nm,np,nl) }

oBrw:nCell := oBrw:nFreeze + 1
oBrw:lAdjColumn := .T.
...


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




Пост N: 1631
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 08.12.19 19:36. Заголовок: SergKis пишет: В св..


SergKis пишет:

 цитата:
В своей версии сделал

CLASS TSBrowse FROM TControl


Добавил эти изменения в новую сборку 19.12
Благодарю за помощь

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




Пост N: 6549
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.12.19 21:35. Заголовок: SergKis пишет: тогд..


SergKis пишет:

 цитата:
тогда в примере
oBrw:nFreeze := 4
oBrw:lLockFreeze := .F.
oBrw:lMoreFields := .T.
// oBrw:bEvents := {|ob,nm,np,nl| tsb_events(ob,nm,np,nl) }
oBrw:nCell := oBrw:nFreeze + 1
oBrw:lAdjColumn := .T.



gfilatov2002 пишет:

 цитата:
Добавил эти изменения в новую сборку 19.12



Т.е. в новой сборке это не нужно будет делать ?
А если оставить ? Конфликты будут ?

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




Пост N: 1632
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.12.19 10:32. Заголовок: Andrey пишет: в нов..


Andrey пишет:

 цитата:
в новой сборке это не нужно будет делать ?


Да

Andrey пишет:

 цитата:
если оставить ? Конфликты будут ?


Нет, проблем не будет (если Вы не определите дополнительно oBrw:lMoreFields := .T., конечно )

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




Пост N: 2995
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.12.19 12:21. Заголовок: Andrey пишет если ос..


Andrey пишет
 цитата:
если оставить ? Конфликты будут ?


Погонял пример с установками, т.е. работают метод и ф-я (hmg 19.09.2)
oBrw:lMoreFields := .T.
oBrw:bEvents := {|ob,nm,np,nl| tsb_events(ob,nm,np,nl) }
все OK не виснет, т.е. конфликта нет, работает

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




Пост N: 6550
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.12.19 14:55. Заголовок: Всем привет ! Перио..


Всем привет !

Периодически у моих юзеров появляется такая ошибка:


Вот строка
Html_LineText( nHandle, "Free disk space....: " + strvalue( Round( DiskSpace() / ( 1024 * 1024 ), 0 ) ) + " MB" )

Но надиске 90 Гб свободного места.

У меня свой, чуток исправленный ErrorSys.prg
Что эта за ошибка и как от неё избавиться ?

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


Пост N: 1574
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 10.12.19 16:03. Заголовок: Andrey пишет: Что э..


Andrey пишет:

 цитата:
Что эта за ошибка и как от неё избавиться ?


BASE/2018 Open error (DISKSPACE() function)

Default Behavior: The program continues after returning an empty
value.

Explanation: The disk does not exist or is not ready upon an
attempt to access it with the DISKSPACE() function.

Action: Make sure to supply the correct drive number (for fixed
disks) or call the DISKSPACE() function in a loop

with a user warning
when checking the readiness of a floppy drive.
See Also: COPY FILE command

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




Пост N: 6551
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.12.19 17:22. Заголовок: Да не делаю я перекл..


Да не делаю я переключений между дисками.
У юзера диски C D и флешка.
Файлы не копирую не куда.
Делаю отправку записи на PostgesSQL

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




Пост N: 2996
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.12.19 19:07. Заголовок: Andrey пишет У меня ..


Andrey пишет
 цитата:
У меня свой, чуток исправленный ErrorSys.prg


Так правь дальше, что то типа такого
nSpace := -1

begin sequnce ...
nSpace := DiskSpace()
end

if nSpace < 0
? hb_disk(), ...
EndIf

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




Пост N: 6561
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.01.20 13:26. Заголовок: Всем привет ! Опять..


Всем привет !

Опять такая же ошибка.
Только система не Win10, a Win7.
Т.е. на разных системах появляется такие одинаковые ошибки.



Строка 233 в модуле ErrorSys.prg:
      Html_LineText( nHandle, "Free disk space....: " + strvalue( Round( DiskSpace() / ( 1024 * 1024 ), 0 ) ) + " MB" ) 

На обоих дисках свободно - C: 34Гб D: 200-Гб
Почему вылазит такая ошибка ? Как исправить, чтобы не появлялась в дальнейшем ?

Нашёл в недописанном ErrorLog.htm
Workstation name...: SERVER 
Active user name...: Администратор
Available memory...: 1986 MB
Current disk.......: A
Current directory..: \Server\ABONENT\ABONENT2\COMMO

Я так понял - сбой непонятный.
На диск А: не переключался !
И сетевой путь должен быть \\Server\ABONENT\ABONENT2\COMMO

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


Пост N: 1579
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 20.01.20 14:17. Заголовок: Видимо, DiskSpace() ..


Видимо, DiskSpace() не умеет работать с сетевыми дисками/шарами. Ты ему подсовываешь "\\Server\ABONENT\ABONENT2\COMMO", а он берет первый символ этой строки и интерпретирует его как "А".

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




Пост N: 3009
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 20.01.20 15:46. Заголовок: Вместо DiskSpace, на..


Вместо DiskSpace, надо применять nFreeSpace := hb_vfDirSpace( cDirName, [ nInfoType ] ) (см. у А. Кресина на сайте)

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




Пост N: 6562
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.01.20 18:13. Заголовок: Попробовал сетевой д..


Попробовал сетевой диск на своём компе - вроде работает...
   ? M->SetPathSrv 
?? DiskSpace(M->SetPathSrv)

\\Andrey8\work_uchet\VxIsxDoc 155406909440

Может проблема с сетью у заказчика ?
Хотя базы работают без проблем.
А при ошибке - фигня...

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




Пост N: 1510
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 20.01.20 19:18. Заголовок: Andrey пишет: Может..


Andrey пишет:

 цитата:
Может проблема с сетью у заказчика


Есть мнение что unc пути работают корректно только под админом.
У себя во всяком на этом не раз обжегся

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





Пост N: 212
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 06.02.20 12:07. Заголовок: Удивительная ошибка ..


Удивительная ошибка обнаружилась. Пишу:

@ 10,10 LABEL LABEL_NAME VALUE NameBase

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

@ 10,10 LABEL LABEL_NAME VALUE ' '+NameBase

Кто-нибудь с таким сталкивался? Что это может быть?

У меня стоит версия 19.06, на новые версии с другими компиляторами пока не перебрался.

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




Пост N: 3024
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.02.20 14:21. Заголовок: rvu пишетКто-нибудь ..


rvu пишет
 цитата:
Кто-нибудь с таким сталкивался? Что это может быть?


Возможно причина в том, что не задано WIDTH у LABEL и ширина считается при каждом присвоении от значения и
возникло внутреннее "недопонимание" при выводе на экран.

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





Пост N: 213
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 06.02.20 17:04. Заголовок: SergKis пишет: что ..


SergKis пишет:

 цитата:
что не задано WIDTH



С заданой тоже не работает. Вернее так же — то работает, то нет. А при добавлении явного символа всегда работает.

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




Пост N: 3026
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.02.20 19:17. Заголовок: Попробуйте так Если ..


Попробуйте так
 
Если в лабел данные из полей дбф, то используйте имя поля для лабел, если для поля исп. еще getbox, то
для него исп. имя поля, для лабел добавляйте '_'. получается просто в использовании.
Т.е. кода создаете форму, данных из базы не используете, потом выполняете процедуру заполнения данными
Пример
y := x := 10
FOR EACH aFld IN (cAls)->( dbStruct() )
cFld := aFld[1]
@ y,x LABEL &( cFld+'_' ) VALUE ' ' WIDTH nW HEIGHT nH
This.&(cFld+'_').Value := Trim(cValToChar( (cAls)->&cFld ))+' '
y += 10
NEXT
...
Ваш вариант
...
cN := 'NAME'
@ y,x LABEL LABEL_NAME VALUE ' ' WIDTH nW HEIGHT nH
...
FUNC Refr_Lbl( oBrw )
LOCAL cAls := oBrw:cAlias

This.LABEL_NAME.Value := Trim(cValToChar( (cAls)->NAME ))+' '
...
RETU Nil


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





Пост N: 214
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 06.02.20 22:28. Заголовок: SergKis пишет: Trim..


SergKis пишет:

 цитата:
Trim(cValToChar( (cAls)->NAME ))+' '



А для чего в конце добавляется пробел?

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




Пост N: 3027
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.02.20 22:38. Заголовок: rvu пишет А для чего..


rvu пишет
 цитата:
А для чего в конце добавляется пробел?


Если поле пустое, то получается 0-я длина, будет ли вывод при этом ?
Сегодня - да, а завтра ?
Добавляю, скорее, по привычке

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





Пост N: 215
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 07.02.20 10:50. Заголовок: SergKis пишет: Если..


SergKis пишет:

 цитата:
Если поле пустое, то получается 0-я длина, будет ли вывод при этом ?
Сегодня - да, а завтра ?
Добавляю, скорее, по привычке



Так если пробел все равно добавлять, то с ним и так работает. Вот заменил вообще на поле БД:

@ 10,10 LABEL LABEL_NAME VALUE ' '+ALLTRIM(BASECONFIG->NAME) WIDTH 1500

Только работает с пробелом в начале, с пробелом в конце не работает.

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




Пост N: 3028
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.02.20 11:15. Заголовок: rvu пишет Так если п..


rvu пишет
 цитата:
Так если пробел все равно добавлять, то с ним и так работает. Вот заменил вообще на поле БД:


Я предлагал разделить создание контролов и заполнение их данными в разные процедуры, т.е.
 
DEFINE WINDOW Form1 ...
Label_Crt()
END WINDOW
ACTION WINDOW Form1 ON INIT {|| Label_Val() } // или в ON INIT окна или ставим в :Event(1, {|| Label_Val() }), активируя сообщением
...
STAT FUNC Label_Crt()
...
@ 10,10 LABEL NAME VALUE ' ' WIDTH 1500 VCENTERALIGN
...
RETU Nil

STAT FUNC Label_Val()
LOCAL cAls := 'BASECONFIG'
...
This.NAME.Value := Trim( (cAls)->NAME )+' '
* Form1.NAME.Value := Trim( (cAls)->NAME )+' ' // или такую форму записи
...
RETU Nil

Вызывая Label_Val() повторно (изменив поле NAME) производите переотображение Label NAME
Добавление пробела слева смещает текст отображения вправо на ширину пробела в пикселях, т.е. сменили координату X у лабел

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





Пост N: 216
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 07.02.20 11:25. Заголовок: SergKis пишет: Доба..


SergKis пишет:

 цитата:
Добавление пробела слева смещает текст отображения вправо на ширину пробела в пикселях, т.е. сменили координату X у лабел



Это понятно.

SergKis пишет:

 цитата:
Я предлагал разделить создание контролов и заполнение их данными в разные процедуры



Может быть это и правильно. Будет побольше времени надо будет попробовать. Спасибо за идею!

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




Пост N: 6576
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.02.20 16:31. Заголовок: Запускаю прогу на Ми..


Запускаю прогу на МиниГуи.
На форме есть таймер.
        DEFINE TIMER Timer_1 ; 
INTERVAL (StaticTimeUpdate * 100) * 1000 ACTION OperatUsers2()
....
// Функция чтения всех работающих в журнале программы / заглушка
Function OperatUsers2()
LOCAL nSel := SELECT()
? "Timer всех работающих в программе !", TIME(), ProcNameLine(0)
Form_Main.Label_0.Value := "+" + TIME()
SELECT(nSel)
RETURN NIL

После запуска проги, в Фаре работать нельзя, отрубаются клавиши.
Запускаю TeamViewer, пытаюсь набрать пароль в нём, пароль неверен.
Закрываю прогу на МиниГуи - всё прекрасно начинает работать.

Что то с таймером беда... Или опять я нахимичил ....

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




Пост N: 1525
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 21.02.20 10:25. Заголовок: hb_idleSleep() и TCNLDATA - Error BASE/1102 Неверный аргумент: UPPER</p>


я в тупике , примитивный код
 
for n := 1 To 3
hb_IdleSleep(1) // дает на втором шаге Error BASE/1102 Неверный аргумент: UPPER</p>
end


не соображу причем тут слип

трассер ошибки
 
<br/></summary>
Called from UPPER(0)
<BR>
Called from (b)TCNLDATA(737) in module: h_objects.prg
<BR>
Called from TCNLDATA:DEL(0)
<BR>
Called from (b)TCNLDATA(776) in module: h_objects.prg
<BR>
Called from TCNLDATA:DESTROY(0)
<BR>
Called from TWNDDATA:__msgDestructor(678) in module: h_objects.prg
<BR>
Called from HB_IDLESLEEP(0)


условия такие
Operating system...: Windows 7 6.1 SP1<BR>
MiniGUI version....: Harbour MiniGUI Extended Edition 19.08 (32-bit)<BR>
Harbour version....: Harbour 3.2.0dev (r1904111533)<BR>
Harbour built on...: Apr 11 2019 19:43:19<BR>
C/C++ compiler.....: Borland C++ 5.5.1 (32-bit)<BR>
Multi Threading....: YES<BR>
VM Optimization....: YES<BR>

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




Пост N: 3071
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.02.20 10:44. Заголовок: Haz пишет не соображ..


Haz пишет
 цитата:
не соображу причем тут слип


Идет, похоже, разрушение\destroy окна во время Sleep, которого уже нет, т.е.
 
METHOD Destroy() INLINE ( ::Del(), ;
...
и
METHOD Del() INLINE ( iif( HB_ISOBJECT( ::oWin:oName ), ::oWin:oName:Del( Upper( ::cName ) ), ), ;
iif( HB_ISOBJECT( ::oWin:oHand ), ::oWin:oHand:Del( ::nHandle ), ) )
...

Не знаю, не смотрел, как устроен hb_IdleSleep(...), я использую wApi_Sleep(...)

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




Пост N: 3072
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.02.20 10:46. Заголовок: PS Т.е. во время Sle..


PS
Т.е. во время Sleep идет обработка сообщений очереди.
Для задержки использую wApi_Sleep(...), для обработки очереди без задержки DoEvents().

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




Пост N: 1526
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 21.02.20 10:48. Заголовок: SergKis пишет: я ис..


SergKis пишет:

 цитата:
я использую wApi_Sleep(...)


работает

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




Пост N: 6649
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.05.20 16:25. Заголовок: Столкнулся с очередн..


Столкнулся с очередной непоняткой.
Как сдвинуть дату немного вправо в объекте DATEPICKER ?
На картинке вот так выглядит:


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




Пост N: 6656
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.05.20 13:24. Заголовок: Очередная засада в М..


Очередная засада в МиниГуи.

Имеется GetBox , ввожу в него:
"1238881818АА" 
"1238881818БББ"
"1238881818ЯЯЯ"


В отладке получаю вот это:
Gbox_1	This.&(cGetBox).Value =	1238881818└└	 
Gbox_1 This.&(cGetBox).Value = 1238881818┴┴┴
Gbox_1 This.&(cGetBox).Value = 1238881818▀▀▀


Куда делись русские буквы АА и БББ и ЯЯЯ ?
Маленькие русские буквы отлично отображаются !!!

Вот код проверки:

   FOR nJ := 1 TO LEN(aGetBoxObj) 

cGetBox := aGetBoxObj[nJ]
cVal := This.&(cGetBox).Value
? cGetBox, "This.&(cGetBox).Value = ",cVal
...............


А сам объект формируется так:
 
aPict := { REPL('x',18) }
......
cObj2 := "Gbox_" + HB_NtoS(nI)
@ ... GETBOX &cObj2 VALUE aRcPlt[nI] ... ;
PICTURE aPict[nI] .... ;
ON CHANGE {|| _wSend(10, This.Index), This.Value := aRcPlt[This.Cargo] } ;
ON INIT {|| This.Cargo := nI, This.Value := aRcPlt[nI] }

AADD( aGetBoxObj, cObj2 ) // для проверки на русские буквы
........
// назначаем на getbox и checkbox событие
(This.Object):Event(10, {|| aRcPlt[ This.Cargo ] := This.Value })


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3942
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 08.05.20 13:52. Заголовок: Да кодировка у дебаг..


Да кодировка у дебаггера не той системы
Буква А, код в 1251 - 0xc1, в cp866 как раз отображается такой закорлючкой

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




Пост N: 6657
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.05.20 15:02. Заголовок: Pasha пишет: Да код..


Pasha пишет:

 цитата:
Да кодировка у дебаггера не той системы
Буква А, код в 1251 - 0xc1, в cp866 как раз отображается такой закорлючкой



У меня в МиниГуи кодировка RU1251
Соответственно GETBOX должнен быть в RU1251
И при доп. выводе в файл получаю, беру ASC(символа) :
	└	192 
┴ 193
▀ 223


И код не работает по проверке на русские буквы ВЕРХНЕГО РЕГИСТРА:
STATIC FUNCTION CheckingRussianGet( aGetBoxObj ) // Проверка на русские буквы 
LOCAL lRet := .T., nI, cC, nJ, cVal
LOCAL cGetBox, cTbl := ' 0123456789' , cMsg := ""

FOR nI := 128 TO 175
cTbl += CHR(nI)
NEXT
FOR nI := 224 TO 239
cTbl += CHR(nI)
NEXT
? cTbl

FOR nJ := 1 TO LEN(aGetBoxObj)

cGetBox := aGetBoxObj[nJ]
cVal := This.&(cGetBox).Value
? cGetBox, "This.&(cGetBox).Value = ",cVal

FOR nI := 1 TO Len(cVal)
cC := subs(cVal, nI, 1)
? nI, cC, ASC(cC), " logika[ ! cC $ cTbl ]=", ! cC $ cTbl
If ! cC $ cTbl
cMsg += 'Неверный символ "'+cC+'" позиция '+hb_ntos(nI)
cMsg += ' строка '+hb_ntos(nJ)+";"
lRet := .F.
EXIT
EndIf
NEXT

NEXT

IF ! lRet
cMsg += 'БУКВЫ должны быть русскими !;;'
cMsg += "Исправьте, иначе поиск будет неправилен !;;"
MG_Stop(cMsg, 'Ошибка')
This.&(cGetBox).SetFocus
DO EVENTS
ENDIF

RETURN lRet


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3943
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 08.05.20 15:42. Заголовок: Andrey пишет: F..


Andrey пишет:

 цитата:
FOR nI := 128 TO 175
cTbl += CHR(nI)
NEXT
FOR nI := 224 TO 239
cTbl += CHR(nI)
NEXT



Так в cp1251 символы начинаются с кода 192. Такая проверка годится для cp866, а никак не для cp1251

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




Пост N: 6658
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.05.20 16:26. Заголовок: Pasha пишет: Так в ..


Pasha пишет:

 цитата:
Так в cp1251 символы начинаются с кода 192. Такая проверка годится для cp866, а никак не для cp1251


А на экране строка выглядит так:
[ 0123456789АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя]


Pasha пишет:

 цитата:
Такая проверка годится для cp866, а никак не для cp1251


Понял. Опять моя ошибка.
СПАСИБО !

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3944
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 08.05.20 16:30. Заголовок: Andrey пишет: А на ..


Andrey пишет:

 цитата:
А на экране строка выглядит так:



Правильно выглядит для кодировки 866
Еще хорошо бы выдать:

? hb_cdpSelect()

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




Пост N: 6659
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.05.20 16:34. Заголовок: Pasha пишет: ? hb_c..


Pasha пишет:

 цитата:
? hb_cdpSelect()


Выдает то что надо ! RU1251
СПАСИБО Паша !
Это я опять поторопился, когда делал.
Всё спешка проклятая. Сейчас юзера выдают мне мои ошибки по спешке.


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



Пост N: 137
Зарегистрирован: 12.06.06
ссылка на сообщение  Отправлено: 01.06.20 11:25. Заголовок: Для заставки в прогр..


Для заставки в программе использую функцию Paintdegrade() из примера \Minigui\Samples\Advanced\PaintDegrade\Demo.prg.
Если в пример вставить строку SET PROGRAMMATICCHANGE OFF , то цветовая гамма не появляется.
Это несоответствие появилось еще с версии 17.04 . Как решить эту проблему?

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




Пост N: 1724
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 01.06.20 11:56. Заголовок: i3t4j6 пишет: Как р..


i3t4j6 пишет:

 цитата:
Как решить эту проблему?


Попробуй

 цитата:
   DEFINE WINDOW Form_Main ; 
AT 0, 0 ;
WIDTH 600 HEIGHT 400 ;
TITLE 'Ejemplo Degradado en Ventanas' ;
MAIN ;
ON INIT paint_it( This.Handle ) ;
ON PAINT paint_it( This.Handle )
...



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



Пост N: 138
Зарегистрирован: 12.06.06
ссылка на сообщение  Отправлено: 02.06.20 11:57. Заголовок: Спасибо!!! Все работ..


Спасибо!!! Все работает.

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




Пост N: 6720
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.06.20 11:50. Заголовок: Всем привет ! А есть..


Всем привет !
А есть возможность узнать какая тема для контекстного меню установлена ?
Типа
   nThemes := SetThemes(2) 
.....
SetThemes(nThemes )

И ещё нужно узнать какой цвет фона установлен у HMG_Alert() ?
SET MSGALERT BACKCOLOR TO ..... 
nVal := GetMsgAlert()

Тоже для восстановления потом.

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




Пост N: 6744
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.07.20 11:14. Заголовок: Всем привет ! Очеред..


Всем привет !
Очередная китайская загадка.
На форму вывожу так:
? nY, nX, nWtb1, nHTxt, cFileSbln, aBColorTxt 
@ nY, nX TEXTBOX TbShbl_1 VALUE cFileSbln WIDTH nWtb1 HEIGHT nHTxt ;
FONTCOLOR BLACK BACKCOLOR aBColorTxt ON CHANGE {|| cFileSbln := This.TbSbln_1.Value }
пробовал и так:
@ nY, nX TEXTBOX TbShbl_1 VALUE cFileSbln WIDTH nWtb1 HEIGHT nHTxt ;
FONTCOLOR BLACK BACKCOLOR aBColorTxt ;
ON CHANGE {|| cFileSbln := Form_SetCmp.TbSbln_1.Value } // строка 192

Форму строит нормально, но при попытке ввода - вылет с ошибкой:
Error MGERROR/0 Control: TbSbln_1 Of Form_SetCmp Not defined. Program terminated. 
--------------------------------- Stack Trace ---------------------------------
Called from MSGMINIGUIERROR(100) in module: h_error.prg
Called from GETPROPERTY(4856) in module: h_controlmisc.prg
Called from (b)FORM_OPENCOMPSET(192) in module: aTopMenu2.prg
Called from _DOCONTROLEVENTPROCEDURE(1901) in module: h_windows.prg
Called from EVENTS(1912) in module: h_events.prg
Called from DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(1514) in module: h_windows.prg
Called from FORM_OPENCOMPSET(401) in module: aTopMenu2.prg

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

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




Пост N: 7211
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.07.20 14:47. Заголовок: Andrey пишет: Очере..


Andrey пишет:

 цитата:
Очередная китайская загадка.



Тема называется "Примеры из Минигуи -ошибки, вопросы"

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




Пост N: 1572
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 10.07.20 15:45. Заголовок: Andrey пишет: пробо..


Andrey пишет:

 цитата:
пробовал и так:
@ nY, nX TEXTBOX TbShbl_1 VALUE cFileSbln WIDTH nWtb1 HEIGHT nHTxt ;
FONTCOLOR BLACK BACKCOLOR aBColorTxt ;
ON CHANGE {|| cFileSbln := Form_SetCmp.TbSbln_1.Value }


Как минимум в этом.


 цитата:
Тема называется "Примеры из Минигуи -ошибки, вопросы"

согласен с Димой, тема относится к примерам. Про личную невнимательность лучше писать не здесь.

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




Пост N: 6745
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.07.20 17:00. Заголовок: Haz пишет: Про личн..


Haz пишет:

 цитата:
Про личную невнимательность лучше писать не здесь


Ну извините меня.
Запутался в переменной... с кем не бывает ?

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




Пост N: 6746
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.07.20 17:26. Заголовок: А вот дальше у меня ..


А вот дальше у меня точно НЕ МОЯ ошибка или баг.
При использовании отладки в лог-файл допустим _MsgLog.txt
после использования команды GetFile(...) перестаёт писаться в текущий лог,
создаёт НОВЫЙ лог в папке где был использован последний путь из GetFile(...)
Почему ?

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




Пост N: 3279
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.07.20 17:34. Заголовок: Andrey пишет после и..


Andrey пишет
 цитата:
после использования команды GetFile(...) перестаёт писаться в текущий лог


Исходники для того, что бы их смотреть h_ini.prg
 
*-----------------------------------------------------------------------------*
FUNCTION _SetGetLogFile( cFile )
*-----------------------------------------------------------------------------*
LOCAL cOld
STATIC MLog_File

cOld := MLog_File
IF cFile != NIL
MLog_File := cFile
RETURN MLog_File
ENDIF

RETURN cOld

*-----------------------------------------------------------------------------*
#ifndef __XHARBOUR__
FUNCTION _LogFile( lCrLf, ... )
#else
FUNCTION _LogFile( ... )
#endif
*-----------------------------------------------------------------------------*
LOCAL hFile, i, xVal, cTp
LOCAL aParams := hb_AParams()
LOCAL nParams := Len( aParams )
LOCAL cFile := hb_defaultValue( _SetGetLogFile(), GetStartUpFolder() + "\_MsgLog.txt" )
#ifdef __XHARBOUR__
LOCAL lCrLf
#endif
IF !Empty( cFile )
hFile := iif( File( cFile ), FOpen( cFile, FO_READWRITE ), FCreate( cFile, FC_NORMAL ) )
IF hFile == F_ERROR
RETURN .F.
ENDIF
FSeek( hFile, 0, FS_END )
IF nParams > 1
#ifdef __XHARBOUR__
lCrLf := aParams[ 1 ]
#endif
IF ( lCrLf := hb_defaultValue( lCrLf, .T. ) )
FWrite( hFile, CRLF, 2 )
ENDIF
IF nParams == 2 .AND. HB_ISNIL( aParams[ 2 ] ) .AND. lCrLf
ELSE
FOR i := 2 TO nParams
xVal := aParams[ i ]
cTp := ValType( xVal )
IF cTp == 'C' ; xVal := iif( Empty( xVal ), "'" + "'", Trim( xVal ) )
ELSEIF cTp == 'N' ; xVal := hb_ntos( xVal )
ELSEIF cTp == 'L' ; xVal := iif( xVal, ".T.", ".F." )
#ifdef __XHARBOUR__
ELSEIF cTp == 'D' ; xVal := DToC( xVal )
#else
ELSEIF cTp == 'D' ; xVal := hb_DToC( xVal, 'DD.MM.YYYY' )
#endif
ELSEIF cTp == 'A' ; xVal := "ARRAY[" + hb_ntos( Len( xVal ) ) + "]"
ELSEIF cTp == 'H' ; xVal := "HASH[" + hb_ntos( Len( xVal ) ) + "]"
ELSEIF cTp == 'B' ; xVal := "'" + "B" + "'"
ELSEIF cTp == 'T' ; xVal := hb_TSToStr( xVal, .T. )
ELSEIF cTp == 'U' ; xVal := 'NIL'
ELSE ; xVal := "'" + cTp + "'"
ENDIF
FWrite( hFile, xVal + Chr( 9 ) )
NEXT
ENDIF
ELSE
FWrite( hFile, CRLF, 2 )
ENDIF
FClose( hFile )
ENDIF

RETURN .T.
...

А GetFile() до фонаря эти ф-ии, внутри работает C ф-я, где то использована выделенная цветом

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




Пост N: 6751
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.07.20 21:20. Заголовок: Использую виндовую ф..


Использую виндовую функцию GetColor() из h_dialogs.prg
Открывается аж на другом конце экрана, по позиции окна примерно 10x10.
Окно с ТСБ на весь экран, колонка с изменением цвета в правом углу.
Вызываешь эту функцию и она показывается в левом углу...
Блин юзера задолбают вопросом - сдвинуть там где колонка.
А можно как то задать позицию этого GetColor() ?
В старом примере Tsb_Config тоже так же, только там задание цвета в отдельном окне и выходит по центру.
Более менее красиво.

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




Пост N: 1737
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 16.07.20 22:08. Заголовок: Andrey пишет: А мож..


Andrey пишет:

 цитата:
А можно как то задать позицию этого GetColor() ?


Попробуй задать команду

 цитата:
SET DIALOGBOX CENTER OF PARENT



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




Пост N: 6752
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.07.20 23:31. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Попробуй задать команду


Так получше !
А как можно снять эту команду, т.е. отменить её потом ?

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




Пост N: 7212
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 17.07.20 07:41. Заголовок: Andrey пишет: А как..


Andrey пишет:

 цитата:
А как можно снять эту команду, т.е. отменить её потом ?


Не судьба глянуть i_hmgcompat.ch ?

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




Пост N: 1738
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 17.07.20 09:12. Заголовок: Andrey пишет: отмен..


Andrey пишет:

 цитата:
отменить её потом ?


Dima пишет:

 цитата:
глянуть i_hmgcompat.ch



 цитата:
SET DIALOGBOX [ POSITION ] DISABLE



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




Пост N: 6753
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.07.20 15:16. Заголовок: Dima пишет: Не судь..


Dima пишет:

 цитата:
Не судьба глянуть i_hmgcompat.ch ?


Да тормознул...

gfilatov2002 пишет:

 цитата:
SET DIALOGBOX [ POSITION ] DISABLE


Спасибо !

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




Пост N: 6851
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.11.20 17:31. Заголовок: Всем привет. Фигня к..


Всем привет.
Фигня какая то получается.
Пишу в коде:
 
#define VIRT_COLUMN_END 6
#define VIRT_COLUMN_MAX VIRT_COLUMN_END + 1
....
nCol0 := nCol - VIRT_COLUMN_MAX
? "nCol=",nCol, "- VIRT_COLUMN_MAX=",VIRT_COLUMN_MAX, "nCol0 =",nCol0

В отладке выводит так:
  nCol= 9  - VIRT_COLUMN_MAX=   7  nCol0 =  4  

т.е. получается 9-7=4 Почему ?

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




Пост N: 3506
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.11.20 17:43. Заголовок: Andrey пишет #define..


Andrey пишет
 цитата:
#define VIRT_COLUMN_MAX VIRT_COLUMN_END + 1


Если используешь в вычислениях, то надо скобки
#define VIRT_COLUMN_MAX ( VIRT_COLUMN_END + 1 )

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




Пост N: 6852
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.11.20 18:10. Заголовок: Спасибо ! :sm208:..


Спасибо !

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





Пост N: 306
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 22.01.21 12:41. Заголовок: C:\MiniGUI\S..


C:\MiniGUI\SAMPLES\Advanced\ActiveX\

Пример браузера. Наблюдается такое: выделяешь выражение, если вызвать меню мышкой, то Копировать работает. А по CTRL+C не копирует.
Как это исправить? Какие могут быть причины?
По идее это виндовый браузер, в нем же это работает.

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




Пост N: 6889
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.02.21 22:31. Заголовок: Можно ли на объекте ..


Можно ли на объекте BUTTONEX сделать отключение показа окантовки кнопки внизу/вверху/справа/слева ?
Очень удобно при совмещении кнопки и FRAME сделать объект единым, т.е. совмещать два объекта.

В коде примерно так:
@ nR, nC BUTTONEX Button_11 CAPTION "Page (1)" WIDTH nWBth HEIGHT nHBth ;
PARENT &cForm FONTCOLOR BLACK BACKCOLOR aColors[1] FONT cFname SIZE nFSize BOLD ;
SETBORDER {.T.,.T.,.T.,.F.} FLAT NOXPSTYLE ACTION {|| myAction(1), myFocus() }

Да и для LABEL тоже бы такое хотелось бы.

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




Пост N: 6892
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.02.21 19:54. Заголовок: Можно ли при старте ..


Можно ли при старте MAIN окна сделать запуск отдельной формы (с наворотами) в отдельном потоке ?
Этот поток должен существовать до конца закрытия программы.
И как тогда обращаться к этой форме в другом потоке (вывод на форму) ?

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




Пост N: 3570
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.02.21 20:19. Заголовок: Andrey пишет Можно л..


Andrey пишет
 цитата:
Можно ли при старте MAIN окна сделать запуск отдельной формы (с наворотами) в отдельном потоке ?


А.Кресин (http://www.kresin.ru/hrbfaq_3.html#Doc11)
 цитата:
Отдельные Public и Private переменные могут передаваться потоку при его создании ...
Поэтому в тех случаях, когда потоки используют какие-либо общие ресурсы ( чаще всего - переменные ), необходимы средства синхронизации работы потоков, чтобы они не обращались к общим ресурсам одновременно. Такими средствами являются семафоры и одна из их разновидностей - mutex ...


Учитывая что _HMG_SYSDATA это глобальный массив с ~ _HMG_SYSDATA\[455] (_HMG_aFormNames, _HMG_aFormHandles, ...) элементами, то совместный доступ организовать будет не возможно, учитывая, что обработчик всего общая ф-я Events(...). Забудь.
Запускай свою же прогу повторно с др. параметрами при первом старте и общайся между ними по потребностям

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




Пост N: 6893
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.02.21 22:16. Заголовок: SergKis пишет: Запу..


SergKis пишет:

 цитата:
Запускай свою же прогу повторно с др. параметрами при первом старте и общайся между ними по потребностям


Да уже ехе-ник перевалил за 25 Мб.
Лучше уж новый сделать на 3-4 Мб.

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




Пост N: 6894
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 27.02.21 17:11. Заголовок: Как в МиниГуи сделат..


Как в МиниГуи сделать скрин всего экрана в файл?

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




Пост N: 7285
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.02.21 18:44. Заголовок: \MiniGUI\SAM..


\MiniGUI\SAMPLES\Applications\ScreenshotMaker\

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




Пост N: 6895
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 27.02.21 23:22. Заголовок: Спасибо ! :sm36:..


Спасибо !

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




Пост N: 6928
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 02.04.21 18:08. Заголовок: А есть возможность в..


А есть возможность в МиниГуи цеплять большие курсоры для мышки ?
А то при выборе в ТСБ записи медленно окно карточки прорисовывается, пока построит всё объекты на окне,
юзер давит на кнопку или мышкой затыкивает запись в ТСБ.
Нужно показать немедленную реакцию программы - типа большие часики показать
и юзер увидит реакцию проги и не будет нервничать.
У кого есть большие курсоры для мышки и как это сделать для МиниГуи ?

P.S. Нашёл в инете только ОДИН большой курсор Circle.ani - 350 кб, добавил в пример
MiniGUI\SAMPLES\BASIC\CURSOR_2 заработал, а вот собираться в ехе-ник этот курсор не хочет.
Выдаёт ошибку:
Borland Resource Compiler  Version 5.40 
Copyright (c) 1990, 1999 Inprise Corporation. All rights reserved.
Error MyCurcor.rc 2 45: Invalid cursor format
hbmk2[5Tbrw_table_2]: Error: Running resource compiler. 20018
Ошибку выдаёт и на других курсорах:
HMG.cur
Working in Background.ani
Почему ?

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




Пост N: 3693
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.04.21 21:39. Заголовок: Andrey пишет Выдаёт ..


Andrey пишет
 цитата:
Выдаёт ошибку:


У меня выдает DEMO.RC (61) : error RC2175 : resource file .\Cursors\Circle.ani is not in 3.00 format

 цитата:
Ошибка компилятора ресурсов RC2175 имя файла ресурсного файла не в формате 3.00

Указанный ресурс использовал формат более ранней, чем версия 3.00. Файл ресурсов должен быть преобразован или воссоздан с использованием формата версии 3.00 или новее.



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




Пост N: 6929
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.04.21 17:16. Заголовок: Вопрос возник опять ..


Вопрос возник опять по окнам.
Есть окно модал1, далее строю модал2 с ТСБ.
В ячейки таблицы вызываю редактирование - окно модал3.
Иногда у заказчика (да и я сам один раз словил) идёт переключение сразу на модал1.

Нашёл алгоритм, который роняет прогу:
Колёсико мышки в ТСБ вверх/вниз, выхожу обратно на модал2 и после закрытия редактирования ячейки
(модал3 закрывается) - идёт переключение на модал1 и становиться АКТИВНЫМ !!!
Т.е. окно модал2 под ним и переключиться на него НЕ МОГУ !
Почему ?
Как это исправить ?

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




Пост N: 3704
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.04.21 17:50. Заголовок: Andrey пишет Т.е. ок..


Andrey пишет
 цитата:
Т.е. окно модал2 под ним и переключиться на него НЕ МОГУ !


Похожая картина происходит в MDI окнах, если их 3-и и больше и на тек. окне ввод в GETBOX, то по завершении ввода фокус улетает на окно mdi child другое (точно уже не помню, но кажется первое) и все там и сидит. Где то управление окнами в h_events.prg подрабатывает. Определить не смог.

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




Пост N: 6930
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.04.21 18:29. Заголовок: Понял тебя. :sm36: ..


Понял тебя.
Благо это в одном месте, переделал на контекстное меню.
Пропала ошибка...

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




Пост N: 3705
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.04.21 18:44. Заголовок: Andrey пишет Благо э..


Andrey пишет
 цитата:
Благо это в одном месте, переделал на контекстное меню.


Если есть потребность 3-го окна, то надо убирать 2-е и вместо него делать, типа, 3-е, отработать и убрав 3-е, пересоздать 2-е, учитывая данные с 3-го. В MDI тек. hmg (так пробовал делать и не было перескоков фокуса).

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



Пост N: 157
Зарегистрирован: 12.07.06
ссылка на сообщение  Отправлено: 01.05.21 08:18. Заголовок: Наткнулся на баг!


Пример со строчным курсором:
MiniGUI\SAMPLES\Advanced\Tsb_linedrag

Для решения задачи все ячейки делаются редактируемыми
...
// prepare for showing of Double cursor
AEval( oBrw:aColumns, {| oCol | oCol:lFixLite := oCol:lEdit := TRUE } )
...
и хотя для предотвращения входа в редактирование я устанавливал в описании столбца
PREEDIT {|| .F.}
это не спасает от ошибочного входа в редактирование первого столбца
Пользователь зачастую не глядя редактирует быстро колонки и ИНОГДА
кусок введеных данных оказывается введен параллельно и в первую колонку TSBrowse.
Вышел из этой ситуации таким образом:
DATA FieldWBlock('ls', Select('sity')) --> DATA str(sity->ls,6,0)

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




Пост N: 3721
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.05.21 08:42. Заголовок: alex_II пишет Вышел ..


alex_II пишет
 цитата:
Вышел из этой ситуации таким образом:
DATA FieldWBlock('ls', Select('sity')) --> DATA str(sity->ls,6,0)


Возможно, так удобнее было бы
 
:lInsertMode := .T.

:nFreeze := 1
:lLockFreeze := .T.
:nCell := 2

END TBROWSE

Не используемая в Edit 1-ая колонка не попадала в фокус, отпадают лишние движения

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




Пост N: 3722
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.05.21 09:10. Заголовок: PS Если фокус на 1-о..


PS
Если фокус на 1-ой колонке надо иметь, то проще поступать так
 
LoadFields( "oBrw", "Form_0", .T., aField )

oBrw:GetColumn(1):lEdit := .F.
и убрать строку
AEval( oBrw:aColumns, {| oCol | oCol:lFixLite := oCol:lEdit := TRUE } )

если у вас создание колонок из ini, то и установку :lEdit надо делать из ini
oBrw:GetColumn( "F1" ):lEdit := "T" $ hIni[ "F1" ][ "Edit" ]
oBrw:GetColumn( "F2" ):lEdit := "T" $ hIni[ "F2" ][ "Edit" ]
oBrw:GetColumn( "F3" ):lEdit := "T" $ hIni[ "F3" ][ "Edit" ]
oBrw:GetColumn( "F4" ):lEdit := "T" $ hIni[ "F4" ][ "Edit" ]
добавив
FOR n := 1 TO TEST->( FCount() )
hIni[ aField[ n ] ] := hb_Hash()
hIni[ aField[ n ] ][ "Position" ] := hb_ntos( n )
hIni[ aField[ n ] ][ "Width" ] := hb_ntos( 100 )
hIni[ aField[ n ] ][ "Heading" ] := aField[ n ]
hIni[ aField[ n ] ][ "Edit" ] := iif( aField[ n ] == "F2", ".F.", ".T." )
NEXT


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




Пост N: 3723
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.05.21 09:14. Заголовок: PS2 и убрать в стро..


PS2
и убрать в строке
AEval( oBrw:aColumns, {| oCol | oCol:lFixLite := oCol:lEdit := TRUE } )

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




Пост N: 7078
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.09.21 19:24. Заголовок: Блин, опять забыл ка..


Блин, опять забыл как сделать передачу параметров для запуска программы.
Программа запускается так: import.exe "блабла" 2021 "ок"
А как сделать этот параметр в файле import.hbp ?
Т.е. чтобы запускать на компиляцию hbmk2.bat import.hbp и после сборки предавалась эта командная строка - "блабла" 2021 "ок"

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




Пост N: 7457
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.09.21 19:43. Заголовок: Andrey пишет: Блин,..


Andrey пишет:

 цитата:
Блин, опять забыл


Андрей у врача давно был ?
Склероз явно прогрессирует

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




Пост N: 1775
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 28.09.21 22:37. Заголовок: Andrey пишет: Т.е. ..


Andrey пишет:

 цитата:
Т.е. чтобы запускать на компиляцию hbmk2.bat import.hbp и после сборки предавалась эта командная строка - "блабла" 2021 "ок"



http://clipper.borda.ru/?1-4-1632858128412-00000886-000-10001-0#010.001

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




Пост N: 7079
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.09.21 00:13. Заголовок: А что поделать, памя..


А что поделать, памяти после ковида вообще нет.
Год назад об этом спрашивал оказывается, забыл.
На форуме в поиске задавал ключ поиска -run и выдало 0 страниц. Поиск на форуме вообще не фурычит.

Haz пишет:

 цитата:
2) читаем справку , там есть -runflag=<f> pass single flag to output executable when -run option is used


Пробовал этот ключ, что то не пошёл он у меня.
Задаю так:
-runflag="/PLATAIMPORT" "2021" "20" "Оператор 20" 

Выдаёт вот это:
Harbour 3.2.0dev (r2104281802) 
Copyright (c) 1999-2021, https://harbour.github.io/
Cannot open 2021.prg, assumed external
No code generated.
hbmk2[opl_import]: Error: Running Harbour compiler (built-in). 1

Если кавычки убрать, то всё равно такая же ошибка.

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




Пост N: 3907
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.09.21 01:58. Заголовок: Andrey Не мучай пар..


Andrey
Не мучай параметры, создавай ini с параметрами и читай их, без ограничений в кол-ве и качестве

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




Пост N: 7080
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.09.21 08:36. Заголовок: SergKis пишет: Не м..


SergKis пишет:

 цитата:
Не мучай параметры, создавай ini с параметрами и читай их, без ограничений в кол-ве и качестве


Да у меня отдельная задача запускается через командную строку.
Вот для неё и хотел сделать.

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




Пост N: 1776
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 29.09.21 10:30. Заголовок: Andrey пишет: Пробо..


Andrey пишет:

 цитата:
Пробовал этот ключ, что то не пошёл он у меня.


Там же написано single flag . т.е. один параметр одной строкой.
Убери все пробелы и кавычки ( они точно не нужны т.к. через командную строку передаются только строки)
В программе распарсишь полученную строку на нужные составляюшие

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




Пост N: 3908
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.09.21 11:38. Заголовок: Andrey пишет Да у ме..


Andrey пишет
 цитата:
Да у меня отдельная задача запускается через командную строку.


Тем более. Будешь в link прописывать или Haz пишет
 цитата:
распарсишь полученную строку на нужные составляюшие


Ini удобнее. Тот пример, что у тебя есть demo5, там только одна строка и парсить ничего не надо

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




Пост N: 7081
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.09.21 11:47. Заголовок: Haz пишет: Там же н..


Haz пишет:

 цитата:
Там же написано single flag . т.е. один параметр одной строкой.


Спасибо !
Блин, год назад делал так же, нашёл у себя.
Да уж, памяти совсем нет...

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




Пост N: 3909
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.09.21 11:56. Заголовок: Пример demo5.prg /*..


Пример demo5.prg Скрытый текст

ini к нему demo5-utf8.ini (utf8 с BOM) Скрытый текст


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




Пост N: 3910
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.09.21 14:44. Заголовок: Пример demo4.prg (бо..


Пример demo4.prg (более простой вариант работы с ini) Скрытый текст


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




Пост N: 1777
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 29.09.21 21:29. Заголовок: SergKis пишет: чита..


SergKis пишет:

 цитата:
читай их, без ограничений в кол-ве и качестве

кроме как приведение типов.
Давно перешел на json. Вот где без ограничений, да и hash гонится элементарно.

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




Пост N: 3911
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.09.21 22:44. Заголовок: Haz пишет Вот где бе..


Haz пишет
 цитата:
Вот где без ограничений


Формат даты в json не понимается никак, имеется ввиду обратно, только конкретное имя, типа dMyDate, по первому символу, да и не встроен json в hb как продолжение языка, синтаксис (hb_H... ф-ии не совсем то в процессе работы, по мне+с xhb это "две большие разницы"). В demo5 все по типам туда и обратно + встроились в hb, как объект, но ... удобно, если работаешь с объектами. Запись для команд hmg для работы (препроцессор) и запись работы с oHmgData() (oIniData()) практически идентичны, т.е. Form_1.Btn_01.Value и oIni:RU:Btn_01 и т.д. ...


 цитата:
hash гонится элементарно.


Если много hash - это как с alias(), работать
DbSelectArea(...) и работать (cAls := alias(), ..., (cAls)->.... защита данных по алиасу), или с hash всегда "правильно" иметь нужный hash (имя переменной правильно, не ошибившись таскать с собой) hb_HGet(<hHash>, .....), или объект, где все на hash внутри и оперируешь только переменной объекта

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




Пост N: 1778
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 29.09.21 23:25. Заголовок: SergKis пишет: Форм..


SergKis пишет:

 цитата:
Формат даты в json не понимается никак, имеется ввиду обратно,

не приходилось пока использовать формат даты, не проверял, верю.
При старте программы считываю локальные настройки пользователя из папки его профиля. К примеру видимости и порядок колонок бровсов, ширину этих колонок, цветовые настройки и пр.
Раньше писал в INI, каких только изввратов не придумал. Бровсов много, параметров бровсов много в INI реализация вложенности на нуле.. А если еще и шифровать, так вообще пляски иначе продвинутые юзера туда лезли. Перешел на json и выдохнул., все структуры данных разложены как надо, вложенность и ветвления без ограничений. От дурака защита реализуется легко. В общем каждому своё 👍

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




Пост N: 3912
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.09.21 23:33. Заголовок: Haz пишет Бровсов мн..


Haz пишет
 цитата:
Бровсов много, параметров бровсов много в INI реализация вложенности на нуле..


Не соглашусь, т.к. еще со времен VO вариант ini для реализации окон и контролов работает на ура
 
[MAIN]
Start = Form_1
...
[Form_1]
Control_1 = [Label_1]
Control_2 = [GetBox_1]
Control_3 = [Browse_1]
...
[Label_1]
Row = ..
Col = ...
Width = ...
Height = ...
Value = ...
...
[GetBox_1]
....
[Browse_1]
...

дерево строится практически как в xml
Если исп. механизм LayOut (авто компоновка контролов на окне), то еще проще
[MAIN]
...
[Form_1]
01 = [Label_1], [GetBox_1]
02 = [Label_2], [GetBox_3], [Label_3], [GetBox_4]
...
NN = [Browse_1]
...

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




Пост N: 1779
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 29.09.21 23:55. Заголовок: SergKis пишет: дере..


SergKis пишет:

 цитата:
дерево строится практически как в xml

в том и дело , что нет желания строительством занимается.. Тут собрал структуру в хеш, и выплюнул в джсон и все. Обратно так же. С alias() работать для меня не вариант, база в ads на словарях, все под SQL. Сторонние таблицы явно проигрывают в удобстве хранения данных , так как требуют унификации полей. Мне в работе json проще и понятнее чем XML, компактнее , современнее и универсальное. Более торо , обмен в этом формате между разными системами реализуется проще, хоть через диск, хоть через порт , хоть через pipe и пр. Плюс для работы внешних редакторов полно любых.
Так что не убедил 😎.
Просто для себя взял стандартом. Конфигурации храню в json, обмен с 1с в json, коммуникации с Битрикс в json. Даже выгрузку из конструкторского по в кривом CSV , сначала гоню в json ( hash) а потом только разбираю.
В общем дело привычки 🧐

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




Пост N: 1780
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 30.09.21 00:00. Заголовок: SergKis пишет: Не с..


SergKis пишет:

 цитата:
Не соглашусь, т.к. еще со времен VO вариант ini для реализации окон и контролов работает на ура

работает, но в json это проще делать тк вложенность ключей прямая а не косвенная

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




Пост N: 3913
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.09.21 00:10. Заголовок: Haz пишет Так что не..


Haz пишет
 цитата:
Так что не убедил


Особо не собираюсь, но ~ 20 справочников (до 20 строк, которые практически не меняются, типа пол: мужской, женский) подчитанных в 20 hash переменных и потом работа с ними и работа с 20 переменными объектов-контейнеров ... , она практически одинакова, только тебе надо оперировать hb_HSet\GetDef(<имя спр.>, ...), а мне <имя спр.>:имя ключа, т.е. мнемоника, или <имя спр.>:Get\Set(...), если это работа с html и js, то вариантов нет, json и при обратной обработке, дата - это проблема, т.е. полная привязка к именам json, не факт, что это совпадает с полями dbf-базы, т.е. строим какие то перекодировки.

 цитата:
В общем дело привычки


Это да, привычки в нашей жизни, РУЛЯТ. Мы как собаки Павлова, к чему привыкли, так и делаем,в др. случаях надо напрягаться, организм сопротивляется

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




Пост N: 3914
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.09.21 00:29. Заголовок: PS Разговор, вообще ..


PS
Разговор, вообще то шел о параметрах для программы, т.е.

 цитата:
Там же написано single flag . т.е. один параметр одной строкой.


На мой взгляд, параметры для программы проще передать, через ini, чем строкой, которую потом надо парсить. Т.е. для прогр. создаем ini (руками или программой не важно) и в запускаемой программе обрабатываем. Сделать
Local oIni := oIniRead( ".\Start.ini", .T. ):COM
? oIni:nMode, oIni:...
проще, чем что то другое, даже, если этого ini нет

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




Пост N: 3915
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.09.21 00:52. Заголовок: Тут собрал структуру..


Haz пишет
 цитата:
Тут собрал структуру в хеш, и выплюнул в джсон и все


Тут, немного ты, скрыл алгоритм, для вложенных jcon, как секции в ini, т.е. надо построить примерно (как в demo4, в demo5 это скрыто внутри) такое по hash Скрытый текст

в примере это подается в объект, но можно подать это и json, перебрав секции и превратив ее в json, в целом, "хрен редьки не слаще", вопрос для каких целей делаем.
Наглядности в сравнении с json5, json (hb ф-ии) мало дает, делая ключи в кавычках и как не крути json в hb слабоват, на мой взгляд, т.е. json в js (html) уже практически отсутствует, применяется json5, т.е. к тебе приходят данные в json5 их надо превратить в hash

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




Пост N: 1781
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 30.09.21 08:45. Заголовок: SergKis пишет: Тут,..


SergKis пишет:

 цитата:
Тут, немного ты, скрыл алгоритм, для вложенных jcon


Да , утаил. Но он элементарный. Json5 проблем и пока не доставлял. Плюс автоматом экранирует служебные символы. К примеру заголовок с разделителями CRLF не нужно обрабатывать перед чтением или записью. Пользую давно, функционала хватает. И главное, как уже писал, могу сохранить на диск и 1С 7.7 спокойно эта прочтет и разберет своими штатными средствами (компонент под json полно). С навороченным INI в 1С придется попотеть, тк. нет там никаких объектов и oKeyData и логику разбора из харбур не перенести. Зачем мне две одинаковые по смыслу сущности , одну из которых
не поднять в 1С ? Обмен с 1С через dbf только с виду прост, на деле проблем множество и тут пока только текстом через диск. Порт слушать 1С 7.7 не умеет, сообщения окну обрабатывать не чем, остается только pipe , а это тот же файловый обмен. Зато спасибо микрософту , элементарно из 1С шлется json в порт программы приемника. Вот и пришел к выводу, что мне удобнее json т.к он везде поддерживается и везде одинаков.

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




Пост N: 1782
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 30.09.21 10:07. Заголовок: SergKis пишет: На м..


SergKis пишет:

 цитата:
На мой взгляд, параметры для программы проще передать, через ini, чем строкой, которую потом надо парсить. Т.е. для прогр. создаем ini (руками или программой не важно) и в запускаемой программе обрабатываем


тогда уж проще прям в коде забить. Хотя соглашусь, параметром может быть файл, где все разложено. так проще но не нужно. Андрею при отладке лень каждый раз эти параметры руками бить. Иначе при чем тут .hbp ? поэтому проще всего в коде

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




Пост N: 3916
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.09.21 10:07. Заголовок: Игорь, мы немного о ..


Игорь, мы немного о разном.
Ты об обмене данными со сторонними программами (тут от их правил не отпрыгнешь), а я о внутреннем употреблении в prg hmg с учетом языковых данных. 1C с 8-ой версии стала unicode, вроде, да и у вас редко стоит вопрос разных языковых текстов в prg (для Gui). А у нас язык на 1-м месте, Формы для России, ЕС, Латвии разные + тексты языковые к ним (клиент сам может правильно править перевод), так что приходится организовывать хранилища и ini простой и удобный вариант

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




Пост N: 1783
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 30.09.21 10:15. Заголовок: SergKis пишет: мы н..


SergKis пишет:

 цитата:
мы немного о разном.


Сергей, конечно о разном. Базовая реализация INI просто убогая. Твой пример погоняю раньше не натыкался на него и такую реализацию INI. Да, для ситуации когда

 цитата:
(клиент сам может правильно править перевод)

от незаменим.

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




Пост N: 3917
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.09.21 10:35. Заголовок: Haz пишет Андрею при..


Haz пишет
 цитата:
Андрею при отладке лень каждый раз эти параметры руками бить. Иначе при чем тут .hbp ?


Как он написал параметры (назначение), то это 1-текст, 2-режим базы, 3-текст кнопки "ok"
т.е. все может быть разным, в hbp он меняя набирает и отлаживает режимы prg, потом будет для них запуск ShellExecute с кнопок и меню, т.е. вид параметров my.exe {"bla bla bla",2021,"ok"} и потом внутри aParam := &cParam

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




Пост N: 7082
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.09.21 14:17. Заголовок: Сделайте пожалуйста ..


Сделайте пожалуйста пример на jcon в библиотеку МиниГуи !
Хотя я его 2-3 раза всего использовал, мне он не понравился, может и не распробовал.

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




Пост N: 3918
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.09.21 14:47. Заголовок: Andrey пишет Сделайт..


Andrey пишет
 цитата:
Сделайте пожалуйста пример на jcon в библиотеку МиниГуи !


Поищи в SAMPLES "json"
Нашел у себя еще и пример от 01.08.2020 на твоем массиве Скрытый текст


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




Пост N: 7083
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.09.21 18:44. Заголовок: SergKis пишет: Наше..


SergKis пишет:

 цитата:
Нашел у себя еще и пример от 01.08.2020 на твоем массиве


Это простой слишком пример. И только у меня. Это до ковида своего делал ещё.

По поиску в библиотеке 3 примера всего, и непонятные.

Что-нибудь интересней нужно в качестве примера.

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




Пост N: 1784
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 30.09.21 22:13. Заголовок: Andrey пишет: Это п..


Andrey пишет:

 цитата:
Это простой слишком пример


А что там может быть сложно?
json строка это строковое соответствие хэш массива. Функции хеш в json и обратно есть в базе.
Смысл примера непонятен.

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




Пост N: 7095
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.10.21 20:02. Заголовок: Можно ли заблокирова..


У меня 4 окна с таблицами WINDOWTYPE STANDARD которые можно открыть поочерёдно на экране.
С каждой таблицы можно открыть ТОЛЬКО одну карточку - окно MODAL, это чтобы юзер не запутался ещё и в карточках.

Можно ли заблокировать переключение на другие окна из MODAL окна.
Т.е. если юзер открыл окно, то пока не закроет его, то пусть в нём и СИДИТ !!!
А то если открыты другие таблицы, юзер пытается туда переключаться без закрытия окна предыдущей карточки.
И переключается текущий алиас базы.
Можно эти переключения на другие таблицы, как то блокировать ?
Или заменять после переключения на таблицу от которой открыта карточка ?
Предупреждение можно вывести в этот момент, типа закройте карточку, а потом переключайтесь на другую таблицу ?

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




Пост N: 7554
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.09.23 13:17. Заголовок: Нашёл пример SAMPLES..


Нашёл пример SAMPLES\Advanced\AESDEMO - MiniGUI-23.09
Не собирается... Выдаёт ошибку:
Harbour 3.2.0dev (r2307062207) 
Copyright (c) 1999-2023, https://harbour.github.io/
D:\TEMP\hbmk_9mjo9p.dir\aesdemo.c:
D:\TEMP\hbmk_iqc6dr.c:
Turbo Incremental Link 5.69 Copyright (c) 1997-2005 Borland
Error: Unresolved external '_HB_FUN_ENCRYPTFILEAES' referenced from D:\TEMP\HBMK_9MJO9P.DIR\AESDEMO.OBJ
Error: Unresolved external '_HB_FUN_DECRYPTFILEAES' referenced from D:\TEMP\HBMK_9MJO9P.DIR\AESDEMO.OBJ
hbmk2[aesdemo]: Error: Running linker. 2

Что нужно добавить ?
Есть ли ещё в МиниГуи функции шифрования/дешифрования файлов и строк ?

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




Пост N: 7811
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 18.09.23 13:54. Заголовок: MiniGUI-23.09 MiniGU..


MiniGUI-23.09 MiniGUI-23.07
Собирается норм

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




Пост N: 7555
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.09.23 14:34. Заголовок: Собирал так: c:\..


Собирал так:
c:\MiniGui-23.09\batch\hbmk2.bat aesdemo.hbp
из за этого и выдавало ошибку.
Добавил в aesdemo.hbp строку -lhbaes и всё собралось !
Спасибо Dima

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




Пост N: 7812
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 18.09.23 15:08. Заголовок: https://i.postimg.cc..




LOL

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




Пост N: 7556
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.09.23 16:16. Заголовок: Ну и что из этого ? ..


Ну и что из этого ?
Забыл что раньше делал, памяти после ковида нет совсем...
Не доделал тогда тот пример у себя, заново сейчас до него руки дошли.

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




Пост N: 4397
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.09.23 14:38. Заголовок: Пример TrayBalloon с..


Пример TrayBalloon с SET OOP ON тут https://TransFiles.ru/2b4pa
Если кому интересно это

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




Пост N: 7557
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 19.09.23 23:20. Заголовок: Пытался из этого при..


Пытался из этого примера перенести в другой модуль, где весь С-код util_c_code.prg:
/* 
* C-level
*/
#pragma BEGINDUMP

Не получается. Потом не собирается util_c_code.prg, выдаёт ошибку:
 
Harbour 3.2.0dev (r2307062207)
Copyright (c) 1999-2023, https://harbour.github.io/
OBJ\util_c_code.c:
Warning W8017 util_c_code.prg 94: Redefinition of '_WIN32_IE' is not identical
Warning W8017 util_c_code.prg 95: Redefinition of '_WIN32_WINNT' is not identical
Error E2451 util_c_code.prg 110: Undefined symbol 'NOTIFYICONDATA' in function ShowNotifyInfo
Error E2379 util_c_code.prg 110: Statement missing ; in function ShowNotifyInfo
Error E2451 util_c_code.prg 112: Undefined symbol 'nid' in function ShowNotifyInfo
Error E2109 util_c_code.prg 112: Not an allowed type in function ShowNotifyInfo
Error E2109 util_c_code.prg 114: Not an allowed type in function ShowNotifyInfo
Error E2451 util_c_code.prg 118: Undefined symbol 'NIF_INFO' in function ShowNotifyInfo
Error E2451 util_c_code.prg 126: Undefined symbol 'NIM_ADD' in function ShowNotifyInfo
Warning W8065 util_c_code.prg 126: Call to function 'Shell_NotifyIcon' with no prototype in function ShowNotifyInfo
Error E2451 util_c_code.prg 128: Undefined symbol 'NIM_DELETE' in function ShowNotifyInfo
Warning W8065 util_c_code.prg 128: Call to function 'Shell_NotifyIcon' with no prototype in function ShowNotifyInfo
Warning W8057 util_c_code.prg 132: Parameter 'hWnd' is never used in function ShowNotifyInfo
*** 8 errors in Compile ***
hbmk2[Demo]: Error: Running C/C++ compiler. 1

Как можно это решить (перенести в отдельный модуль) ?

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





Пост N: 91
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 23.09.23 06:16. Заголовок: Пример TrayBalloon с..



 цитата:
Пример TrayBalloon с SET OOP ON тут https://TransFiles.ru/2b4pa
Если кому интересно это



Сережа, файлика нет, обнови пожалуйста .....

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




Пост N: 4401
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.09.23 12:12. Заголовок: Не могу. Без компьют..


Не могу. Без компьютера. Только на телефоне. Может кто-нибудь выложит.

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




Пост N: 7567
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.09.23 12:28. Заголовок: Вот этот пример - ht..


Вот этот пример - https://cloud.mail.ru/public/KMmF/LqQp2UDHW

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




Пост N: 4403
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.09.23 20:49. Заголовок: Alex_Cher Собрал не..


Alex_Cher
Собрал немного модифицированный пример, с иконками, тут https://TransFiles.ru/6wfob

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




Пост N: 7577
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.09.23 03:21. Заголовок: SergKis пишет: Собр..


SergKis пишет:

 цитата:
Собрал немного модифицированный пример, с иконками, тут


Тестировал пример, работает и на Win7 !
В примере надо бы исправить IF IsWinNT() на Win7 и выше...

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




Пост N: 7592
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.10.23 11:49. Заголовок: Григорий, что мне де..


Григорий, что мне делать ?
Собираю свою большую прогу MiniGui 23.09.2
Перетасовал свой main.prg
Теперь после запуска прога падает с ошибкой:
Error BASE/1004  Message not found: TWNDDATA:EVENT 
Args:
[1] = O TWNDDATA
Called from __ERRRT_SBASE(0)
Called from TWNDDATA:ERROR(0)
Called from (b)HBOBJECT(0)
Called from TWNDDATA:MSGNOTFOUND(0)
Called from TWNDDATA:EVENT(0)
Called from MAIN(178) in module: Source\main.prg

Вот код:
 
? ProcNL(), Repl("*",10) + " DEFINE WINDOW " + Repl("*",10), "Set_bEvents('MyEventsHandler')"
DoEvents()
Set_bEvents( {|hH,nM,wP,lP| MyEventsHandler(hH,nM,wP,lP) } ) // блок кода обработчика событий программы

DEFINE WINDOW Form_Main ;
AT 0,0 WIDTH 640 HEIGHT 480 ;
TITLE cTitle ICON cIcon ;
MAIN NOSHOW ;
NOMAXIMIZE NOSIZE NOCAPTION ;
ON INIT {|| DoEvents(), _wPost(0) } ;
ON RELEASE {|| _LogFile(.T., CRLF + ">>> STOP <<< " + HMG_TimeMS(App.Cargo:tStart) ) } ;
ON INTERACTIVECLOSE {|| IIF( lStaticErrorClose, MyExit(), Nil ) }

? ProcNL(), Repl("*",10) + " DEFINE WINDOW " + Repl("*",10), "после"
...
o := This.Object
o:Event( 0, {|ow| // запуск при инициализации окна
Local hWnd, cWnd
hWnd := ow:Handle
cWnd := ow:Name
? REPL(".", 90 )
? SPACE(5) + ":Event(0)", ProcNL(), hWnd, IsIconic( hWnd ), cWnd, _HMG_MainHandle
myInitForm()
DO EVENTS
_wSend(1, ow) // запуск события 1
DO EVENTS
_wSend(2, ow) // запуск события 2
DO EVENTS
_wPost(3, ow) // запуск события 3
Return Nil
}) // <<<<<<------------- строка 178


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




Пост N: 7598
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.10.23 22:15. Заголовок: Есть такой рабочий к..


Есть такой рабочий код для проверки ранее запущенной программы.
/* 
* Проверка запуска программы на ВТОРУЮ копию программы
* Check the start of the program on the second copy of the program
*/
FUNCTION OnlyOneInstance( cAppTitle )

LOCAL hWnd := FindWindowEx( ,,, cAppTitle )

IF hWnd # 0
iif( IsIconic( hWnd ), _Restore( hWnd ), SetForeGroundWindow( hWnd ) )
ExitProcess( 0 )
ENDIF

RETURN NIL

Код отлично работает с 2013 года, но есть подвох.
Если MAIN окно сделать HIDE, то код перестаёт работать.
Как это исправить, если MAIN окно всегда HIDE ?

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


Пост N: 1685
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 26.10.23 09:34. Заголовок: Andrey пишет: ... ..


Andrey пишет:

 цитата:

...
LOCAL hWnd := FindWindowEx( ,,, cAppTitle )
...
Как это исправить, если MAIN окно всегда HIDE ?


В интернетах пишут, что можно найти в хэндлу дочернего окна. Это - второй параметр этой функции.

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




Пост N: 7847
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.10.23 14:35. Заголовок: Andrey пишет: Прове..


Andrey пишет:

 цитата:
Проверка запуска программы на ВТОРУЮ копию программы


Для этого существует IsExeRunning

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




Пост N: 4439
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.10.23 14:55. Заголовок: Dima hWnd := FindWi..


Dima
hWnd := FindWindowEx( ,,, cAppTitle )
позволяет проверять наличие программы по Title main окна, т.е. один запуск с таким заголовком
IsExeRunning() - создает mutex, который проверяется на наличие, по default mutex такой
_HMG_IsMultiple := IsExeRunning ( StrTran( GetExeFileName (), '\', '_' ) )
но можно mutex строить от full имени ini + [секция], т.е. несколько запусков exe, но разные параметры,
например
 
PROCEDURE MAIN(cParam)
Local cMutex
Default cParam := "0"
cMutex := StrTran( GetExeFileName ()+"_"+cParam, '\', '_' )
_HMG_IsMultiple := IsExeRunning ( cMutex )
SET MULTIPLE QUIT WARNING
...


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




Пост N: 7848
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.10.23 15:31. Заголовок: Andrey а что кажет ..


Andrey
а что кажет IsWindowVisible(hwnd) если окно скрыто ?

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




Пост N: 7599
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.10.23 16:43. Заголовок: Dima пишет: а что к..


Dima пишет:

 цитата:
а что кажет IsWindowVisible(hwnd) если окно скрыто ?


   ? "   #### " + ProcNL(), cAppTitle, hWnd, IsWindowVisible(hWnd) 
Выдаёт в лог:
#### Call from: ONLYONEINSTANCE(27) --> main_misc.prg Template of the finished program on MiniGui 263598 .F.

Программа cAppTitle должна запускаться ТОЛЬКО ОДИН раз !
Повторные запуски из других каталогов - запретить !
Программа cAppTitle имеет всегда видимое окно Forma_MenuMain.
Нужно достучаться до второго окна допустим Forma_MenuMain.
И если уже ранее было запущено, то поднять нужно на передний план экрана.
Это можно как то сделать ?

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




Пост N: 7632
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.12.23 13:33. Заголовок: Фигня какая то при в..


Фигня какая то при выводе больших строк в AlertInfo():

Как это исправить ?

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




Пост N: 4467
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.12.23 14:10. Заголовок: Andrey Выведи весь ..


Andrey
Выведи весь список Label и увидишь, что они формируются по окну, т.е. длинные строки разбиваются на несколько Label, делай как надо сам, например так Скрытый текст


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




Пост N: 7633
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.12.23 14:19. Заголовок: Спасибо БОЛЬШОЕ ! :..


Спасибо БОЛЬШОЕ !

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




Пост N: 7635
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.12.23 22:24. Заголовок: Есть окно с POPUP ме..


Есть окно с POPUP меню. Что нужно поставить в ON INIT, чтобы при запуске это меню открывалось ?
   DEFINE WINDOW Win1 AT 0, 0 WIDTH System.DesktopWidth HEIGHT 90 ;  
TITLE PROGRAM MAIN ON INIT {|| Nil }

DEFINE MAIN MENU
DEFINE POPUP 'Menu examples'
MENUITEM 'Menu without icons' ACTION ...
MENUITEM 'Menu with icons' ACTION ...
Separator
MENUITEM 'Exit' ACTION Win1.Release()
END POPUP
END MENU

END WINDOW


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




Пост N: 7636
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.12.23 12:14. Заголовок: Пример \MiniGUI&..


Пример \MiniGUI\SAMPLES\BASIC\ButtonEx_3
Там есть команды:
  PICTALIGNMENT TOP  
PICTALIGNMENT LEFT
PICTALIGNMENT RIGHT
PICTALIGNMENT BOTTOM

А как можно задать такие команды после построения кнопки ?
Т.е. через SetProperty ( ххх, ххх, , )
Что-то в доке такого нет вообще...

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




Пост N: 2229
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 13.12.23 12:28. Заголовок: Andrey пишет: Приме..


Andrey пишет:

 цитата:
Пример \MiniGUI\SAMPLES\BASIC\ButtonEx_3
Там есть команды:
PICTALIGNMENT TOP
PICTALIGNMENT LEFT
PICTALIGNMENT RIGHT
PICTALIGNMENT BOTTOM


Эти команды предназначены только для совместимости с кодом официальной версии HMG.
Это было сделано для удобства миграции кода с HMG в МиниГуи.
Все подробности надо см. в файле minigui\include\i_hmgcompat.ch

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




Пост N: 7637
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.12.23 13:11. Заголовок: Понял. Надоело писат..


Понял.
Надоело писать много IF в коде с кнопками, например в APP_OOPTEMPLATE функция util_button.prg
Там сплошные IF....
Хотелось бы просто задавать свойства кнопки через SetProperty ( ххх, ххх, , ) или так This.&(cObj).Action := {|| .... }
Кстати ещё вопрос, а можно после построения кнопки задать MOUSEHOVER и MOUSELEAVE ?
            @ y, x  BUTTONEX &cObj  PARENT &cForm                                      ; 
...
FONT aFnt[1] SIZE aFnt[2] BOLD VERTICAL ;
ON MOUSEHOVER ( This.Backcolor := aBtnClr[2] , This.Fontcolor := aFntClr[2] ,;
This.Icon := LoadIconByName(aIcon[2],nSizeIcon,nSizeIcon) );
ON MOUSELEAVE ( This.Backcolor := aBtnClr[1] , This.Fontcolor := aFntClr[1] ,;
This.Icon := LoadIconByName(aIcon[1],nSizeIcon,nSizeIcon) );


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




Пост N: 2230
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 13.12.23 18:22. Заголовок: Andrey пишет: можн..


Andrey пишет:

 цитата:
можно после построения кнопки задать MOUSEHOVER и MOUSELEAVE ?


Да, это возможно в такой форме:

 цитата:

This.Btn_01.OnGotFocus := {|| DrawRR( RED ) }
This.Btn_01.OnLostFocus := {|| DrawRR( .F. ) }


Рабочий пример demo9.prg см. в папке \minigui\SAMPLES\Advanced\Tsb_Basic_3

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




Пост N: 7638
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.12.23 21:39. Заголовок: Спасибо БОЛЬШОЕ ! :..


Спасибо БОЛЬШОЕ !
Заработало у меня.
Ещё вопрос по кнопкам:
 @ ..  BUTTONEX &cObj ....                                      ; 
.....
IIF(lTextVert, VERTICAL, Nil) ; // так можно ?
IIF(lTextLeft, LEFTTEXT, Nil) ; // так можно ?
ON INIT {|| This.Cargo := nwPost } ;
.....

Попробовал, не компилируется....
Я вспомнил, что задавал этот вопрос, вы советовали использовать другой синтаксис этой команды.
Григорий, можно как то добавить свойства для этого - SetProperty ( ххх, ххх, , ) ?
Примерно такого нового синтаксиса:
   ICO_LEFT      0    
ICO_RIGHT 1
ICO_TOP 2
ICO_BOTTOM 3
....
SetProperty( ххх, ххх, "PICTALIGNMENT", ICO_LEFT )
или
This.&(cObj).PICTALIGNMENT := ICO_BOTTOM


Спасибо: 0 
ПрофильЦитата Ответить
Новых ответов нет , стр: 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 час. Хитов сегодня: 91
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет