Форум » GUI » Вопросы новичка [MiniGUI] » Ответить

Вопросы новичка [MiniGUI]

Dima: MAIN окно не получило фокус ввода при запуске , почему ? Пример самодостаточный. [pre2] #include "minigui.ch" REQUEST HB_CODEPAGE_RU1251, HB_CODEPAGE_RU866, HB_LANG_RUWIN REQUEST HB_LANG_RUWIN REQUEST HB_LANG_RU866 Func Main() DEFINE WINDOW Form_0 AT 321 , 491 WIDTH 558 HEIGHT 175 TITLE "Почему окно не в фокусе при запуске ?" ; MAIN NOSIZE NOSYSMENU TOPMOST ON INIT {|| MdiMain()} DEFINE BUTTONex Button_1 ROW 32 COL 424 WIDTH 110 HEIGHT 28 CAPTION "Вход" ACTION { || ret:=.t., DoMethod("Form_0","Hide") , DoMethod("Form_1","show") } FONTBOLD .t. END BUTTONex DEFINE BUTTONex Button_2 ROW 71 COL 424 CAPTION "Отмена" ACTION { || DoMethod("Form_0","Release") } WIDTH 110 HEIGHT 28 FONTBOLD .t. END BUTTONex END WINDOW Form_0.Activate Form_0.Setfocus return nil ***************************** Func Mdimain() DEFINE WINDOW Form_1 at 0,0 ; WIDTH 200 HEIGHT 300 TITLE "MDI windows" ; MDI ; NOSHOW END WINDOW Form_1.Center Form_1.Activate Form_0.Release return [/pre2]

Ответов - 250, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 All

Haz: mshep пишет: Это в смысле Dt = CTOD(Space(8)) типа? да примерно так , только я использовал CTOD("")

SergKis: mshep пишет назначение цвета фона, Bold'а и проч для ячейки в таблице Word по-новому? Посмотрите пример Advanced\Tsb_Export, там 2а пункта меню "Export" для Wordа

mshep: Haz пишет: да примерно так , только я использовал CTOD("") В те старые времена, когда я увидел Clipper, было принято писать так. И не думать лишнего...


Haz: mshep пишет: В те старые времена, когда я увидел Clipper Вот с тех времен так и пишу

mshep: Мы в разных котелках варились..... ((( У меня персоналки и клиппер - последняя лебединная песня после М33М,М32 (не путать категорически с предыдущим - абс разн система команд!!), АСВТ, ЕС, PDP, СМ1420(?), снова ЕС, персоналки+ЕС и потом своб поиск. В определенном возрасте какой-то штамп забивается в голову и потом его уже не выкурить... ((( А Tsb_Export из примеров у меня не пошел - что-то типа переполнения, отгуляю Благовещение и посмотрю.... Ох, доживете вы, ребята, до той поры, когда лень и в падлу что-то рассматривать и думать, у меня уже с десяток лет такое... (((

mshep: P.S.. Минск 22М конечно, клешни уже не попадают по фишкам... (((

Andrey: mshep пишет: Какой-нибудь добрый человек бросит еще дедешке назначение цвета фона, Bold'а и проч для ячейки в таблице Word по-новому? Вот ссылки по Ворду и Экселю http://hmgextended.com/applications.html

rvu: Dima пишет: Собственно идея взята тут C:\MiniGUI\SAMPLES\Advanced\IsExeRunning\demo.prg Вторую копию проги не запустить. Примера с таким названием уже нет, но неважно, я, наверное, нечто подобное использую, тоже из какого-то примера взял: hWnd := FindWindowEx( ,,, cAppTitle ) if hWnd # 0 iif( IsIconic( hWnd ), _Restore( hWnd ), SetForeGroundWindow( hWnd ) ) ExitProcess( 0 ) endif Но запустить много раз программу удается, обнаружилось это случайно. Таким путем: программу запускают из FARа, он активен, курсор стоит на программе. От компьютера отошли надолго. Его диск по неактивности отключился, потом пришли и нажали Enter много раз пока диск раскручивался. Получили много запущенных копий программ. Как я понял, они параллельно запускаются практически одновременно и обработка за этим не поспевает, при запуске у всех этих программ hWnd=0. Кто-нибудь с этим сталкивался, боролся? Готовые решения есть? Запускать процедуру, которая через пару секунд будет анализировать эти окна? Но этих процедур тогда тоже будет запущено столько же, сколько и окон. Я впал в задумчивость. На форуме проблема закрытия окон поднималась много раз, может быть, кто-то уже об этом думал?

Andrey: rvu пишет: Примера с таким названием уже нет, Есть, Григорий делал - C:\MiniGUI\SAMPLES\BASIC\SPLASHDEMO_3 В этом примере если есть такое окно, то оно поднимается на экран, а запускаемая новая прога завершается. Попробуй ещё вот такое в программе: [pre2] _HMG_MESSAGE[4] := "Попытка запуска второй копии программы:" + CRLF + ; App.ExeName + CRLF + ; "Отказано в запуске." + CRLF + _HMG_MESSAGE[4] SET MULTIPLE OFF WARNING [/pre2] Ставить сражу же после объявления переменных в MAIN, до вызова всех функций и открытия файлов !!!

rvu: Andrey пишет: В этом примере если есть такое окно, то оно поднимается на экран, а запускаемая новая прога завершается. Так и у меня то же самое. И я написал как это обойти. Сейчас посмотрю, как его программа отрабатывает этот момент.

Andrey: rvu пишет: Так и у меня то же самое. И я написал как это обойти. Я не смог это обойти. Попробуй пример Григория у себя. Я тоже много времени убил на это. Порядок вызовов функций очень важен ! Может у тебя в программе не так сделано.

SergKis: rvu пишет Примера с таким названием уже нет Есть SAMPLES\Applications\Reservation Но запустить много раз программу удается Надо получить ответ - можно ли запускать программу с разных каталогов (разные базы) ? - можно ли запускать программу с параметрами для выполнения ветки, к примеру ActiveX или еще какой режим (выполняя ShellExecute того же exe) Если все это надо, то хорошо исп. мутексы ( в примере вышеуказанном есть)/ К примеру берем полный ExeName, меняем в нем спец сиволы на "_", добавляем ключевые слова (к примеру имя ini или команда\режим) и делаем mutex как в примере. Что бы не засорятся сообщениями повторный запуск без сообщений, просто выход без анализов и поднятий окон (мне так нравится)

SergKis: PS Пример лога с мутексомб выделено цветом[pre2] 16.01.19 16:35:00. LetoStart has been started. C__BK8_LETODB_LETO2011_04_21_BIN_LETO2011 16.01.19 16:35:00: Leto DB Server has been started. 22.01.2019 08:48:16: Leto DB Server has been closed. 22.01.19 08:48:17. LetoStart has been closed. 23.01.19 08:34:15. LetoStart has been started. C__BK8_LETODB_LETO2011_04_21_BIN_LETO2011 23.01.19 08:34:15: Leto DB Server has been started. 05.02.19 09:47:00. LetoStart has been started. C__BK8_LETODB_LETO2011_04_21_BIN_LETO2011 05.02.19 09:47:00: Leto DB Server has been started. 12.02.2019 21:31:23: Leto DB Server has been closed. 12.02.19 21:31:24. LetoStart has been closed. 04.03.19 15:26:54. LetoStart has been started. C__BK8_LETODB_LETO2011_04_21_BIN_LETO2011 04.03.19 15:26:54: Leto DB Server has been started. 13.03.2019 18:21:35: Leto DB Server has been closed. 13.03.19 18:21:37. LetoStart has been closed. 03.04.19 12:57:59. LetoStart has been started. C__BK8_LETODB_LETO2011_04_21_BIN_LETO2011 03.04.19 12:57:59: Leto DB Server has been started. [/pre2]

rvu: Andrey пишет: _HMG_MESSAGE[4] := "Попытка запуска второй копии программы:" + CRLF + ; App.ExeName + CRLF + ; "Отказано в запуске." + CRLF + _HMG_MESSAGE[4] SET MULTIPLE OFF WARNING Вот это, похоже, помогло сразу. SergKis пишет: - можно ли запускать программу с разных каталогов (разные базы) ? - можно ли запускать программу с параметрами для выполнения ветки, к примеру ActiveX или еще какой режим (выполняя ShellExecute того же exe) Ни того, ни другого не надо.

rvu: Andrey пишет: _HMG_MESSAGE А вот, кстати, в разных информационных сообщения английский язык. Я могу, конечно, изменить h_init.prg, но в нем же предусмотрена и русская страница. REQUEST HB_LANG_RUWIN я в программу вписал, не помогло.

SergKis: rvu пишет А вот, кстати, в разных информационных сообщения английский язык Вроде рус. язык сообщения устанавливаются, сообщения из массивов на русском [pre2] PROCEDURE Main LOCAL y, x, w, s _LogFile(.T., 1, hb_UserLang()) // 1 ru-RU SET CODEPAGE TO RUSSIAN SET LANGUAGE TO RUSSIAN _LogFile(.T., 1, hb_UserLang()) // 1 ru-RU For s := 1 To len(_HMG_MESSAGE) _LogFile(.T., s, _HMG_MESSAGE[ s ]) Next For s := 1 To len(_HMG_BRWLangButton) _LogFile(.T., s, _HMG_BRWLangButton[ s ]) Next For s := 1 To len(_HMG_BRWLangError) _LogFile(.T., s, _HMG_BRWLangError[ s ]) Next _LogFile(.T., '_HMG_BRWLangMessage') For s := 1 To len(_HMG_BRWLangMessage) _LogFile(.T., s, _HMG_BRWLangMessage[ s ]) Next _LogFile(.T., '_HMG_aABMLangUser') For s := 1 To len(_HMG_aABMLangUser) _LogFile(.T., s, _HMG_aABMLangUser[ s ]) Next _LogFile(.T., '_HMG_aABMLangLabel') For s := 1 To len(_HMG_aABMLangLabel) _LogFile(.T., s, _HMG_aABMLangLabel[ s ]) Next _LogFile(.T., '_HMG_aABMLangButton') For s := 1 To len(_HMG_aABMLangButton) _LogFile(.T., s, _HMG_aABMLangButton[ s ]) Next ... и т.д. [/pre2]

rvu: SergKis пишет: SET CODEPAGE TO RUSSIAN SET LANGUAGE TO RUSSIAN Это уже помогло.

SergKis: rvu пишет Это уже помогло Если не помогло, то SET CODEPAGE TO RUSSIAN SET LANGUAGE TO RUSSIAN Init()

rvu: Andrey пишет: _HMG_MESSAGE[4] := "Попытка запуска второй копии программы:" + CRLF + ; App.ExeName + CRLF + ; "Отказано в запуске." + CRLF + _HMG_MESSAGE[4] Русский язык в сообщениях появился, но здесь title "Stop". Как здесь вызвать MsgStop со своими параметрами? Передать ему не только сообщение, но и title. Или, если возможно, вообще установить ему свой title по умолчанию. В файле h_msgbox.prg я этот title заменил, это несложно. Но просто интересно, может можно это сделать другим способом.

SergKis: rvu пишет может можно это сделать другим способом. По идее, надо бы добавить в языковый массив _HMG_MESSAGE [10] := 'Attention' _HMG_MESSAGE [11] := 'Information' _HMG_MESSAGE [12] := 'Stop' и применить в Msg...(), Hmg_Alert() или добавлять в своей проге, к примеру в Init2() тексты в массив, используя в своих же функциях, к примеру, MyMsg...(), как комплект на базе Msg...() и исп. их со значениями Default Title := ... из массива



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