Форум » 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

Vlad04: Мы не ищем легкий путей! Стоит CHECKBOX Check_1 CAPTION 'Сменить иконку' ; задача которого сменить Иконку !!! А может поставить COMBOBOX и им определить направление копирования ?

SergKis: Vlad04 пишет А может поставить COMBOBOX и им определить направление копирования ? Это всего лишь пример https://TransFiles.ru/f1eyd

Andrey: Опять непонятка... Беру пример C:\MiniGUI\SAMPLES\BASIC\COLORED_TAB\demo.prg Добавляю вверху исходника строку:[pre2] #define EMAIL2 'gfilatov@inbox.ru'[/pre2] Далее добавляю объект: [pre2] PAGE 'Page &5' IMAGE 'Check' TOOLTIP 'TabPage 5' @ 24, 2 LABEL Page_5 VALUE "" WIDTH 0 HEIGHT 0 BACKCOLOR aTabColors[ 5 ] @ 70, 55 HYPERLINK Label_Link ; VALUE "<" + EMAIL2 + ">" ; ADDRESS EMAIL2 + "?cc=&bcc=" + ; "&subject=Programm%20testing%20%20MiniGui%20!" ; WIDTH 300 HEIGHT 30 ; BACKCOLOR aTabColors[ 5 ] ; TOOLTIP "Отправить письмо MiniGui" ; HANDCURSOR END PAGE END TAB[/pre2] Прога перестаёт работать, падает с ошибкой: Error BASE/1081 Argument error: + Called from GETCONTROLINDEX(1005) in module: h_controlmisc.prg Called from _SETADDRESS(55) in module: h_hyperlink.prg Called from SETTAB_1(135) in module: demo.prg Called from MAIN(46) in module: demo.prg В другом месте этот HYPERLINK работает. А совместно с цветным TAB - нет. Почему ?


gfilatov2002: Andrey пишет: @ 70, 55 HYPERLINK Label_Link ; VALUE "<" + EMAIL2 + ">" ; ADDRESS EMAIL2 + "?cc=&bcc=" + ; "&subject=Programm%20testing%20%20MiniGui%20!" ; WIDTH 300 HEIGHT 30 ; BACKCOLOR aTabColors[ 5 ] ; TOOLTIP "Отправить письмо MiniGui" ; HANDCURSOR Добавь указание родительского окна в определение этого HYPERLINK @ 70, 55 HYPERLINK Label_Link OF Form_1 ;

Andrey: СПАСИБО Григорий !

Andrey: Хорошие функции для получения картинок типа файлов: [pre2] hIcon := ICON_EXEREAD( cFile ) hBmp := BmpFromIcon( hIcon ) // a return handle bmp[/pre2] Только вот возвращают картинки 32х32. А можно сделать, чтобы возвращались картики 64х64 ?

Andrey: Есть большой лог ошибок ErrorLog.htm Просматривать вручную его ОЧЕНЬ ДОЛГО... Как бы сделать с него выборку: Date: 10.04.19 Time: 21:25:30 Error MGERROR/0 Control: PrgBar_1 Of Form_Index Not defined. Program terminated. Called from - выборку ошибок 5 или 7 уровней. Может сделать бы стандартный компонент в МиниГуи для этого ? В виде дерева будет наверное очень удобно !

SergKis: Andrey Может достаточно будет в программе переименовывать (раз в несколько дней\недель\...) Но сделать можешь "компонент" на весь файл, думаю возражений не будет

Andrey: Всем привет ! Что-то столкнулся с потерей фокуса на модальном окне. На главной таблице вызываю окно печати (MODAL), в этом окне своя таблица, в ней делаются вызов другой функции так: [pre2] SetProperty(oBrwP:cParentWnd, oBrwP:cControlName, "Enabled", .F.) //блокируем меню cRet := &cRun(....) // вызов внешних функций SetProperty(oBrwP:cParentWnd, oBrwP:cControlName, "Enabled", .T.) //разлокируем меню[/pre2] Вызываю функцию, в ней вызываю MODAL-окно, там выбираю и закрываю это окно, далее вызываю ещё MODAL-окно c таблицей, потом его закрываю. В результате теряю фокус на окно печати (MODAL), оно оказывается под главной таблицей. И теперь можно ходить по главной таблице, хотя окно печати (MODAL) ! И прога начинает вылетать в других местах. Юзер в ауте, я тоже. Как исправить эту ситуацию ? Сергей, ты писал что так блокировать таблицу не правильно, я этот вопрос оставил на потом. И вот этот вопрос вылез у меня. P.S. Если один раз вызывать MODAL-окно, то всё работает отлично, если 2 раза, то теряется фокус и начинается фигня.

SergKis: Andrey пишет ты писал что так блокировать таблицу не правильно, я этот вопрос оставил на потом Неправильно, т.к. tsbrowse (это объект) имеет собственную блокировку oBrw:lEnabled := .T.\.F. oBrw:Enabled( lEnable ) - с закраской тсб

Andrey: Разобрался наконец то со своей (или не моей) ошибкой ... Так портачит, что даже окно в коде принудительно не закрывается, например так Form_F5.Release Может неправильный код с потоками, я не знаю. Вот такая конструкция ломает в дальнейшем код: [pre2] // если было вызвано последнее окно MODAL, то вернёт .T. MsgDebug( "_HMG_IsModalActive=", _HMG_IsModalActive ) -->> .T. TestModalWindows() // если было вызвано последнее окно MODAL, то вернёт .T. MsgDebug( "_HMG_IsModalActive=", _HMG_IsModalActive ) -->> .F. ..... FUNCTION TestModalWindows() .... WaitThreadCreate( "загрузка отчёта" ) ..... DEFINE WINDOW Form_Modal ; ..... MODAL ; ..... ON INIT {|| WaitThreadClose(), DoMethod('Form_Modal', 'Butt_Exit', 'Setfocus') }[/pre2] Пример функции WaitThreadCreate() в папке C:\MiniGUI\SAMPLES\BASIC\WAIT_WINDOW_2\demo2.prg Где и что править в demo2.prg я не знаю ?

Andrey: gfilatov2002 пишет: Да, есть. Это WinAPI функция GetPixel(). Рабочий пример ее использования см. в папке samples\Advanced\FillTriangle Переделал эту функцию вот так:[pre2] Function RowColColorRGB(nRow,nCol) LOCAL hdc, cMsg, aColor := {0,0,0} LOCAL hWin := ThisWindow.Handle hdc := GetDC( hWin ) //x := _HMG_MouseCol //y := _HMG_MouseRow IF GetPixelColor( hdc, nCol, nRow, @aColor ) cMsg := "RGB (" ; + " r:" + str(aColor[1], 3 ) ; + " g:" + str(aColor[2], 3 ) ; + " b:" + str(aColor[3], 3 ) ; + " )" //MsgDebug( cMsg ) ENDIF ReleaseDC( hWin, hdc ) Return aColor[/pre2] Всегда чёрный цвет возвращает. Что то я не так переделал... Как правильно сделать

Andrey: Всем привет ! Очередная непонятка с работой на различных платформах. Сделал универсальное затенение окна (пример отправлен Григорию в библиотеку для всех) Работает отлично на Win ХР/8.1/10/Server 2012, а на Server 2008 не захватывает верх окна. Вот так выглядит на экране Windows Server 2008 R2 Standart: С чем это связано ?

Andrey: В разных меню испольую по разному стиль меню и высоту иконок, типа: [pre2] SET MENUSTYLE EXTENDED SetMenuBitmapHeight( 48 ) [/pre2] Есть ли функции установки - какой стиль стоит и какой размер иконок ?

SergKis: Andrey i_menu.ch[pre2] #xcommand SET MENUSTYLE EXTENDED ; => ; _NewMenuStyle ( .T. ) #xcommand SET MENUSTYLE STANDARD ; => ; _NewMenuStyle ( .F. ) #translate IsExtendedMenuStyleActive () ; => ; _NewMenuStyle () ... c_menu.c HB_FUNC( SETMENUBITMAPHEIGHT ) { bm_size = hb_parni( 1 ); min_height = min_width = bm_size + 4; hb_retni( bm_size ); } HB_FUNC( GETMENUBITMAPHEIGHT ) { hb_retni( bm_size ); } ... [/pre2]

Andrey: SergKis пишет: i_menu.ch Спасибо БОЛЬШОЕ !

Andrey: А можно как то сократить текст программы ? [pre2] // если было вызвано последнее окно MODAL, то вернёт .T. lModal := _HMG_IsModalActive If lModal DEFINE WINDOW &cFrmName ; ..... MODAL ; .... Else DEFINE WINDOW &cFrmName ; ..... WINDOWTYPE STANDARD ; .... Endif [/pre2]

SergKis: Andrey пишет А можно как то сократить текст программы ? Поднял свои опыты на эту тему, покрути, если хочешь [pre2] i_window.ch ... #xtranslate <w> . SplitBox . \<x\> . \<c\> . \<p:Caption,Enabled,Value\> := \<n\> => SetProperty ( <"w"> , "SplitBox", \<"x"\> , \<"c"\> , \<"p"\> , \<n\> ) #xcommand DEF WINDOW <w> ; [ <dummy1: OF, PARENT> <parent> ] ; [ AT <row>,<col> ] ; [ ROW <row> ] ; [ COL <col> ] ; [ WIDTH <wi> ] ; [ HEIGHT <h> ] ; [ MINWIDTH <minWidth> ] ; [ MINHEIGHT <minHeight> ] ; [ MAXWIDTH <maxWidth> ] ; [ MAXHEIGHT <maxHeight> ] ; [ VIRTUAL WIDTH <vWidth> ] ; [ VIRTUAL HEIGHT <vHeight> ] ; [ CLIENTAREA <clientwidth>,<clientheight> ] ; [ TITLE <title> ] ; [ ICON <icon> ] ; [ <main: MAIN> ] ; [ <mdi: MDI> ] ; [ <child: CHILD> ] ; [ <panel: PANEL> ] ; [ <modal: MODAL> ] ; [ <main: WINDOWTYPE MAIN> ] ; [ <child: WINDOWTYPE CHILD> ] ; [ <panel: WINDOWTYPE PANEL> ] ; [ <modal: WINDOWTYPE MODAL> ] ; [ WINDOWTYPE STANDARD ] ; [ <noshow: NOSHOW> ] ; [ <topmost: TOPMOST> ] ; [ <palette: PALETTE> ] ; [ <noautorelease: NOAUTORELEASE> ] ; [ <nominimize: NOMINIMIZE> ] ; [ <nomaximize: NOMAXIMIZE> ] ; [ <nosize: NOSIZE> ] ; [ <nosysmenu: NOSYSMENU> ] ; [ <nocaption: NOCAPTION> ] ; [ CURSOR <cursor> ] ; [ ON INIT <InitProcedure> ] ; [ ON RELEASE <ReleaseProcedure> ] ; [ ON INTERACTIVECLOSE <interactivecloseprocedure> ] ; [ ON MOUSECLICK <ClickProcedure> ] ; [ ON MOUSEDRAG <MouseDragProcedure> ] ; [ ON MOUSEMOVE <MouseMoveProcedure> ] ; [ ON MOVE <MoveProcedure> ] ; [ ON SIZE <SizeProcedure> ] ; [ ON MAXIMIZE <MaximizeProcedure> ] ; [ ON MINIMIZE <MinimizeProcedure> ] ; [ ON RESTORE <RestoreProcedure> ] ; [ ON PAINT <PaintProcedure> ] ; [ ON DROPFILES <DropProcedure> ] ; [ <dummy2: BACKCOLOR, BKBRUSH> <backcolor> ] ; [ FONT <FontName> SIZE <FontSize> ] ; [ NOTIFYICON <NotifyIcon> ] ; [ NOTIFYTOOLTIP <NotifyIconTooltip> ] ; [ ON NOTIFYCLICK <NotifyLeftClick> ] ; [ ON NOTIFYDBLCLICK <NotifyDblClick> ] ; [ ON NOTIFYBALLOONCLICK <NotifyBalloonClick> ] ; [ ON GOTFOCUS <GotFocusProcedure> ] ; [ ON LOSTFOCUS <LostFocusProcedure> ] ; [ ON SCROLLUP <scrollup> ] ; [ ON SCROLLDOWN <scrolldown> ] ; [ ON SCROLLLEFT <scrollleft> ] ; [ ON SCROLLRIGHT <scrollright> ] ; [ ON HSCROLLBOX <hScrollBox> ] ; [ ON VSCROLLBOX <vScrollBox> ] ; [ <helpbutton: HELPBUTTON> ] ; [ <flashexit: FLASHEXIT> ] ; => ; DECLARE WINDOW <w> ;; _DefWindow ( <"w">, <title>, <col>, <row>, <wi>, <h>, <.nominimize.>, <.nomaximize.>, <.nosize.>, <.nosysmenu.>, <.nocaption.>, {<minWidth>, <minHeight>}, {<maxWidth>, <maxHeight>}, <{InitProcedure}>, <{ReleaseProcedure}> , <{MouseDragProcedure}>, <{SizeProcedure}> , <{ClickProcedure}> , <{MouseMoveProcedure}>, [<backcolor>] , <{PaintProcedure}> , <.noshow.> , <.topmost.> , <.main.> , <icon> , <.child.> , <FontName> , <FontSize>, <NotifyIcon> , <NotifyIconTooltip> , <{NotifyLeftClick}> , <{GotFocusProcedure}>, <{LostFocusProcedure}> , <vHeight> , <vWidth> , <{scrollleft}> , <{scrollright}> , <{scrollup}> , <{scrolldown}> , <{hScrollBox}> , <{vScrollBox}> , <.helpbutton.> , <{MaximizeProcedure}> , <{MinimizeProcedure}> , <cursor> , <.noautorelease.> , <{interactivecloseprocedure}> , <{RestoreProcedure}> , <{MoveProcedure}> , <{DropProcedure}> , <.mdi.> , <.palette.> , <{NotifyDblClick}> , <"parent"> , <.panel.> , <{NotifyBalloonClick}> , <clientwidth> , <clientheight>, <.modal.>, <.flashexit.> ) ... функцию к себе в либу положи *-----------------------------------------------------------------------------* FUNCTION _DefWindow ( FormName, Caption, x, y, w, h, nominimize, nomaximize, ; nosize, nosysmenu, nocaption, aMin, aMax, InitProcedure, ReleaseProcedure, ; MouseDragProcedure, SizeProcedure, ClickProcedure, MouseMoveProcedure, aRGB, ; PaintProcedure, noshow, topmost, main, icon, child, fontname, fontsize, ; NotifyIconName, NotifyIconTooltip, NotifyIconLeftClick, GotFocus, LostFocus, ; VirtualHeight, VirtualWidth, scrollleft, scrollright, scrollup, scrolldown, ; hscrollbox, vscrollbox, helpbutton, MaximizeProcedure, MinimizeProcedure, cursor, ; NoAutoRelease, InteractiveCloseProcedure, RestoreProcedure, MoveProcedure, DropProcedure, ; mdi, palette, NotifyIconDblClick, cPanelParent, panel, NotifyBalloonClick, ; clientwidth, clientheight, modal, flashexit ) *-----------------------------------------------------------------------------* LOCAL FormHandle, Parent := cPanelParent modal := modal .or. ! Empty( _HMG_IsModalActive ) If ( main := main .or. Empty( _HMG_MainHandle ) ) modal := child := panel := mdi := .F. EndIf If modal FormHandle := _DefineModalWindow ( FormName, Caption, x, y, w, h, Parent, ; nosize, nosysmenu, nocaption, aMin, aMax, ; InitProcedure, ReleaseProcedure, MouseDragProcedure, ; SizeProcedure, ClickProcedure, MouseMoveProcedure, aRGB, ; PaintProcedure, icon, FontName, FontSize, GotFocus, ; LostFocus, VirtualHeight, VirtualWidth, ; scrollleft, scrollright, scrollup, scrolldown, ; hscrollbox, vscrollbox, helpbutton, cursor, noshow, ; NoAutoRelease, InteractiveCloseProcedure, MoveProcedure, ; DropProcedure, clientwidth, clientheight, flashexit ) Else DECLARE CUSTOM COMPONENTS &FormName FormHandle := _DefineWindow ( FormName, Caption, x, y, w, h, nominimize, nomaximize, ; nosize, nosysmenu, nocaption, aMin, aMax, InitProcedure, ReleaseProcedure, ; MouseDragProcedure, SizeProcedure, ClickProcedure, MouseMoveProcedure, aRGB, ; PaintProcedure, noshow, topmost, main, icon, child, fontname, fontsize, ; NotifyIconName, NotifyIconTooltip, NotifyIconLeftClick, GotFocus, LostFocus, ; VirtualHeight, VirtualWidth, scrollleft, scrollright, scrollup, scrolldown, ; hscrollbox, vscrollbox, helpbutton, MaximizeProcedure, MinimizeProcedure, cursor, ; NoAutoRelease, InteractiveCloseProcedure, RestoreProcedure, MoveProcedure, DropProcedure, ; mdi, palette, NotifyIconDblClick, cPanelParent, panel, NotifyBalloonClick, ; clientwidth, clientheight ) EndIf RETURN FormHandle использование DEF WINDOW wMain AT nY, nX WIDTH nW HEIGHT nH ; ICON "1MAIN_ICO" ; TITLE SHOW_TITLE ; BACKCOLOR SILVER ; MAIN NOMAXIMIZE NOSIZE ; FONT cFont SIZE nFontSize ... DEF WINDOW &cFormName AT nY, nX WIDTH nW HEIGHT nH ; TITLE cTitle ICON cIcoRes ; BACKCOLOR aBackColor ; WINDOWTYPE STANDARD ; NOSIZE NOMAXIMIZE TOPMOST ; FONT cFontName SIZE nFontSize ; ON INIT ( this.topmost := .F., _wSend(1) ) ; ON RELEASE NIL ; ON INTERACTIVECLOSE lFormClose и т.д. [/pre2]

Andrey: SergKis пишет: Поднял свои опыты на эту тему, покрути, если хочешь Не совсем то ... Хотелось бы типа такого: [pre2] WINDOWTYPE IIF( lModal == .T., MODAL , STANDARD ) ; [/pre2] Или возможности опледелить ТИП окна отдельной командой. Ну да ладно, если нет такого, будем писать как все.

SergKis: Andrey пишет Или возможности опледелить ТИП окна отдельной командой. А смысл в переменной ? В данном случае, при запуске из под модал, окно будет всегда модал, что бы ты не писал в WINDOWTYPE. Т.е. пиши STANDART или CHILD всегда, к примеру (в функции), но вызов этой же функции из под модал -> будет тип окна modal, т.к. modal := modal .or. ! Empty( _HMG_IsModalActive ). Если надо усложнить добавь в #xcommand переменную WTYPE <nTyp> и в ф-ю параметр nTyp и обрабатывай как надо[pre2] #xcommand DEF WINDOW <w> ; ... [ WTYP <nTyp> ] ; ... => ; DECLARE WINDOW <w> ;; _DefWindow ( <"w">, ... , <clientheight>, <.modal.>, <.flashexit.>, <nTyp> ) ... FUNCTION _DefWindow ( FormName, Caption, x, y, w, h, nominimize, nomaximize, ; ... clientwidth, clientheight, modal, flashexit, nTyp ) ... If HB_ISNUMERIC( nTyp ) // ставь лог. переменные как надо EndIf If modal ... или еще как душе будет угодно. [/pre2]



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