On-line: гостей 3. Всего: 3 [подробнее..]
АвторСообщение
постоянный участник




Пост 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 
ПрофильЦитата Ответить
Ответов - 213 , стр: 1 2 3 4 5 6 7 8 9 10 11 All [только новые]





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


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


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

Спасибо: 0 
ПрофильЦитата Ответить



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


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


Со времен Summer 87

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост 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 
ПрофильЦитата Ответить



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


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

Спасибо: 0 
ПрофильЦитата Ответить



Пост 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 
ПрофильЦитата Ответить
Администратор




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


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

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




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


Pasha пишет:

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


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


Спасибо: 0 
ПрофильЦитата Ответить



Пост 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 
ПрофильЦитата Ответить
постоянный участник




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


SergKis пишет:

 цитата:

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



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

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




Пост 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 
ПрофильЦитата Ответить
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 
ПрофильЦитата Ответить
постоянный участник




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


gfilatov2002 пишет:

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


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

Спасибо: 0 
ПрофильЦитата Ответить
moderator




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


Andrey пишет:

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


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

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

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


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




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


gfilatov2002 пишет:

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


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

Спасибо: 0 
ПрофильЦитата Ответить
moderator




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


Andrey пишет:

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


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

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




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


gfilatov2002 пишет:

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



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

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




Пост 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 
ПрофильЦитата Ответить
постоянный участник


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


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

 цитата:
Declare window Win_2


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

 цитата:

cFormName:='Win_2'



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




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


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

Спасибо: 0 
ПрофильЦитата Ответить



Пост 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 
ПрофильЦитата Ответить
Ответов - 213 , стр: 1 2 3 4 5 6 7 8 9 10 11 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают: гостей: 1
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 811
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет