Автор | Сообщение |
Andrey
|
| постоянный участник
|
Пост N: 1929
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.11.11 21:36. Заголовок: Примеры из Минигуи -ошибки, вопросы.....
Всем привет. Взялся смотреть примеры из МиниГуи, так не все работают. Может кто подскажет что там "допилить" нужно ? А заодно может и исправить и добавить новые.... Очень красочный пример: \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
|
| постоянный участник
|
Пост N: 77
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.01.13 17:52. Заголовок: Andrey пишет:когда ф..
Andrey пишет: цитата: | когда форму раздвигаешь ... |
| Вопрос Resize довольно сложный ... Мы решаем в основном за счет изменения размеров Browse, оставляя остальные части неизменными или как в данном примере - за счет нижней части: #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 ; 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 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) Return
| |
|
Andrey
|
| постоянный участник
|
Пост N: 2557
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.01.13 18:05. Заголовок: SergKis пишет: Вопр..
SergKis пишет: цитата: | Вопрос Resize довольно сложный ... |
| Спасибо БОЛЬШОЕ ! То что надо !!! Очень многое Вы мне прояснили.... Очень жалко что нет таких примеров в поставке Минигуи !
| |
|
SergKis
|
| постоянный участник
|
Пост N: 78
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.01.13 18:15. Заголовок: Andrey пишет:Очень м..
Andrey пишет: цитата: | Очень многое Вы мне прояснили.... |
| Рад был помочь. Сами недавно сталкивались с такими вопросами. Помогла работа на VO. Andrey пишет: цитата: | Очень жалко что нет таких примеров в поставке Минигуи ! |
| Оформите и отдайте Григорию, если он сочтет полезным - включит.
| |
|
gfilatov2002
|
| moderator
|
Пост N: 440
Зарегистрирован: 11.02.10
|
|
Отправлено: 15.01.13 18:37. Заголовок: Andrey пишет: Очень..
Andrey пишет: цитата: | Очень жалко что нет таких примеров в поставке Минигуи |
| Ну, почему же нет ? Подобный пример использования события ON RESIZE есть в папке samples\Basic\GetClientSize
| |
|
Andrey
|
| постоянный участник
|
Пост N: 2558
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.01.13 18:56. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Подобный пример использования события ON RESIZE есть в папке samples\Basic\GetClientSize |
| Ой, не нашел... Спасибо Григорий !
| |
|
Andrey
|
| постоянный участник
|
Пост N: 2559
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.01.13 19:41. Заголовок: Видоизменил 1-ый при..
Видоизменил 1-ый пример (без RESIZE), положил на форму 3 кнопки. Не работают эти новые кнопки !!! Что не так делаю ? Скрытый текст #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 ; TITLE 'Test Label box' ; NOMAXIMIZE NOSIZE ; MAIN 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 BACKCOLOR aLblC1 @ 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 BACKCOLOR aLblC2 @ 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 BACKCOLOR aLblC3 @ 20 , 160 BUTTON Button_1 CAPTION 'BORDER ON' ; ACTION { || SetProperty(cWnd, cLblN3, "BORDER" , .T.), SetProperty(cWnd, "Label_2", "Value" , "ON" ) } @ 60 , 160 BUTTON Button_2 CAPTION 'BORDER OFF' ; ACTION { || SetProperty(cWnd, cLblN3, "BORDER" , .F.), SetProperty(cWnd, "Label_2", "Value" , "OFF" ) } @ nCliH - 60 , nCliW - 120 BUTTON Button_3 CAPTION 'Cancel' ; ACTION ThisWindow.Release @ 40,300 LABEL Label_1 ; VALUE 'BORDER:'AUTOSIZE BACKCOLOR aLblC1 @ 40,410 LABEL Label_2 ; VALUE '' BACKCOLOR aLblC1 END WINDOW ACTIVATE WINDOW &cWnd Return #pragma BEGINDUMP #include <windows.h> #include "hbapi.h" // C функции, если их нет 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
|
| |
|
SergKis
|
| постоянный участник
|
Пост N: 79
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.01.13 21:21. Заголовок: 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 ; 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 x += 10 + GetProperty(cWnd, j, "Width") j := cWnd + '_Frame_Btn1_Ok' @ y, x BUTTON &( j ) CAPTION "OK" WIDTH w HEIGHT h ; ACTION ( SetProperty(cWnd, "Label_1", "Value", "LINE"), ; SetProperty(cWnd, "Label_2", "Value", "ON" ) ) @ 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 x += 10 + GetProperty(cWnd, j, "Width") j := cWnd + '_Frame_Btn2_Ok' @ y, x BUTTON &( j ) CAPTION "OK" WIDTH w HEIGHT h ; ACTION ( SetProperty(cWnd, "Label_1", "Value", "BORDER"), ; SetProperty(cWnd, "Label_2", "Value", "OFF" ) ) @ 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 x += 10 + GetProperty(cWnd, j, "Width") j := cWnd + '_Frame_Btn3_Ok' @ y, x BUTTON &( j ) CAPTION "OK" WIDTH w HEIGHT h ; ACTION ( MsgInfo("Press button "+j) ) @ 40, 110 LABEL Label_1 VALUE 'BORDER:' ; WIDTH w HEIGHT h ; BACKCOLOR aLblC1 @ 70, 110 LABEL Label_2 VALUE 'OFF' ; WIDTH w HEIGHT h ; BACKCOLOR aLblC1 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) Return Andrey пишет: цитата: | ACTION { || SetProperty(cWnd, cLblN3, "BORDER" , .T.), SetProperty(cWnd, "Label_2", "Value" , "ON" ) } |
| Что такое SetProperty(cWnd, cLblN3, "BORDER" , .T.) ? Мы AUTOSIZE не используем в нашей версии он глючит при отображении ...
| |
|
SergKis
|
| постоянный участник
|
Пост N: 80
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.01.13 21:27. Заголовок: Andrey пишет:Не нрав..
Andrey пишет: цитата: | Не нравиться порядок написания программ в МиниГуи... уж очень растянуто получается... Подскажите можно ли как то уменьшить или изменить это ? |
| Можно пойти по такому пути: Скрытый текст
В реальной программе, я думаю, имена переменных контролов НЕ НАДО писать cWnd+'_Frame_Text2' и т.д. Можно писать смысловое название переменной без названия окна, сгруппировав по темам. Расмотрим поля базы клиентов: Текст для Label : FieldName : Label переменная : GetBox переменная ------------------------------------------------------------------- Код организации INN Klient_Lbl_INN Klient_Get_INN Наименование NAME Klient_Lbl_NAME Klient_Get_NAME ... Можно написать функции на эти контролы: Function Klient_Lbl_INN( y, x, Value, ... ) Local w := 100, h := 24, cElm, cWnd, nW, nH Default Value To "Код организации" cWnd := _HMG_ThisFormName cElm := 'Klient_Lbl_INN' @ y, x LABEL &cElm VALUE Value WIDTH w HEIGHT h nW := GetProperty(cWnd, cElm, "Width") nH := GetProperty(cWnd, cElm, "Height") Return { nW, nH } Function Klient_Get_INN( y, x, cFld, ... ) Local w := 100, h := 24, cElm, cWnd, nW, nH cWnd := _HMG_ThisFormName cElm := 'Klient_Get_INN' cFld := 'KLI->INN' @ y, x GETBOX &cElm HEIGHT h WIDTH w ; FIELD cFld ; VALID ( ... ) ; VALIDMESSAGE "Error INN" ; ... nW := GetProperty(cWnd, cElm, "Width") nH := GetProperty(cWnd, cElm, "Height") Return { nW, nH } и т.д. Тогда на разных окнах можно использовать эти функции. Окна: - Справочник cWnd := Klient_Spr - Документы: cWnd := Dokum_Prixod, cWnd := Dokum_Raxod ... Пример: Local nGapsW := 10 // промежуток между контролами Widtn Local nGapsH := 10 // промежуток между контролами Height ... @ nLblY1, nLblX1 LABEL &cLblN1 VALUE "" OF &cWnd ; WIDTH nLblW1 HEIGHT nLblH1 ; BACKCOLOR aLblC1 BORDER CLIENTEDGE i := GetControlIndex(cLblN1, cWnd) y := _HMG_aControlRow [ i ] + nGapsW x := _HMG_aControlCol [ i ] + nGapsW j := Klient_Lbl_INN( y, x ); x += j[1] + nGapsW j := Klient_Get_INN( y, x ) y += j[2] + nGapsH x := _HMG_aControlCol [ i ] + nGapsW j := Klient_Lbl_Name( y, x ); x += j[1] + nGapsW j := Klient_Get_Name( y, x ) y += j[2] + nGapsH x := _HMG_aControlCol [ i ] + nGapsW ...
|
| |
|
Andrey
|
| постоянный участник
|
Пост N: 2560
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.01.13 05:43. Заголовок: SergKis пишет: Что ..
SergKis пишет: цитата: | Что такое SetProperty(cWnd, cLblN3, "BORDER" , .T.) ? |
| Да я хотел на кнопку повесить включение/отключение бордюра ..... BORDER CLIENTEDGE как в примере MiniGUI\SAMPLES\BASIC\BLINK Только по доку потом увидел что нет такого свойства у LABEL .... А жалко...
| |
|
SergKis
|
| постоянный участник
|
Пост N: 81
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.01.13 11:42. Заголовок: Andrey пишет:А жалко..
Andrey пишет: Вы хотите типа такое: #include "minigui.ch" Function Main() Local i,j,y,x,w,h,t Local cWnd,hWnd,nCliW,nCliH,nGapsW,nGapsH Local cLblN1,nLblW1,nLblH1,nLblY1,nLblX1,aLblC1 Local cLblN2,nLblW2,nLblH2,nLblY2,nLblX2,aLblC2 Local cLblN3,nLblW3,nLblH3,nLblY3,nLblX3,aLblC3 cWnd := "MyWnd" nGapsW := 14 nGapsH := 14 DEFINE WINDOW &cWnd ; AT 40, 50 ; WIDTH 480 ; HEIGHT 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) y := 0 x := int(nGapsH / 2) w := GetClientWidth (_HMG_aControlHandles [ i ]) - int(nGapsW / 2) h := GetClientHeight(_HMG_aControlHandles [ i ]) @ y, x FRAME &( cWnd + '_Frame_Frm1' ) CAPTION "" ; WIDTH w HEIGHT h ; OPAQUE j := cWnd + '_Frame_Text1' t := "Hello Frame 1" y := _HMG_aControlRow [ i ] + nGapsH x := _HMG_aControlCol [ i ] + nGapsW w := 100 h := 24 @ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h x += 10 + GetProperty(cWnd, j, "Width") j := cWnd + '_Frame_Btn1_Ok' @ y, x BUTTON &( j ) CAPTION "OK" WIDTH w HEIGHT h ; ACTION ( SetProperty(cWnd, "Label_1", "Value", "LINE"), ; SetProperty(cWnd, "Label_2", "Value", "ON" ) ) @ 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 ] + nGapsH x := _HMG_aControlCol [ i ] + nGapsW w := 100 h := 24 @ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h x += 10 + GetProperty(cWnd, j, "Width") j := cWnd + '_Frame_Btn2_Ok' @ y, x BUTTON &( j ) CAPTION "OK" WIDTH w HEIGHT h ; ACTION ( SetProperty(cWnd, "Label_1", "Value", "BORDER"), ; SetProperty(cWnd, "Label_2", "Value", "OFF" ) ) @ 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 ] + nGapsH x := _HMG_aControlCol [ i ] + nGapsW w := 100 h := 24 @ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h x += 10 + GetProperty(cWnd, j, "Width") j := cWnd + '_Frame_Btn3_Ok' @ y, x BUTTON &( j ) CAPTION "OK" WIDTH w HEIGHT h ; ACTION ( SetProperty(cWnd, cWnd + '_Frame_Frm1', "Visible", ; ! GetProperty(cWnd, cWnd + '_Frame_Frm1', "Visible")) ) // ACTION ( MsgInfo("Press button "+j) ) @ 40, 110 LABEL Label_1 VALUE 'BORDER:' ; WIDTH w HEIGHT h ; BACKCOLOR aLblC1 @ 70, 110 LABEL Label_2 VALUE 'OFF' ; WIDTH w HEIGHT h ; BACKCOLOR aLblC1 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) Return Можно смотреть в сторону команд (i_graph.ch): DRAW LINE IN WINDOW ... DRAW RECTANGLE IN WINDOW ...
| |
|
Andrey
|
| постоянный участник
|
Пост N: 2561
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.01.13 14:09. Заголовок: А как тогда сделать ..
А как тогда сделать перерисовку всего лабела ? Типа: IF nFlagBorder == 1 @ nLblY1, nLblX1 LABEL &cLblN1 VALUE "" OF &cWnd ; WIDTH nLblW1 HEIGHT nLblH1 ; BACKCOLOR aLblC1 ELSEIF nFlagBorder == 2 @ nLblY1, nLblX1 LABEL &cLblN1 VALUE "" OF &cWnd ; WIDTH nLblW1 HEIGHT nLblH1 ; BACKCOLOR aLblC1 BORDER ELSEIF nFlagBorder == 3 @ nLblY1, nLblX1 LABEL &cLblN1 VALUE "" OF &cWnd ; WIDTH nLblW1 HEIGHT nLblH1 ; BACKCOLOR aLblC1 BORDER CLIENTEDGE ENDIF
| |
|
|
SergKis
|
| постоянный участник
|
Пост N: 82
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.01.13 16:01. Заголовок: Andrey пишет:А как т..
Andrey пишет: цитата: | А как тогда сделать перерисовку всего лабела ? |
| Пример: #include "minigui.ch" Function Main() Local i,j,y,x,w,h,t Local cWnd,hWnd,nCliW,nCliH,nGapsW,nGapsH Local cLblN1,nLblW1,nLblH1,nLblY1,nLblX1,aLblC1 Local cLblN2,nLblW2,nLblH2,nLblY2,nLblX2,aLblC2 Local cLblN3,nLblW3,nLblH3,nLblY3,nLblX3,aLblC3 cWnd := "MyWnd" nGapsW := 14 nGapsH := 14 DEFINE WINDOW &cWnd ; AT 40, 50 ; WIDTH 480 ; HEIGHT 410 ; TITLE 'Test Label box' ; MAIN ; NOMINIMIZE ; NOMAXIMIZE ; NOSIZE // 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 + "1") VALUE "" OF &cWnd ; WIDTH nLblW1 HEIGHT nLblH1 ; BACKCOLOR aLblC1 BORDER CLIENTEDGE SetProperty(cWnd, cLblN1 + "1", "Visible", .F.) @ nLblY1, nLblX1 LABEL &( cLblN1 + "0") VALUE "" OF &cWnd ; WIDTH nLblW1 HEIGHT nLblH1 ; BACKCOLOR aLblC1 // BORDER CLIENTEDGE i := GetControlIndex(cLblN1 + "0", cWnd) j := cWnd + '_Frame_Text1' t := "Hello Frame 1" y := _HMG_aControlRow [ i ] + nGapsH x := _HMG_aControlCol [ i ] + nGapsW w := 100 h := 24 @ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h x += 10 + GetProperty(cWnd, j, "Width") j := cWnd + '_Frame_Btn1_Ok' @ y, x BUTTON &( j ) CAPTION "OK" WIDTH w HEIGHT h ; ACTION ( SetProperty(cWnd, "Label_1", "Value", "LINE"), ; SetProperty(cWnd, "Label_2", "Value", "ON" ) ) @ 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 ] + nGapsH x := _HMG_aControlCol [ i ] + nGapsW w := 100 h := 24 @ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h x += 10 + GetProperty(cWnd, j, "Width") j := cWnd + '_Frame_Btn2_Ok' @ y, x BUTTON &( j ) CAPTION "OK" WIDTH w HEIGHT h ; ACTION ( SetProperty(cWnd, "Label_1", "Value", "BORDER"), ; SetProperty(cWnd, "Label_2", "Value", "OFF" ) ) @ 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 ] + nGapsH x := _HMG_aControlCol [ i ] + nGapsW w := 100 h := 24 @ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h x += 10 + GetProperty(cWnd, j, "Width") j := cWnd + '_Frame_Btn3_Ok' @ 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")), ; Lbl1Refr() ) @ 40, 110 LABEL Label_1 VALUE 'BORDER:' ; WIDTH w HEIGHT h ; BACKCOLOR aLblC1 @ 70, 110 LABEL Label_2 VALUE 'OFF' ; WIDTH w HEIGHT h ; BACKCOLOR aLblC1 END WINDOW ACTIVATE WINDOW &cWnd Return Function Lbl1Refr() Local cWnd := _HMG_ThisFormName DoMethod(cWnd, cWnd + '_Frame_Text1', "Refresh") SetProperty(cWnd, cWnd + '_Frame_Btn1_Ok', "Enabled", .T.) Return
| |
|
Andrey
|
| постоянный участник
|
Пост N: 2562
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.01.13 18:00. Заголовок: Нет, не перерисовыва..
Нет, не перерисовывается ! Кнопка закрыта и все ! Вот даже если взять предыдущий пример, кнопка Cancel - не работает ! А почему ? Скрытый текст #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
|
| |
|
SergKis
|
| постоянный участник
|
Пост N: 83
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.01.13 22:40. Заголовок: Andrey пишет:не рабо..
Andrey пишет: Собрал примеры Сборка hb20, msvc, miniGui 2.07 сборка своя. В Label след.изменения: Function OLABELEVENTS( hWnd, nMsg, wParam, lParam ) *-----------------------------------------------------------------------------* Local i := ascan ( _HMG_aControlHandles, hWnd ) HB_SYMBOL_UNUSED( wParam ) HB_SYMBOL_UNUSED( lParam ) if i > 0 If nMsg == WM_MOUSEMOVE _DoControlEventProcedure ( _HMG_aControlGotFocusProcedure , i ) ElseIf nMsg == WM_MOUSELEAVE _DoControlEventProcedure ( _HMG_aControlLostFocusProcedure , i ) ElseIf nMsg == WM_HMG_NOTIFY_LBL // BAA IF ValType( _HMG_aControlMiscData1 [4] )=='B' _DoControlEventProcedure( _HMG_aControlMiscData1[4], i ) ELSE MoveWindow( _HMG_aControlHandles, ; // hWnd _HMG_aControlCol, ; // X _HMG_aControlRow, ; // Y _HMG_aControlWidth, ; // W _HMG_aControlHeight, .T. ) // W SetWindowText( _HMG_aControlHandles, ; // hWnd _HMG_aControlCaption ) // Text ENDIF EndIf endif Return 0
| |
|
SergKis
|
| постоянный участник
|
Пост N: 84
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.01.13 23:00. Заголовок: В догонку. Еще измен..
В догонку. Еще изменен h_label.prg: Function _DefineLabel (...) ... _HMG_aControlMiscData1 [k] := ; { 0, ; blink, ; // 2. .T. - нужно моргать .T., ; // 3. .T./.F. - при моргании состояние Вкл./Выкл. NIL } // 4. Блок или NIL - выполнить перепоказ имея в виду что возможно изменились x,y,w,h текст // 4. Блок или NIL - выполнить ... в данных примерах не использовалось.
| |
|
SergKis
|
| постоянный участник
|
Пост N: 85
Зарегистрирован: 17.02.12
|
|
Отправлено: 17.01.13 08:43. Заголовок: И еще вдогонку: #def..
И еще вдогонку: #define WM_APP 0x8000 // Это WinAPI #define WM_HMG_NOTIFY (WM_APP+100) #define WM_HMG_NOTIFY_LBL (WM_HMG_NOTIFY+1) // Перепоказ для Label
| |
|
SergKis
|
| постоянный участник
|
Пост N: 86
Зарегистрирован: 17.02.12
|
|
Отправлено: 17.01.13 09:23. Заголовок: Andrey пишет:не рабо..
Andrey пишет: Каюсь. Совсем забыл об изменениях, сделанных в своей сборке, но это было май-июнь прошлого года. Если Григорий почитает это полезным, то: // 4. Блок или NIL - выполнить перепоказ ... - это блок кода, вызываемый при изменении (например текста) в котором можно обновить данные других контролов, связанных с измененным Label. Например при смене кода карточки запустить перепоказ остальных данных по ней.
| |
|
Andrey
|
| постоянный участник
|
Пост N: 2563
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.01.13 12:37. Заголовок: SergKis пишет: Каюс..
SergKis пишет: цитата: | Каюсь. Совсем забыл об изменениях, сделанных в своей сборке, но это было май-июнь прошлого года. |
| А я уж думал совсем заработался... У вас работает , а у меня нет... Ну уж я не совсем криворукий... Так что же делать ? SergKis пишет: цитата: | Если Григорий почитает это полезным |
| Присоединяюсь ! Большая просьба внести это изменение !!!
| |
|
SergKis
|
| постоянный участник
|
Пост N: 87
Зарегистрирован: 17.02.12
|
|
Отправлено: 17.01.13 13:54. Заголовок: Andrey в сборке прим..
Andrey в сборке примеров, как ведет себя demo.exe (demo.prg) - нормально работает или нет (рамка на первом Label меняется по нижней кнопке Ok) ? Если да, то у Вас тоже сборка должна работать ( нет ReSize() ). Попробуйте.
| |
|
SergKis
|
| постоянный участник
|
Пост N: 88
Зарегистрирован: 17.02.12
|
|
Отправлено: 17.01.13 14:04. Заголовок: SergKis пишет:это бл..
SergKis пишет: цитата: | это блок кода, вызываемый при изменении ... |
| Я поговорил со своим товарищем - это были мысль неправильная, по знаниям на май прошлого года, нигде не примененная. Короче, эту отсебятину надо игнорировать. А нормальный ON CHANGE не помешал бы.
| |
|
Ответов - 301
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
All
[только новые]
|
|
|