On-line: гостей 2. Всего: 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 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]


SergKis



Пост N: 1673
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.12.17 08:43. Заголовок: Andrey пишет При PRI..


Andrey пишет
 цитата:
При PRIVATE nMsg := 0 - ошибка компиляции:


смени режим компиляции или пиши как требует уст. компиляции

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



Пост N: 1674
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.12.17 08:46. Заголовок: Andrey пишет А с как..


Andrey пишет
 цитата:
А с каких пор для PRIVATE переменных можно ставить m-> ?
Я всегда ставил только для PUBLIC ....


Со времен Summer 87

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3651
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 18.12.17 11:03. Заголовок: Andrey пишет: Делаю..


Andrey пишет:

 цитата:
Делаю контекстное меню. Не могу получить значение выбираемого меню.
Вот код:


STATIC nStatRet := 0
.....
DEFINE CONTEXT MENU OF &cForm
FOR nI := 1 TO LEN(aMenuItem)
cMenu := aMenuItem[nI]
cName := "MyMenuItem" + HB_NtoS(nI)
bAction := &( '{|| nStatRet := VAL( "' + HB_NtoS(nI) + '" ) }' )
cImg := aMenuImg[nI]
lChk := .F.
lDis := .F.
_DefineMenuItem( cMenu, bAction, cName, cImg, lChk, lDis, , Font1 , , .F., .F. )
NEXT
SEPARATOR
MENUITEM "Выход" ACTION {|| nStatRet := 0 } FONT Font2 IMAGE aMenuImg[nLen]
END MENU

_ShowContextMenu(cForm, nY, nX, .f. ) // ПОКАЗ ВЫПАДАЕЩЕГО МЕНЮ
InkeyGui(100)

? nStatRet, VALTYPE(nStatRet)


Почему то всегда возвращает 0 ?



Вклинюсь в вашу беседу. Маленький совет.

Вместо такого кода (я конечно понимаю, что нормальные герои всегда идут в обход, но..)

bAction := &( '{|| nStatRet := VAL( "' + HB_NtoS(nI) + '" ) }' )

лучше так:

bAction := GetStatBlock(nI)
...
Static func GetStatBlock(nI)
Return {|| nStatRet := nI}

Это прямой путь без всяких макросов и сомнительных конструкций через з.. Val и hb_NTOS

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



Пост N: 1675
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.12.17 11:42. Заголовок: Pasha :sm36: По м..


Pasha
По мне исп. в данном случае static переменной - лишнее.
А без макросов можно hb_macroBlock(сVal) использовать

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



Пост N: 1676
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.12.17 11:53. Заголовок: PS Если применить вм..


PS
Если применить вместо
 
cName := "MyMenuItem" + HB_NtoS(nI)
bAction := &( '{|| nStatRet := VAL( "' + HB_NtoS(nI) + '" ) }' )
это
cName := StrZero(nI, 3)
bAction := {|| MyContextMenu() } )
то
Static Func MyContextMenu()
Local cForm := ThisWindow.Name // _HMG_ThisFormName
Local cItem := This.Name // _HMG_ThisControlName
Local nItem := Val(cItem)
...






Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3652
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 18.12.17 14:05. Заголовок: Макросы, private/pub..


Макросы, private/public переменные... Это все стиль программирования, который имело смысл использовать до 1990-го года, когда появился клиппер 5
А с тех пор прошло все-таки 27 (двадцать семь, Карл!) лет.
Контекстное меню - это, как я понимаю, popup-меню.
В bAction заполняется номер выбранного пункта меню. Затем, надо полагать, в зависимости от номера выполняется какое-то действие.
Почему бы сразу не задать в bAction это действие ? Т.е., кроме массива aMenuItem с названиями элементов меню передавать еще и массив блоков кода с действиями для этих элементов меню,
или двумерный массив: имя и блок кода действие для этого элемента.
Это еще более спрямит очень уж долгий путь к нужному результату.

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




Пост N: 5638
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.12.17 23:57. Заголовок: Pasha пишет: Почему..


Pasha пишет:

 цитата:
Почему бы сразу не задать в bAction это действие ?


Это у меня функция для 3-х разных кнопок и картинке.
При выборе позиций меню, кнопки/картинки перерисовываются.
Из-за этого и не захотел дублировать одну функцию.


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



Пост N: 1677
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.12.17 11:14. Заголовок: Andrey пишет не захо..


Andrey пишет
 цитата:
не захотел дублировать одну функцию


Pasha об этом
 
...
FOR nI := 1 TO LEN(aMenuItem)
cMenu := aMenuItem[nI]
cName := "MyMenuItem" + HB_NtoS(nI)
bAction := aMenuBlock[nI] // &( '{|| nStatRet := VAL( "' + HB_NtoS(nI) + '" ) }' )
cImg := aMenuImg[nI]
...

передавай сразу, что выполнять из 3-х мест и дублироваться не будет.

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




Пост N: 5639
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 19.12.17 15:31. Заголовок: SergKis пишет: пер..


SergKis пишет:

 цитата:

передавай сразу, что выполнять из 3-х мест и дублироваться не будет.



Это не всегда удобно и необходимо.

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




Пост N: 5643
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.12.17 12:12. Заголовок: Сделал небольшой тес..


Сделал небольшой тест - https://cloud.mail.ru/public/74it/5ovNT4GDk
Не могу добиться смены фона на КНОПКЕ.
Что там не так делаю ?

Вот текст кода:
         @ 140, 110 BUTTONEX Button_S1 WIDTH 400 HEIGHT nFontSize*2  ; 
..........
FONTCOLOR BLACK BACKCOLOR YELLOW ;
NOHOTLIGHT NOXPSTYLE HANDCURSOR NOTABSTOP ;
On MouseHover {|| BFInvertObject({YELLOW,BLACK}) } ;
On MouseLeave {|| BFInvertObject({BLACK,YELLOW}) } ;
ACTION { || .... }


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




Пост N: 1213
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 20.12.17 17:16. Заголовок: Andrey пишет: Что т..


Andrey пишет:

 цитата:
Что там не так делаю ?


Убери из определения кнотки класс NOHOTLIGHT
         @ 140, 110 BUTTONEX Button_S1 WIDTH 400 HEIGHT nFontSize*2  ; 
CAPTION aDim3[nI3] SIZE nFontSize ;
FONTCOLOR BLACK BACKCOLOR YELLOW ;
/*NOHOTLIGHT*/ NOXPSTYLE HANDCURSOR NOTABSTOP ;
и все заработает

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




Пост N: 5644
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.12.17 17:52. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
и все заработает


Опять пролетел... А за что он хоть отвечает ?
Можно чуток подробнее про него ?

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




Пост N: 1214
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 21.12.17 10:50. Заголовок: Andrey пишет: Можно..


Andrey пишет:

 цитата:
Можно чуток подробнее про него ?


Если указан класс NOHOTLIGHT, то не создается подсветка контура кнопки при наведени мыши на кнопку.

Поправил: сделал событие ON MOUSEHOVER независимым от указания класса NOHOTLIGHT для ButtonEx.

Благодарю за наводку


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




Пост N: 5645
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.12.17 12:46. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Поправил: сделал событие ON MOUSEHOVER независимым от указания класса NOHOTLIGHT для ButtonEx.


Это будет доступно в следующей версии ?

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




Пост N: 1215
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 21.12.17 13:27. Заголовок: Andrey пишет: Это б..


Andrey пишет:

 цитата:
Это будет доступно в следующей версии ?


Да, конечно.
Как раз сегодня подготовил первую бетку для следующей сборки

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




Пост N: 5646
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.12.17 17:06. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Как раз сегодня подготовил первую бетку для следующей сборки



Положи туда пример - Colored_Tab2. Правда его ещё доделать надо на показ/скрытие вкладок Tab.
А так этот пример очень показателен. Пока дошёл как нужно работать с Tab, очень много времени потратил.
Теперь можно на базе этого примера сразу делать большие программы.

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




Пост N: 5713
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.02.18 22:21. Заголовок: Всем привет ! Столк..


Всем привет !

Столкнулся с проблемой, не знаю как решить.
Есть у меня в программе окно, создаётся так:
   DEFINE WINDOW Form_Report           ; 
......
WINDOWTYPE STANDARD TOPMOST ;
NOMAXIMIZE NOSIZE NOSYSMENU ;
.....
DEFINE WINDOW Win_2 ;
... ;
WINDOWTYPE PANEL

..........
END WINDOW
....
hWnd := GetFormHandle('Win_2')
ON KEY PRIOR ACTION SendMessage( hWnd, WM_VSCROLL, SB_PAGEUP, 0 )
ON KEY NEXT ACTION SendMessage( hWnd, WM_VSCROLL, SB_PAGEDOWN, 0 )
ON KEY UP ACTION SendMessage( hWnd, WM_VSCROLL, SB_LINEUP, 0 )
ON KEY DOWN ACTION SendMessage( hWnd, WM_VSCROLL, SB_LINEDOWN, 0 )

END WINDOW

Окно прекрасно работает, но если открыто другое окно:
    DEFINE WINDOW &cFormName ; 
.........
WINDOWTYPE STANDARD TOPMOST ;
NOMAXIMIZE NOSIZE ;
...
DEFINE TBROWSE oBrw ;
....
END TBROWSE
....
END WINDOW

то программа падает с ошибкой:
Error MGERROR/0 Form Win_2 is not defined. Program terminated.
Called from MSGMINIGUIERROR(97) in module: h_error.prg
Called from GETFORMHANDLE(2209) in module: h_windows.prg
Called from SHOW_REPORT2(261) in module: Source\form_report.prg
Called from SHOW_REPORT(118) in module: Source\form_report.prg
Called from (b)HB_MACROBLOCK(0)


Строка 261 в SHOW_REPORT2(261) такая:
       hWnd := GetFormHandle('Win_2') 

Почему падает ? Или нужно по другому делать ?

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


Пост N: 774
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 04.02.18 20:26. Заголовок: А окно объявлено ? D..


А окно объявлено ?

 цитата:
Declare window Win_2


А почему не так

 цитата:

cFormName:='Win_2'



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




Пост N: 5714
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.02.18 13:19. Заголовок: Кажись разобрался.....


Кажись разобрался... Это еще первые мои наработки были.
Говорил же Сергей: всегда нужно объекты положить на форму и ненужные просто скрывать.
А у меня по условию - положить объект Win_2. Вот и ищет хендл несуществующего объекта.
Спасибо за участие. Пока не спросишь что то - фиг сам разберёшься !

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



Пост N: 135
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 02.03.18 13:00. Заголовок: Такая проблема обнар..


Такая проблема обнаружилась. У меня есть три программки, в каждой из них ввод данных. По отдельности все работает нормально. Начинаю их соединять вместе. В первой программе сверху кнопки:

DEFINE TOOLBAR ToolBar_1 BUTTONSIZE 230,30 FLAT RIGHTTEXT
BUTTON UNDO ;
CAPTION 'Отменить введеное' ;
ACTION ( Refresh() )
BUTTON SAVE ;
CAPTION 'Записать и отправить' ;
ACTION ( Save(), Refresh() )
BUTTON TABLO_ON ;
CAPTION 'Включить ТАБЛО' ;
ACTION ( ToOnTablo() )
BUTTON TABLO_OFF ;
CAPTION 'Закрыть ТАБЛО' ;
ACTION ( ToExitTablo() )
BUTTON SETTINGS01 ;
CAPTION 'Настройки' ;
ACTION ( ToSettings1() )
BUTTON UPGRADE ;
CAPTION 'Обновление' ;
ACTION ( ToUpgrade() )
END TOOLBAR

Начинаю соединять программы. Кнопка Настройки вызывает другое окно, там тоже есть кнопка, вызывающее третье окно. В третьем окне очередной ввод данных. Пока их немного всё работает, но в какой-то момент времени при добавлении TEXTBOXов в это третье окно, в первом окне кнопки Настройки и Обновление перестают показываться. Т.е. сами кнопки есть, они нажимаются, работают, но надписи в них или пропадают или заменяются абракадаброй. Остальные кнопки показываются нормально.

Вот что это и как быть?

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