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

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

SergKis: SergKis пишет:В Label след.изменения: Function OLABELEVENTS(...) ... MoveWindow( _HMG_aControlHandles [ i ], ; // hWnd _HMG_aControlCol [ i ], ; // X _HMG_aControlRow [ i ], ; // Y _HMG_aControlWidth [ i ], ; // W _HMG_aControlHeight [ i ], .T. ) // W SetWindowText( _HMG_aControlHandles [ i ], ; // hWnd _HMG_aControlCaption [ i ] ) // Text Сам в ночи запутался и других путаю. Сейчас спокойно посмотрел - эти изменения никакого отношения к resze не имеют. Это ускоренный вариант вместо SetProperty(cForm, cControl, "Value", "Text label") (длинная цепочка команд). На форме много Label, Browse с OnChage заменяет данные в Label-ах по стандартному SetProperty(...) очень медленно. На медленных PC еле ползает. Поэтому мы применяем такой ускоренный вариант в OnChange замены текста в Label: i := GetControlIndex(cLabelName, cFormName) _HMG_aControlCaption [ i ] := "New text label" h := PostMessage( _HMG_aControlHandles [ i ], WM_HMG_NOTIFY_LBL, 0, 0 ) и выполняется в OLABELEVENTS(...) ElseIf nMsg == WM_HMG_NOTIFY_LBL. Эти команды не на виду (лежат в libe) и поэтому куда-то меня вчера унесло. Извиняте товарищи ...

Andrey: SergKis пишет: как ведет себя demo.exe (demo.prg) - нормально работает или нет (рамка на первом Label меняется по нижней кнопке Ok) Да, нормально работает ! Только собранная на стандартном MiniGUI Extended Edition 2.1.8 - 2012.12.12 НЕ РАБОТАЕТ ! А что делать с моим примером ? Почему не работает положенная на Label кнопка Cancel или Message ? #include "minigui.ch" Function Main() Local i,j,y,x,w,h,t Local cWnd,hWnd,nCliW,nCliH Local cLblN1,nLblW1,nLblH1,nLblY1,nLblX1,aLblC1 Local cLblN2,nLblW2,nLblH2,nLblY2,nLblX2,aLblC2 Local cLblN3,nLblW3,nLblH3,nLblY3,nLblX3,aLblC3 cWnd := "MyWnd" DEFINE WINDOW &cWnd ; AT 40, 50 ; WIDTH 480 ; HEIGHT 410 ; MINWIDTH 480 MINHEIGHT 410 ; TITLE 'Test Label box' ; MAIN ; ON SIZE ReSize() ; ON MAXIMIZE ReSize() hWnd := GetFormHandle(cWnd) nCliW := GetClientWidth (hWnd) nCliH := GetClientHeight(hWnd) cLblN1 := cWnd + '_Frame_Lbl1' nLblW1 := nCliW nLblH1 := int(nCliH * 0.4) nLblY1 := 0 nLblX1 := 0 aLblC1 := {251, 250, 174} cLblN2 := cWnd + '_Frame_Lbl2' nLblW2 := nCliW nLblH2 := int(nCliH * 0.2) nLblY2 := nLblY1 + nLblH1 nLblX2 := nLblX1 aLblC2 := {255, 0, 255} cLblN3 := cWnd + '_Frame_Lbl3' nLblW3 := nCliW nLblH3 := nCliH - (nLblH1 + nLblH2) nLblY3 := nLblY2 + nLblH2 nLblX3 := nLblX1 aLblC3 := {178, 227, 137} @ nLblY1, nLblX1 LABEL &cLblN1 VALUE "" OF &cWnd ; WIDTH nLblW1 HEIGHT nLblH1 ; BACKCOLOR aLblC1 BORDER CLIENTEDGE i := GetControlIndex(cLblN1, cWnd) j := cWnd + '_Frame_Text1' t := "Hello Frame 1" y := _HMG_aControlRow [ i ] + 10 x := _HMG_aControlCol [ i ] + 10 w := 100 h := 24 @ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h @ nLblY2, nLblX2 LABEL &cLblN2 VALUE "" OF &cWnd ; WIDTH nLblW2 HEIGHT nLblH2 ; BACKCOLOR aLblC2 BORDER CLIENTEDGE @ 40 , 120 BUTTON Button_1 CAPTION 'Message' ; ACTION MsgInfo("ACTION - Message Button_1 !") i := GetControlIndex(cLblN2, cWnd) j := cWnd + '_Frame_Text2' t := "Hello Frame 2" y := _HMG_aControlRow [ i ] + 10 x := _HMG_aControlCol [ i ] + 10 w := 100 h := 24 @ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h @ nLblY3, nLblX3 LABEL &cLblN3 VALUE "" OF &cWnd ; WIDTH nLblW3 HEIGHT nLblH3 ; BACKCOLOR aLblC3 BORDER CLIENTEDGE i := GetControlIndex(cLblN3, cWnd) j := cWnd + '_Frame_Text3' t := "Hello Frame 3" y := _HMG_aControlRow [ i ] + 10 x := _HMG_aControlCol [ i ] + 10 w := 100 h := 24 @ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h @ nCliH - 40 , nCliW - 120 BUTTON Button_3 CAPTION 'Cancel' ; ACTION ThisWindow.Release END WINDOW ACTIVATE WINDOW &cWnd Return Function ReSize() Local cWnd,hWnd,nCliW,nCliH Local cLblN1,nLblW1,nLblH1,nLblY1,nLblX1 Local cLblN2,nLblW2,nLblH2,nLblY2,nLblX2 Local cLblN3,nLblW3,nLblH3,nLblY3,nLblX3 cWnd := _HMG_ThisFormName hWnd := _HMG_aFormHandles [ _HMG_ThisFormIndex ] nCliW := GetClientWidth (hWnd) nCliH := GetClientHeight(hWnd) cLblN1 := cWnd + '_Frame_Lbl1' nLblW1 := nCliW cLblN2 := cWnd + '_Frame_Lbl2' nLblW2 := nCliW cLblN3 := cWnd + '_Frame_Lbl3' nLblW3 := nCliW nLblH3 := nCliH - ( GetProperty(cWnd, cLblN1, "Height") + ; GetProperty(cWnd, cLblN2, "Height") ) SetProperty(cWnd, cLblN1, "Width" , nLblW1) SetProperty(cWnd, cLblN2, "Width" , nLblW2) SetProperty(cWnd, cLblN3, "Width" , nLblW3) SetProperty(cWnd, cLblN3, "Height", nLblH3) // сдвиг кнопки Button_3 SetProperty(cWnd, "Button_3", "Row", nCliH - 40 ) SetProperty(cWnd, "Button_3", "Col" , nCliW - 120 ) Return #pragma BEGINDUMP #include <windows.h> #include "hbapi.h" HB_FUNC( GETCLIENTWIDTH ) { RECT rect; GetClientRect( ( HWND ) hb_parnl(1), &rect ); hb_retni( ( INT ) rect.right - rect.left ); } HB_FUNC( GETCLIENTHEIGHT ) { RECT rect; GetClientRect( ( HWND ) hb_parnl(1), &rect ); hb_retni( ( INT ) rect.bottom - rect.top ); } #pragma ENDDUMP Как сделать чтоб кнопки заработали в стандартном MiniGUI Extended Edition 2.1.8 - 2012.12.12 ???

SergKis: Andrey пишет:А что делать с моим примером ? В моей сборке это DemoA.exe (prg не положил в архив). Думаю он работает. Почему не работает demo.prg на сборке 2.1.8. не знаю. Одна панель Visible := .F. (с окантовкой), вторая Visible := .T. (без окантовки) по кнопке меняем Visible := ! Visible у обоих панелей. Возможно Visible не вызывает Refresh ? Попробуйте: [pre2] @ y, x BUTTON &( j ) CAPTION "OK" WIDTH w HEIGHT h ; ACTION ( SetProperty(cWnd, cLblN1 + "0", "Visible", ! GetProperty(cWnd, cLblN1 + "0", "Visible")), ; SetProperty(cWnd, cLblN1 + '1', "Visible", ! GetProperty(cWnd, cLblN1 + "1", "Visible")), ; DoMethod(cWnd, cLblN1 + iif(GetProperty(cWnd, cLblN1+"1", "Visible"), "1", "0"), "Refresh"), ; Lbl1Refr() ) [/pre2]


Andrey: SergKis пишет: В моей сборке это DemoA.exe (prg не положил в архив). Думаю он работает. Да он у меня тоже работает. А можете PRG выложить ?

SergKis: Andrey пишет:А можете PRG выложить ? [pre] #include "minigui.ch" Function Main() Local i,j,y,x,w,h,t Local cWnd,hWnd,nCliW,nCliH Local cLblN1,nLblW1,nLblH1,nLblY1,nLblX1,aLblC1 Local cLblN2,nLblW2,nLblH2,nLblY2,nLblX2,aLblC2 Local cLblN3,nLblW3,nLblH3,nLblY3,nLblX3,aLblC3 cWnd := "MyWnd" DEFINE WINDOW &cWnd ; AT 40, 50 ; WIDTH 480 ; HEIGHT 410 ; MINWIDTH 480 MINHEIGHT 410 ; TITLE 'Test Label box' ; MAIN ; ON SIZE ReSize() ; ON MAXIMIZE ReSize() hWnd := GetFormHandle(cWnd) nCliW := GetClientWidth (hWnd) nCliH := GetClientHeight(hWnd) cLblN1 := cWnd + '_Frame_Lbl1' nLblW1 := nCliW nLblH1 := int(nCliH * 0.4) nLblY1 := 0 nLblX1 := 0 aLblC1 := {251, 250, 174} cLblN2 := cWnd + '_Frame_Lbl2' nLblW2 := nCliW nLblH2 := int(nCliH * 0.2) nLblY2 := nLblY1 + nLblH1 nLblX2 := nLblX1 aLblC2 := {255, 0, 255} cLblN3 := cWnd + '_Frame_Lbl3' nLblW3 := nCliW nLblH3 := nCliH - (nLblH1 + nLblH2) nLblY3 := nLblY2 + nLblH2 nLblX3 := nLblX1 aLblC3 := {178, 227, 137} @ nLblY1, nLblX1 LABEL &cLblN1 VALUE "" OF &cWnd ; WIDTH nLblW1 HEIGHT nLblH1 ; BACKCOLOR aLblC1 BORDER CLIENTEDGE i := GetControlIndex(cLblN1, cWnd) j := cWnd + '_Frame_Text1' t := "Hello Frame 1" y := _HMG_aControlRow [ i ] + 10 x := _HMG_aControlCol [ i ] + 10 w := 100 h := 24 @ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h @ nLblY2, nLblX2 LABEL &cLblN2 VALUE "" OF &cWnd ; WIDTH nLblW2 HEIGHT nLblH2 ; BACKCOLOR aLblC2 BORDER CLIENTEDGE i := GetControlIndex(cLblN2, cWnd) j := cWnd + '_Frame_Text2' t := "Hello Frame 2" y := _HMG_aControlRow [ i ] + 10 x := _HMG_aControlCol [ i ] + 10 w := 100 h := 24 @ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h @ nLblY3, nLblX3 LABEL &cLblN3 VALUE "" OF &cWnd ; WIDTH nLblW3 HEIGHT nLblH3 ; BACKCOLOR aLblC3 BORDER CLIENTEDGE i := GetControlIndex(cLblN3, cWnd) j := cWnd + '_Frame_Text3' t := "Hello Frame 3" y := _HMG_aControlRow [ i ] + 10 x := _HMG_aControlCol [ i ] + 10 w := 100 h := 24 @ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h @ nCliH - 40 , nCliW - 120 BUTTON Button_3 CAPTION 'Cancel' ; ACTION ThisWindow.Release END WINDOW ACTIVATE WINDOW &cWnd Return Function ReSize() Local cWnd,hWnd,nCliW,nCliH Local cLblN1,nLblW1,nLblH1,nLblY1,nLblX1 Local cLblN2,nLblW2,nLblH2,nLblY2,nLblX2 Local cLblN3,nLblW3,nLblH3,nLblY3,nLblX3 cWnd := _HMG_ThisFormName hWnd := _HMG_aFormHandles [ _HMG_ThisFormIndex ] nCliW := GetClientWidth (hWnd) nCliH := GetClientHeight(hWnd) cLblN1 := cWnd + '_Frame_Lbl1' nLblW1 := nCliW cLblN2 := cWnd + '_Frame_Lbl2' nLblW2 := nCliW cLblN3 := cWnd + '_Frame_Lbl3' nLblW3 := nCliW nLblH3 := nCliH - ( GetProperty(cWnd, cLblN1, "Height") + ; GetProperty(cWnd, cLblN2, "Height") ) SetProperty(cWnd, cLblN1, "Width" , nLblW1) SetProperty(cWnd, cLblN2, "Width" , nLblW2) SetProperty(cWnd, cLblN3, "Width" , nLblW3) SetProperty(cWnd, cLblN3, "Height", nLblH3) // сдвиг кнопки Button_3 SetProperty(cWnd, "Button_3", "Row", nCliH - 40 ) SetProperty(cWnd, "Button_3", "Col" , nCliW - 120 ) Return /* #pragma BEGINDUMP #include <windows.h> #include "hbapi.h" HB_FUNC( GETCLIENTWIDTH ) { RECT rect; GetClientRect( ( HWND ) hb_parnl(1), &rect ); hb_retni( ( INT ) rect.right - rect.left ); } HB_FUNC( GETCLIENTHEIGHT ) { RECT rect; GetClientRect( ( HWND ) hb_parnl(1), &rect ); hb_retni( ( INT ) rect.bottom - rect.top ); } #pragma ENDDUMP */ [/pre] он взят из Вашего поста где-то выше. Andrey попробуйте у себя в demo.prg заменить текст кнопки третьей на текст: [pre2] @ y, x BUTTON &( j ) CAPTION "OK" WIDTH w HEIGHT h ; ACTION ( SetProperty(cWnd, cLblN1 + "0", "Visible", ! GetProperty(cWnd, cLblN1 + "0", "Visible")), ; SetProperty(cWnd, cLblN1 + '1', "Visible", ! GetProperty(cWnd, cLblN1 + "1", "Visible")), ; DoMethod(cWnd, cLblN1 + iif(GetProperty(cWnd, cLblN1+"1", "Visible"), "1", "0"), "Refresh"), ; // new line Lbl1Refr() ) [/pre2]

SergKis: SergKis пишет:в demo.prg заменить текст demo.prg из архива моей сборки.

Andrey: SergKis пишет: он взят из Вашего поста где-то выше. Да это я помню. Я его собрал заново на сборке 2.1.8. - НЕ РАБОТАЕТ !!! Т.е. вы внесли изменения в свою сборку и теперь в стандартных сборках кнопки положенные на LABEL не работают, а у вас работает. Правильно или нет ?

SergKis: Andrey пишет:Правильно или нет ? Я взял Ваш текст prg из поста, закоментировал hb_fun GetClient...() (они в lib у меня), собрал demoA.exe и все.

SergKis: Andrey попробуйте собрать у себя пример:http://zalil.ru/34179692

a_sidorov: Это известная проблема - Мышка в minigui работает на объекте, который положил раньше, то есть нижнем. Попробуй сделать nLblY1 := 50 , чтобы половина кнопки была не на label, тогда мышка будет работать на половине кнопки (верхней)

a_sidorov: Поставь самым первым объектом кнопку - тогда будет работать. То есть объект, на который должна срабатывать кнопка нужно класть на форму раньше. Мышка срабатывает не по видимости на экране, а по порядку выкладки на форму. Это неправильно, но это так.

Andrey: a_sidorov пишет: Мышка срабатывает не по видимости на экране, а по порядку выкладки на форму. Это неправильно, но это так. Спасибо БОЛЬШОЕ !!!

SergKis: Andrey попробуйте собрать у себя этот пример и мне exe глянуть дайте ( если это возможно ? ): http://zalil.ru/34180183

Andrey: Собрал. Вот он http://files.mail.ru/33539C1DCBC1456B90BFA2B5E511E358

SergKis: Andrey пишет:Собрал. Спасибо, не мог понять, что не работает. Думаю это к Григорию надо обращаться. У нас ComboBox и GetBox (его мы правили) на таком Label работают.

Andrey: a_sidorov пишет: Мышка срабатывает не по видимости на экране, а по порядку выкладки на форму. Это неправильно, но это так. SergKis пишет: Думаю это к Григорию надо обращаться. Григорий, подскажите что делать ?

gfilatov2002: Andrey пишет: Григорий, подскажите что делать ? Хе-хе... Я так понимаю, что SergKis удалось решить эту проблему в своей сборке Так что ждем от него описание выполненных модификаций по поводу Andrey пишет: в стандартных сборках кнопки положенные на LABEL не работают

SergKis: gfilatof2002 пишет:Хе-хе... Я уже сам понял - надо у себя рыть и вспоминать, что меняли (воз и маленькую тележку) ...

Andrey: Конечно если пользоваться MiniGUI\SAMPLES\Advanced\BosTaurus то там есть хорошие и понятные функции: BT_DrawLine (hDC, 0, 0, Height, Width, ORANGE, 5) BT_DrawEllipse (hDC, 140, 200, 400, 230, WHITE, 5) BT_DrawFillRectangle (hDC, 20, 250, 300, 100, ORANGE, RED, 3) BT_DrawFillRoundRect (hDC, 400, 250, 300, 100, 10, 10, ORANGE, RED, 3) и т.д. Но для простых примеров хочется использовать обычные функции МиниГуи....

Andrey: Имею такой код: DEFINE WINDOW Form_7 ; AT 0,0 ; WIDTH 525 ; HEIGHT IF(IsXPThemeActive(), 562, 562-4); ...... Как дальше определить MAXHEIGHT и MAXWIDTH окна ? Вверху по примерам можно пользоваться для этого ВНЕШНИМИ функциями: hWnd := GetFormHandle(cWnd) nCliW := GetClientWidth (hWnd) nCliH := GetClientHeight(hWnd) Но я где то по примерам встречал более простое написание... Типа такого: x := _HMG_MouseCol y := _HMG_MouseRow



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