Автор | Сообщение |
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.
|
|
|
Ответов - 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 - ошибка компиляции: |
| смени режим компиляции или пиши как требует уст. компиляции
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1674
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.12.17 08:46. Заголовок: Andrey пишет А с как..
Andrey пишет цитата: | А с каких пор для PRIVATE переменных можно ставить m-> ? Я всегда ставил только для PUBLIC .... |
| Со времен Summer 87
|
|
|
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
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1675
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.12.17 11:42. Заголовок: Pasha :sm36: По м..
Pasha По мне исп. в данном случае static переменной - лишнее. А без макросов можно hb_macroBlock(сVal) использовать
|
|
|
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) ...
|
|
|
Pasha
|
| Администратор
|
Пост N: 3652
Зарегистрирован: 23.05.05
|
|
Отправлено: 18.12.17 14:05. Заголовок: Макросы, private/pub..
Макросы, private/public переменные... Это все стиль программирования, который имело смысл использовать до 1990-го года, когда появился клиппер 5 А с тех пор прошло все-таки 27 (двадцать семь, Карл!) лет. Контекстное меню - это, как я понимаю, popup-меню. В bAction заполняется номер выбранного пункта меню. Затем, надо полагать, в зависимости от номера выполняется какое-то действие. Почему бы сразу не задать в bAction это действие ? Т.е., кроме массива aMenuItem с названиями элементов меню передавать еще и массив блоков кода с действиями для этих элементов меню, или двумерный массив: имя и блок кода действие для этого элемента. Это еще более спрямит очень уж долгий путь к нужному результату.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5638
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.12.17 23:57. Заголовок: Pasha пишет: Почему..
Pasha пишет: цитата: | Почему бы сразу не задать в bAction это действие ? |
| Это у меня функция для 3-х разных кнопок и картинке. При выборе позиций меню, кнопки/картинки перерисовываются. Из-за этого и не захотел дублировать одну функцию.
|
|
|
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-х мест и дублироваться не будет.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5639
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.12.17 15:31. Заголовок: SergKis пишет: пер..
SergKis пишет: цитата: | передавай сразу, что выполнять из 3-х мест и дублироваться не будет. |
| Это не всегда удобно и необходимо.
|
|
|
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 { || .... }
|
|
|
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 ; и все заработает
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5644
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.12.17 17:52. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: Опять пролетел... А за что он хоть отвечает ? Можно чуток подробнее про него ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1214
Зарегистрирован: 11.02.10
|
|
Отправлено: 21.12.17 10:50. Заголовок: Andrey пишет: Можно..
Andrey пишет: цитата: | Можно чуток подробнее про него ? |
| Если указан класс NOHOTLIGHT, то не создается подсветка контура кнопки при наведени мыши на кнопку. Поправил: сделал событие ON MOUSEHOVER независимым от указания класса NOHOTLIGHT для ButtonEx. Благодарю за наводку
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5645
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.12.17 12:46. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Поправил: сделал событие ON MOUSEHOVER независимым от указания класса NOHOTLIGHT для ButtonEx. |
| Это будет доступно в следующей версии ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1215
Зарегистрирован: 11.02.10
|
|
Отправлено: 21.12.17 13:27. Заголовок: Andrey пишет: Это б..
Andrey пишет: цитата: | Это будет доступно в следующей версии ? |
| Да, конечно. Как раз сегодня подготовил первую бетку для следующей сборки
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5646
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.12.17 17:06. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Как раз сегодня подготовил первую бетку для следующей сборки |
| Положи туда пример - Colored_Tab2. Правда его ещё доделать надо на показ/скрытие вкладок Tab. А так этот пример очень показателен. Пока дошёл как нужно работать с Tab, очень много времени потратил. Теперь можно на базе этого примера сразу делать большие программы.
|
|
|
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') Почему падает ? Или нужно по другому делать ?
|
|
|
Vlad04
|
| постоянный участник
|
Пост N: 774
Зарегистрирован: 13.10.05
|
|
Отправлено: 04.02.18 20:26. Заголовок: А окно объявлено ? D..
А окно объявлено ? А почему не так
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5714
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.02.18 13:19. Заголовок: Кажись разобрался.....
Кажись разобрался... Это еще первые мои наработки были. Говорил же Сергей: всегда нужно объекты положить на форму и ненужные просто скрывать. А у меня по условию - положить объект Win_2. Вот и ищет хендл несуществующего объекта. Спасибо за участие. Пока не спросишь что то - фиг сам разберёшься !
|
|
|
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ов в это третье окно, в первом окне кнопки Настройки и Обновление перестают показываться. Т.е. сами кнопки есть, они нажимаются, работают, но надписи в них или пропадают или заменяются абракадаброй. Остальные кнопки показываются нормально. Вот что это и как быть?
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|