Форум » GUI » Примеры из Минигуи -ошибки, вопросы..... (продолжение) » Ответить

Примеры из Минигуи -ошибки, вопросы..... (продолжение)

Andrey: Всем привет. Взялся смотреть примеры из МиниГуи, так не все работают. Может кто подскажет что там "допилить" нужно ? А заодно может и исправить и добавить новые.... Очень красочный пример: \MiniGUI\SAMPLES\Advanced\AVI_Animation - не работает под Win7 (наверно AVI-шки нет в ресурсах) Предложение Григорию: Можно ли добавить еще один пример с отдельным AVI-файлом в ресурсах проекта и показом такого же бегунка ? Пример: \MiniGUI\SAMPLES\Advanced\DisplayMode - не работает под ХР и далее.... Пример: \MiniGUI\SAMPLES\Advanced\Tsb_filter - вылетает на ХР -------------------------------------------------------------------------------- Harbour MiniGUI Errorlog File Harbour MiniGUI Extended Edition 2.0.1 - 2011.09.21 -------------------------------------------------------------------------------- Date: 11/15/2011 Time: 22:13:24 Error BASE/1124 Argument error: LEFT Called from LEFT(0) Called from SCANSOFT(195) Called from MAIN(84) Пример: \MiniGUI\SAMPLES\BASIC\MsgEdit - не собирается... Z:\MiniGUI\SAMPLES\BASIC\MsgEdit>call ..\..\..\batch\compile.bat demo /L shell32 Harbour 3.1.0dev (Rev. 17042) Copyright (c) 1999-2011, http://harbour-project.org/ Compiling 'demo.prg'... Lines 20133, Functions/Procedures 30 Generating C source output to 'demo.c'... Done. Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland demo.c: Error E2141 demo.prg 993: Declaration syntax error *** 1 errors in Compile *** C compile error.

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

Andrey: Как мне до создания окна MAIN показать окно CHILD (или другое) с сообщением типа - "Подождите, создаю базы..." ?

SergKis: Andrey пишет:с сообщением типа - "Подождите, создаю базы..." ? может подойдет схема из BASIC\WAIT_WINDOW\*.* с MAIN NOSHOW и окном сообщения в ON INIT, а после всех дел MAIN перевести в show.

Dima: Andrey У тебя склероз ? Ты этот вопрос уже задавал. Поиск на форуме по слову SPLASH или пример MiniGUI\SAMPLES\BASIC\SPLASHDEMO_3


Vlad04: Примеры WAIT_WINDOW_FOX TimedMsgBox посмотри

Andrey: Dima пишет: У тебя склероз ? Vlad04 пишет: посмотри А прочитать внимательно можно ? Andrey пишет: Как мне до создания окна MAIN показать окно Если нельзя это делать - так напишите что НЕЛЬЗЯ !

Andrey: SergKis пишет: с MAIN NOSHOW и окном сообщения в ON INIT, а после всех дел MAIN перевести в show. Да я знаю про этот вариант, просто принципиально понять хочу. Если нет MAIN окна, то выводить другие окна нельзя получается ? Т.е. такой код никогда не будет работать: Show_MyInfo(.T.) // показ сообщения Open_MyDbf Show_MyInfo(.F.) // скрыть сообщение DEFINE WINDOW Form_Main AT 0,0 WIDTH 720 HEIGHT 560 ; MAIN ; ..... END WINDOW ACTIVATE WINDOW Form_Main ----------------------------------- Почему тогда окна из MsgDebug(), MsgInfo() - всегда показывать можно ?

SergKis: Andrey пишет: Show_MyInfo(.T.) // показ сообщения Open_MyDbf Show_MyInfo(.F.) // скрыть сообщение ты пропустил, сначала CreateWindow_MyInfo()+Title+Menu+кнопки(min,max,exit)+контроы окна+... потом Show_MyInfo(.T.) Open_MyDbf() // здесь возможны сообщения для окна, причем разные ... ... и не забудь про Release, Destroy окна а теперь сравни с DEFINE ... END WINDOW, которые ты писал а CHILD сразу говорит дочернее, т.е. есть главное уже должно быть - это возвращаясь к твоему вопросу

Andrey: Andrey пишет: Как мне до создания окна MAIN показать окно CHILD (или другое) с сообщением типа - "Подождите, создаю базы..." ? В моёй вопросе есть ещё фраза - (или другое) ! Т.е. можно значит создать окно до MAIN ?

Softlog86: Всё как вы и хотели : Запускается SPLASCH окошко ("Ждите подключение к БД и тд") - и по завершении включает главное окно : #include "minigui.ch" #define WM_PAINT 15 #command DEFINE WINDOW <w> ; [ AT <row>,<col> ] ; [ WIDTH <wi> ] ; [ HEIGHT <h> ] ; PICTURE <bitmap> ; SPLASH ; [ DELAY <delay> ] ; [ ON RELEASE <ReleaseProcedure> ] ; => ; _DefineSplashWindow( <"w">, <row>, <col>, <wi>, <h>, <bitmap>, <delay>, <{ReleaseProcedure}> ) /* */ Function Main DEFINE WINDOW Form_Main ; AT 0,0 ; WIDTH 640 HEIGHT 480 ; TITLE 'Main Window' ; MAIN ; NOSHOW END WINDOW DEFINE WINDOW Form_Splash ; PICTURE 'DEMO' ; SPLASH ; DELAY 4 ; ON RELEASE Form_Main.Show <------ По завершении - ВКЛ - главного окна END WINDOW CENTER WINDOW Form_Main ACTIVATE WINDOW ALL <------ РЕДКО ВСТРЕЧАЕТСЯ такая команда - АКТИВИЗИРОВАТЬ ВСЕ ОКНА :) Return Nil /* */ Procedure _DefineSplashWindow( name, row, col, width, height, cbitmap, nTime, Release ) Local aBmpSize := BmpSize( cbitmap ) DEFAULT row := 0, col := 0, width := aBmpSize[1], height := aBmpSize[2], nTime := 2 DEFINE WINDOW &name ; AT row, col ; WIDTH width HEIGHT height ; CHILD TOPMOST ; NOSIZE NOMAXIMIZE NOMINIMIZE NOSYSMENU NOCAPTION ; ON INIT _SplashDelay( name, nTime ) ; ON RELEASE Eval( Release ) @ 0,0 IMAGE Image_1 ; PICTURE cbitmap ; WIDTH width ; HEIGHT height END WINDOW IF EMPTY(row) .AND. EMPTY(col) CENTER WINDOW &name ENDIF SHOW WINDOW &name Return /* */ Procedure _SplashDelay( name, nTime ) Local iTime := Seconds() SendMessage( GetFormHandle(name), WM_PAINT, 0, 0 ) Do While Seconds() - iTime < nTime Do Events EndDo DoMethod( name, 'Release' ) Return

Andrey: Andrey пишет: Всё как вы и хотели Я хотел поменьше кода и не такой геморой с передачей/возвратом.... //Показать окно // Создать базы //скрыть окно // А потом уж DEFINE WINDOW Form_Main ; MAIN ;

Andrey: Вопрос к Григорию, насчет кнопок ! Есть в рабочем примере такая конструкция: DEFINE BUTTONEX &cObject PARENT &cForm .......... HANDCURSOR .T. ONMOUSEHOVER ( SetProperty(ThisWindow.Name, cObject, "ICON", cResIco2), SetProperty(ThisWindow.Name, cObject, "fontcolor", aFontColorInvert ) ) ONMOUSELEAVE ( SetProperty(ThisWindow.Name, cObject, "ICON", cResIco) , SetProperty(ThisWindow.Name, cObject, "fontcolor", aFontColor) ) END BUTTONEX Пытаюсь сделать то же самое, только без DEFINE: @ nButtY,nWinWidth-20-nLenButt BUTTONEX BUTTON_4 WIDTH nLenButt HEIGHT nHButt ; CAPTION "Выход" ; ICON "iExit48x1" ; FONTCOLOR aFontColor ; BACKCOLOR MAROON ; SIZE nFBSize BOLD ; NOHOTLIGHT NOXPSTYLE HANDCURSOR ; ONMOUSEHOVER ( SetProperty( ThisWindow.Name, "BUTTON_4", "ICON", "iExit48x2" ) ) ; ONMOUSELEAVE ( SetProperty( ThisWindow.Name, "BUTTON_4", "ICON", "iExit48x1" ) ) ; ACTION ( aRetColor := {} , aUslColor:= {}, ThisWindow.Release ) Не собирается, выдает ошибку: Form_color.prg(120) Error E0030 Syntax error "syntax error at '@'" Где неправильно делаю ? И как правильно заменить в SetProperty( ThisWindow.Name, "BUTTON_4", ...) - BUTTON_4 на аналогичное, короткое название ? ThisWindow.Name - _HMG_THISFORMNAME ?????? - _HMG_THISCONTROLNAME Где то встречал, но сейчас не нашёл.

gfilatov2002: Andrey пишет: ONMOUSEHOVER ( SetProperty( ThisWindow.Name, "BUTTON_4", "ICON", "iExit48x2" ) ) ; ONMOUSELEAVE ( SetProperty( ThisWindow.Name, "BUTTON_4", "ICON", "iExit48x1" ) ) ; Для такой команды синтаксис д.б. с пробелом ON MOUSEHOVER ( SetProperty( ThisWindow.Name, "BUTTON_4", "ICON", "iExit48x2" ) ) ; ON MOUSELEAVE ( SetProperty( ThisWindow.Name, "BUTTON_4", "ICON", "iExit48x1" ) ) ; Andrey пишет: короткое название ? This.Name пробовал

Andrey: gfilatov2002 пишет: This.Name пробовал Ну точно помню что видел такую конструкцию, лазил даже в i_this.ch - там не нашёл. Спасибо БОЛЬШОЕ за помощь !!!

Andrey: Что то не работает переключение иконок. Вторая иконка появляется только при нажатии кнопки. Почему ? Как исправить ? @ nButtY,nWinWidth-20-nLenButt BUTTONEX BUTTON_4 WIDTH nLenButt HEIGHT nHButt ; CAPTION "Выход" ; ICON "iExit48x1" ; BACKCOLOR MAROON ; FONTCOLOR aFontColor ; SIZE nFBSize BOLD ; NOHOTLIGHT NOXPSTYLE HANDCURSOR ; ON MOUSEHOVER ( SetProperty( ThisWindow.Name, This.Name, "ICON", "iExit48x2" ) ,; SetProperty(ThisWindow.Name, This.Name, "fontcolor", aFontColor2 ) ) ; ON MOUSELEAVE ( SetProperty( ThisWindow.Name, This.Name, "ICON", "iExit48x1" ) ,; SetProperty(ThisWindow.Name, This.Name, "fontcolor", aFontColor ) ) ; ACTION ( aRetColor := {} , aUslColor:= {}, ThisWindow.Release )

Andrey: А можно как то сделать перевод с одного языка на другой на лету программы ? Т.е. я не хочу делать отдельный языковой файл для программы, хочу просто переводить на другой язык в момент показа формы. Можно ли как то все сообщения программы записать в файл (включая имена переменных) ? А потом можно сделать отдельный модуль с переводом на другой язык. Т.е. форма всегда выводиться на русском, а если установлен другой язык, то переменные на форме перечитываются на нужный язык.

Dima: посмотри для примера сырец dbedit.prg от Паши http://clipper.borda.ru/?1-4-0-00000666-000-0-0-1417410238

petr707: Кто переводить-то будет ? Перевод сильно зависит от контекста. Отдельное слово часто невозможно перевести без контекста. "Мир" как переведешь ? "World" или "peace" ?

SergKis: Andrey пишет:А можно как то сделать перевод с одного языка на другой на лету программы ? petr707 пишет:Кто переводить-то будет ? можно пойти по такому пути: Переводчик Google

Andrey: Dima пишет: посмотри для примера сырец dbedit.prg от Паши Посмотрел. Я примерно так же раньше делал. Потом у Григория взял в качестве примера MiniGUI\SAMPLES\Applications\DBFview\source\DBFview.lng но это не совсем то. Я проще хочу поступить. Можно ли как то все сообщения программы записать в файл (включая имена переменных) ? Т.е. по кнопке обход всех форм, считывание Label, FRAME, BUTTONEX и сброс их в файл. А уж из этого файла можно будет отдельную функцию в программе сделать.

Haz: Григорий, добрый день. Есть маленький, но неприятный глючок в CONTEXT MENU, причем проявляется не всегда ( Andrey тоже писал тут про него ) Суть его в том , что после выбора пункта меню, само меню не закрывается ( только со второго раза ). У меня это проявляется при использовании контекста в TSBrowse DEFINE CONTEXT MENU CONTROL oBrw OF Win MENUITEM 'Добавить новую статью ' ACTION {|| ... } NAME CM_1 MENUITEM 'Удалить текущую статью' ACTION {|| ... } NAME CM_2 END MENU иногда глюк решался забором фокуса от меню через вывод сообщения по окончании ACTION - MsgBox('что то там выполнено'), но не всегда это вписывается в логику. Перечитав исходники MiniGui нашел в h_Events.prg такие строки: =================[ От сюда ]================= 1400: // Process Menus ....................................... IF HiWord( wParam ) == 0 .AND. _HMG_aControlType == "MENU" _DoControlEventProcedure ( _HMG_aControlProcedures , i ) RETURN 0 ENDIF =================[ До сюда ]================= Судя по всему это и есть вызов того самого ACTION, и подумав что меню лучше закрывать ПЕРЕД этим вызовом - добавил строку =================[ От сюда ]================= 1400: // Process Menus ....................................... IF HiWord( wParam ) == 0 .AND. _HMG_aControlType == "MENU" _CloseMenu() _DoControlEventProcedure ( _HMG_aControlProcedures , i ) RETURN 0 ENDIF =================[ До сюда ]================= Глючок то исчез Грирогий, если эта корректировка правильна, может ее внести в след версию ?



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