Автор | Сообщение |
Andrey
|
| постоянный участник
|
Пост 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.
| |
|
Ответов - 301
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
All
[только новые]
|
|
SergKis
|
| постоянный участник
|
Пост N: 89
Зарегистрирован: 17.02.12
|
|
Отправлено: 17.01.13 18:11. Заголовок: SergKis пишет:В Labe..
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
|
| постоянный участник
|
Пост N: 2564
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.01.13 21:03. Заголовок: SergKis пишет: как ..
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
|
| постоянный участник
|
Пост N: 90
Зарегистрирован: 17.02.12
|
|
Отправлено: 17.01.13 23:53. Заголовок: Andrey пишет:А что д..
Andrey пишет: цитата: | А что делать с моим примером ? |
| В моей сборке это DemoA.exe (prg не положил в архив). Думаю он работает. Почему не работает demo.prg на сборке 2.1.8. не знаю. Одна панель Visible := .F. (с окантовкой), вторая Visible := .T. (без окантовки) по кнопке меняем Visible := ! Visible у обоих панелей. Возможно Visible не вызывает Refresh ? Попробуйте: @ 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() )
| |
|
Andrey
|
| постоянный участник
|
Пост N: 2565
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.01.13 09:12. Заголовок: SergKis пишет: В мо..
SergKis пишет: цитата: | В моей сборке это DemoA.exe (prg не положил в архив). Думаю он работает. |
| Да он у меня тоже работает. А можете PRG выложить ?
| |
|
SergKis
|
| постоянный участник
|
Пост N: 91
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.01.13 10:00. Заголовок: Andrey пишет:А может..
Andrey пишет: #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 */ он взят из Вашего поста где-то выше. Andrey попробуйте у себя в demo.prg заменить текст кнопки третьей на текст: @ 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() )
| |
|
SergKis
|
| постоянный участник
|
Пост N: 92
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.01.13 10:04. Заголовок: SergKis пишет:в demo..
SergKis пишет: цитата: | в demo.prg заменить текст |
| demo.prg из архива моей сборки.
| |
|
Andrey
|
| постоянный участник
|
Пост N: 2566
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.01.13 10:14. Заголовок: SergKis пишет: он в..
SergKis пишет: цитата: | он взят из Вашего поста где-то выше. |
| Да это я помню. Я его собрал заново на сборке 2.1.8. - НЕ РАБОТАЕТ !!! Т.е. вы внесли изменения в свою сборку и теперь в стандартных сборках кнопки положенные на LABEL не работают, а у вас работает. Правильно или нет ?
| |
|
SergKis
|
| постоянный участник
|
Пост N: 93
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.01.13 11:11. Заголовок: Andrey пишет:Правиль..
Andrey пишет: Я взял Ваш текст prg из поста, закоментировал hb_fun GetClient...() (они в lib у меня), собрал demoA.exe и все.
| |
|
SergKis
|
| постоянный участник
|
Пост N: 94
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.01.13 12:14. Заголовок: Andrey попробуйте со..
| |
|
a_sidorov
|
| |
Пост N: 30
Зарегистрирован: 07.06.08
|
|
Отправлено: 18.01.13 13:18. Заголовок: Это известная пробле..
Это известная проблема - Мышка в minigui работает на объекте, который положил раньше, то есть нижнем. Попробуй сделать nLblY1 := 50 , чтобы половина кнопки была не на label, тогда мышка будет работать на половине кнопки (верхней)
| |
|
a_sidorov
|
| |
Пост N: 31
Зарегистрирован: 07.06.08
|
|
Отправлено: 18.01.13 13:49. Заголовок: Поставь самым первым..
Поставь самым первым объектом кнопку - тогда будет работать. То есть объект, на который должна срабатывать кнопка нужно класть на форму раньше. Мышка срабатывает не по видимости на экране, а по порядку выкладки на форму. Это неправильно, но это так.
| |
|
|
Andrey
|
| постоянный участник
|
Пост N: 2567
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.01.13 14:28. Заголовок: a_sidorov пишет: Мы..
a_sidorov пишет: цитата: | Мышка срабатывает не по видимости на экране, а по порядку выкладки на форму. Это неправильно, но это так. |
| Спасибо БОЛЬШОЕ !!!
| |
|
SergKis
|
| постоянный участник
|
Пост N: 95
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.01.13 14:54. Заголовок: Andrey попробуйте со..
| |
|
Andrey
|
| постоянный участник
|
Пост N: 2568
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.01.13 15:31. Заголовок: Собрал. Вот он http:..
| |
|
SergKis
|
| постоянный участник
|
Пост N: 96
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.01.13 18:22. Заголовок: Andrey пишет:Собрал...
Andrey пишет: Спасибо, не мог понять, что не работает. Думаю это к Григорию надо обращаться. У нас ComboBox и GetBox (его мы правили) на таком Label работают.
| |
|
Andrey
|
| постоянный участник
|
Пост N: 2570
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.01.13 18:51. Заголовок: a_sidorov пишет: М..
a_sidorov пишет: цитата: | Мышка срабатывает не по видимости на экране, а по порядку выкладки на форму. Это неправильно, но это так. |
| SergKis пишет: цитата: | Думаю это к Григорию надо обращаться. |
| Григорий, подскажите что делать ?
| |
|
gfilatov2002
|
| moderator
|
Пост N: 441
Зарегистрирован: 11.02.10
|
|
Отправлено: 18.01.13 19:33. Заголовок: Andrey пишет: Григо..
Andrey пишет: цитата: | Григорий, подскажите что делать ? |
| Хе-хе... Я так понимаю, что SergKis удалось решить эту проблему в своей сборке Так что ждем от него описание выполненных модификаций по поводу Andrey пишет: цитата: | в стандартных сборках кнопки положенные на LABEL не работают |
|
| |
|
SergKis
|
| постоянный участник
|
Пост N: 97
Зарегистрирован: 17.02.12
|
|
Отправлено: 19.01.13 00:18. Заголовок: gfilatof2002 пишет:Х..
gfilatof2002 пишет: Я уже сам понял - надо у себя рыть и вспоминать, что меняли (воз и маленькую тележку) ...
| |
|
Andrey
|
| постоянный участник
|
Пост N: 2573
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.01.13 01:41. Заголовок: Конечно если пользов..
Конечно если пользоваться 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
|
| постоянный участник
|
Пост N: 2574
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.01.13 02:43. Заголовок: Имею такой код: DEF..
Имею такой код: 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
| |
|
Ответов - 301
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
All
[только новые]
|
|
|