On-line: Haz, гостей 1. Всего: 2 [подробнее..]
АвторСообщение
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.



Спасибо: 0 
Профиль
Ответов - 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) и поэтому куда-то меня вчера унесло. Извиняте товарищи ...

Спасибо: 0 
Профиль
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 ?
Скрытый текст

Как сделать чтоб кнопки заработали в стандартном MiniGUI Extended Edition 2.1.8 - 2012.12.12 ???


Спасибо: 0 
Профиль
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() )



Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2565
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.01.13 09:12. Заголовок: SergKis пишет: В мо..


SergKis пишет:

 цитата:
В моей сборке это DemoA.exe (prg не положил в архив). Думаю он работает.


Да он у меня тоже работает. А можете PRG выложить ?


Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 91
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.01.13 10:00. Заголовок: Andrey пишет:А может..


Andrey пишет:
 цитата:
А можете PRG выложить ?


 
#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() )


Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 92
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.01.13 10:04. Заголовок: SergKis пишет:в demo..


SergKis пишет:
 цитата:
в demo.prg заменить текст


demo.prg из архива моей сборки.

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2566
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.01.13 10:14. Заголовок: SergKis пишет: он в..


SergKis пишет:

 цитата:
он взят из Вашего поста где-то выше.


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


Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 93
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.01.13 11:11. Заголовок: Andrey пишет:Правиль..


Andrey пишет:
 цитата:
Правильно или нет ?


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

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 94
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.01.13 12:14. Заголовок: Andrey попробуйте со..


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

Спасибо: 0 
Профиль
a_sidorov



Пост N: 30
Зарегистрирован: 07.06.08
ссылка на сообщение  Отправлено: 18.01.13 13:18. Заголовок: Это известная пробле..


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

Спасибо: 0 
Профиль
a_sidorov



Пост N: 31
Зарегистрирован: 07.06.08
ссылка на сообщение  Отправлено: 18.01.13 13:49. Заголовок: Поставь самым первым..


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


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2567
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.01.13 14:28. Заголовок: a_sidorov пишет: Мы..


a_sidorov пишет:

 цитата:
Мышка срабатывает не по видимости на экране, а по порядку выкладки на форму. Это неправильно, но это так.


Спасибо БОЛЬШОЕ !!!

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 95
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.01.13 14:54. Заголовок: Andrey попробуйте со..


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

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2568
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.01.13 15:31. Заголовок: Собрал. Вот он http:..

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 96
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.01.13 18:22. Заголовок: Andrey пишет:Собрал...


Andrey пишет:
 цитата:
Собрал.


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

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2570
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.01.13 18:51. Заголовок: a_sidorov пишет: М..


a_sidorov пишет:

 цитата:
Мышка срабатывает не по видимости на экране, а по порядку выкладки на форму. Это неправильно, но это так.


SergKis пишет:

 цитата:
Думаю это к Григорию надо обращаться.


Григорий, подскажите что делать ?


Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 441
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 18.01.13 19:33. Заголовок: Andrey пишет: Григо..


Andrey пишет:

 цитата:
Григорий, подскажите что делать ?


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

 цитата:
в стандартных сборках кнопки положенные на LABEL не работают




Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 97
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.01.13 00:18. Заголовок: gfilatof2002 пишет:Х..


gfilatof2002 пишет:
 цитата:
Хе-хе...


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


Спасибо: 0 
Профиль
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)
и т.д.
Но для простых примеров хочется использовать обычные функции МиниГуи....

Спасибо: 0 
Профиль
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




Спасибо: 0 
Профиль
Ответов - 301 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 167
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет