Форум » GUI » Новая версия Расширенного релиза библиотеки MiniGUI (часть III) (продолжение) » Ответить

Новая версия Расширенного релиза библиотеки MiniGUI (часть III) (продолжение)

gfilatov: Начало темы находится здесь, а теперь АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Готовится к опубликованию новая сборка №48, которая выйдет в конце недели. Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне Кратко, что нового: - исправление обнаруженных ошибок и неточностей кода; - новый класс HEADERIMAGE для Grid и Browse; - свойство Address в Hyperlink может теперь открывать папку или файл на диске; - добавлен NOTABSTOP класс для Browse; - поддержка пользовательских компонентов (заимствована из оффициального релиза); - расширения и исправления в библиотеках TsBrowse и PropGrid; - обновлены сборки Харбор и HMGS-IDE; - новые и обновленные старые примеры (как обычно ).

Ответов - 166, стр: 1 2 3 4 5 6 7 8 9 All

TimTim: gustow пишет: Жду комментов и от остального сообщества. По-моему, получается очень даже неплохо. Стиль приятен, хорошо сочетается строгость изложения с юмором, читается легко. Гуру MiniGui повторение азов могут пропустить, а для чайников вроде меня, не отягощенных "вижуалами" в самый раз. Думаю, что можно и расширять описание там, где уж слишком короткое оригинальное описание. Спасибо!!! Желаю чтобы не иссякал творческий запал и мотивация! Здоровья тестеру дочурке!

gustow: Спасибо за отклики! ("тестер" намылился уже писать прогу "Список наших ДиВиДюков" - растет, блин! скоро и до "учета больничных листов" можно будет допустить :) ). "Творческий запал" пока не иссякает (да и самому интересно фиксировать - это ж я и пишу примерно так, как ей объясняю, и корректируя ход "лекции" по ее вопросам-реакциям), только не быстро сказка сказывается... Положил еще пару-тройку главок сюда же: http://gustow.narod.ru/harbour/MiniGUI_help/welcome.htm Если что - можно писать на gustow33 [bobik] mail.ru Григорий, я в вашей ветке не мешаюсь? А то, может, в отдельную перенестись?.. Жду комментов (и деловой критики - если будет).

Andrey: gustow пишет: цитата: Жду комментов и от остального сообщества. Классно пишешь, то что нужно. Мне тоже надо свое подрастающее поколение приучать.... А где насчет Tbrowse (которое упоминалось) прочитать ?


gfilatov: gustow пишет: Григорий, я в вашей ветке не мешаюсь? Нет, тема ведь общая...

gustow: gfilatov пишет: Нет, тема ведь общая... Хозяин - барин :) Продолжаю тут. Andrey пишет: Мне тоже надо свое подрастающее поколение приучать.... Давай-давай! Пусть "с младых ногтей" знают, что в мире есть не только "купленное" или "стыренное" :) - но и "свободное", "всеми-кучей-(да-и-мной-тоже)-сделанное" (а, соответственно - "всехнее") :) Andrey пишет: А где насчет Tbrowse (которое упоминалось) прочитать ? Лежит "рядом", на http://gustow.narod.ru/tsb_help/topic0.htm Положил еще в марте 2008; как тогда писал (пока от HMG build 30 - чуть позже добавлю "добавки" от "свежего"; там не так уж много добавилось). Поправил некоторые Янушевы "косяки", кое-что добавил для большей "разборчивости"... ...но, как сам для себя высняю (в т.ч. и в процессе перевода [и - изрядного "расширения" за счет добавочных объяснений, примеров, скринов и т.п.] MiniGUI-хэлпа), придется и там изрядно добавлять... К примеру, так пока и не понял, как "малой кровью" (без "изгалений") сделать хидеры (headers) выглядящими как в обычном BROWSE (т.е. не "плоскогрудыми" [3DLOOK - не особо "спасает", хотя чуть-чуть лучше], а похожими на кнопки "по умолчанию" [иначе TBROWSE - во всяком случае, у меня под 98-й - выглядит уж очень "самопально"] )... Или как (опять же - без "изгалений" с отловом событий или правкой исходников TBROWSE) сделать у него реакцию выбора (в режиме "по умолчанию" [т.е. в GRID] - выделяет всю строку) как у BROWSE по DBLCLICK - чтобы и по дубль-клику, и по ENTER'у... Да и много подобных "новичковых" вопросов возникает по ходу дела ("чё они - не могли сделать как там?..") (приходится частенько лазать в исходники - хотя оно, конечно, не без пользы :) ) Это, конечно, "не горит", так... Но - глядя со своих (тоже пока вполне "чайницких") колоколен - вижу, что есть еще над чем поработать в "TBROWSE для чайников"... :) С учетом подобного и "лопачу" MiniGUI-самоучитель - и себе, и людям!.. :) Григорий! Может, в заголовочном (первом) посте этого "продолжения части III" изменить АНОНС с 48-го на "свежий" (58-й, например) билд - а то, может, кого из новичков "дезориентирует" ("тому уж нынче триста лет..." :) ) ?..

gfilatov: gustow пишет: Григорий! Может, в заголовочном (первом) посте этого "продолжения части III" изменить АНОНС с 48-го на "свежий" Понял Анонс следующего билда (60-го) выйдет в новой теме "продолжения части IV"

gustow: gfilatov пишет: Анонс следующего билда (60-го) Ооо!! С юбилеем (и HMG team, и всех нас)!!! Первый... я :) Прямо так и вспоминается (из "старых добрых застойных") (естественно, "левитановским" голосом и после 5-го литра пива): "В честь 60-го билда библиотеки MiniGUI встали на юбилейную трудовую вахту!.. коллективы баголовов и подразделения флудеров!!.. Союз экзамплописателей взял $%^$%^ические обязательства!!!.. Руководствуясь Постановлением осеннего Пленума Политбюро ЦК HMG и лично товарищей!!!!.. С чувством глубокого удовлетворения!!!!!.. Твердой поступью страна идет!!!!!!.. в общем, куда пошлют" :))))

gfilatov: Обновил сборку компилятора Харбор 1.1.0 для BCC 5.5.1 (Harbour MiniGUI Extended Distribution) по адресу: http://minigui.mylivepage.ru/file/?fileid=6222 Harbour Build Info --------------------------- Version: Harbour 1.1.0dev (Rev. 9956) Compiler: Borland C++ 5.5.1 (32-bit) PCode version: 0.2 ChangeLog last entry: 2008-11-24 16:41 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) ChangeLog ID: ChangeLog 9956 2008-11-24 15:40:18Z druzus Built on: Nov 25 2008 11:40:02 Extra C compiler options: -DHB_FM_STATISTICS_OFF -DHB_GUI -DHB_FM_STD_ALLOC Build options: Language options: (Clipper 5.3) (Clipper 5.x undoc) (Xbase++) (Flagship) (dirty extensions)

Сергей Р: Григорий, спаситель, помогай. Раньше чтобы работать с базами в DOS кодировке делал так: REQUEST HB_LANG_RU866 REQUEST HB_CODEPAGE_RU866 REQUEST HB_CODEPAGE_RU1251 USE T001 CODEPAGE RU866 SHARED (использовал xHarbour) А теперь меня посылают: Error BASE/1003 Variable does not exist: RU866 (использую Harbour)

gfilatov: Сергей Р пишет: А теперь меня посылают: Error BASE/1003 Variable does not exist: RU866 (использую Harbour) Команда USE определена в Харборе следующим образом: #command USE <(db)> [VIA <rdd>] [ALIAS <a>] [<nw: NEW>] ; [<ex: EXCLUSIVE>] [<sh: SHARED>] [<ro: READONLY>] ; [CODEPAGE <cp>] [INDEX <(index1)> [, <(indexN)>]] => ; dbUseArea( <.nw.>, <rdd>, <(db)>, <(a)>, ; if(<.sh.> .or. <.ex.>, !<.ex.>, NIL), <.ro.> [, <cp>] ) ; [; dbSetIndex( <(index1)> )] ; [; dbSetIndex( <(indexN)> )] Следовательно, предполагается передача символьной строки в параметре <cp> Вывод: надо записать эту команду в программе так: USE T001 CODEPAGE "RU866" SHARED Желаю удачи!

Pasha: USE T001 CODEPAGE "RU866" SHARED

Сергей Р: Григорий, Павел. Большое человеческое спасибо. А то взялся сделать новую задачу, используя старые работающие исходники и стал получать косяки. Отстал от жизни, а Вы уже далеко убежали. Обыдно.

Сергей Р: Сборка получилась, но что это за консольное окно вылезает вместе с задачей. использую xMate [Harbour] HB_INSTALL=C:\MiniGUI\HARBOUR HB_COMMAND=%HB_BIN_INSTALL%\Harbour.Exe %PRG% /m /n /gc0 /es2 /i%HB_INSTALL%\include;c:\minigui\include /dHB_API_MACROS /dHB_FM_STATISTICS_OFF /dHB_STACK_MACROS Option prefix=/ [C] C_INC_INSTALL=C:\Borland\BCC55\INCLUDE C_INSTALL=C:\Borland\BCC55 C_COMP_COMMAND=%C_BIN_INSTALL%\Bcc32.Exe -DHB_API_MACROS -M -c -O2 -e -tWM %CRLF%-DHB_STACK_MACROS -DHB_OS_WIN_32 -DHB_FM_STATISTICS_OFF -I%HB_INC_INSTALL%;%C_INC_INSTALL% -n%HOME%\Obj %C% C_LIB_COMMAND=%C_BIN_INSTALL%\TLib.Exe %LIB% /P512 @%RSP% , %LST% C_LINK_COMMAND=%C_BIN_INSTALL%\iLink32.Exe -Gn -aa -Tpe -s @%LNK% C_RC_COMMAND=%C_BIN_INSTALL%\Brc32.Exe -r -fo%RES% %RC% C_DLL_COMMAND= Option prefix=- [User] POSTEXE_COMMAND= POSTLIB_COMMAND= POSTDLL_COMMAND= [Advanced] Command types=1,1,1,1,1,1,1,1,1 [Environment] Description 1= Description 2= Description 3= PRG Compiler ver= C compiler ver= Subsystem= Author= Last update= [Files] c:\minigui\lib\tsbrowse.lib=1 c:\minigui\lib\minigui.lib=2 %C_LIB_INSTALL%\C0W32.OBJ=3 c:\minigui\lib\shell32.lib=4 %HB_LIB_INSTALL%\rtl.lib=5 %HB_LIB_INSTALL%\vm.lib=6 %HB_LIB_INSTALL%\gtwin.lib=7 %HB_LIB_INSTALL%\lang.lib=8 %HB_LIB_INSTALL%\codepage.lib=9 %HB_LIB_INSTALL%\macro.lib=10 %HB_LIB_INSTALL%\rdd.lib=11 %HB_LIB_INSTALL%\dbfntx.lib=12 %HB_LIB_INSTALL%\dbfcdx.lib=13 %HB_LIB_INSTALL%\dbffpt.lib=14 %HB_LIB_INSTALL%\hbsix.lib=15 %HB_LIB_INSTALL%\common.lib=16 %HB_LIB_INSTALL%\debug.lib=17 %HB_LIB_INSTALL%\pp.lib=18 %HB_LIB_INSTALL%\libct.lib=19 %HB_LIB_INSTALL%\miniprint.lib=20 %HB_LIB_INSTALL%\hbprinter.lib=21 %C_LIB_INSTALL%\cw32.lib=22 %C_LIB_INSTALL%\import32.lib=23 [DLL Files] C:\MINIGUI\LIB\minigui.LIB=1 %C_LIB_INSTALL%\C0W32.OBJ=2 %HB_LIB_INSTALL%\rtl.lib=3 %HB_LIB_INSTALL%\vm.lib=4 %HB_LIB_INSTALL%\gtwin.lib=5 %HB_LIB_INSTALL%\lang.lib=6 %HB_LIB_INSTALL%\codepage.lib=7 %HB_LIB_INSTALL%\macro.lib=8 %HB_LIB_INSTALL%\rdd.lib=9 %HB_LIB_INSTALL%\dbfntx.lib=10 %HB_LIB_INSTALL%\dbfcdx.lib=11 %HB_LIB_INSTALL%\dbfdbt.lib=12 %HB_LIB_INSTALL%\common.lib=13 %HB_LIB_INSTALL%\pp.lib=14 %C_LIB_INSTALL%\CW32.LIB=15 %C_LIB_INSTALL%\IMPORT32.LIB=16 %HB_LIB_INSTALL%\optgui.lib=17

gfilatov: Сергей Р пишет: [Files] ... %HB_LIB_INSTALL%\gtwin.lib=7 ... Замени эту строку на %HB_LIB_INSTALL%\gtgui.lib=7 и консольное окно пропадет

Сергей Р: Спасибо, Григорий. Пропало и не мазолит глаза.

krutoff: После включения SET AUTOADJUST ON если в TSBROWSE стоит oBrw:SetArray... все равно появляется ошибка: Called from DBGOTO(0) Called from TSBROWSE:UPSTABLE(10597) Called from _AUTOADJUST(2973) Called from _PROCESSINITPROCEDURE(1409) Called from _ACTIVATEWINDOW(1250)

gfilatov: krutoff пишет: После включения SET AUTOADJUST ON если в TSBROWSE стоит oBrw:SetArray... все равно появляется ошибка krutoff, Спасибо за информацию! Эта проблема будет решена в следующей сборке.

gustow: Кто мой перевод MiniGUI-доки читает - какие-то мнения, сомнения, дополнения, изменения, ругани (конструктивные) по уже выложенному имеются?

gustow: Григорий, блуждая по HMG-форуму HMGforum.com - Portal , наткнулся в одном из постов на упоминание печаталки из Harbour+HMG-программы в разных видах (в т.ч. через "HbPrinter", "MiniPrint", "PDFPrint", "CalcPrint", "ExcelPrint", "HTMLPrint", "CSVPrint", "RTFPrint", "DosPrint"). Зовется MiTPRINT (лежит здесь - в вариантах для MS Office и Open Office). Автор - Jose Miguel (в исходниках не помечено, но в форуме так написано). Правда, и комментарии в исходнике, и описание - в основном на испанском, но в принципе разобраться несложно. М.б. включить ее в пакет HMG Ext (как пример)? Я проверил - с билдом 1.5.58 работает (по крайней мере HbPrinter, MiniPrint и вывод в Excel). P.S. Кстати - кто-нибудь в испанском понимает из сообщества? Перевел бы...

gfilatov: gustow пишет: М.б. включить ее в пакет HMG Ext (как пример)? Я проверил - с билдом 1.5.58 работает (по крайней мере HbPrinter, MiniPrint и вывод в Excel). Да, я знаю о ней (текущая ее версия - 2.3). Но решил не включать MiTPRINT в расширенный релиз, поскольку это - отдельный авторизованный проект, ориентированный на испаноязычный контингент

gfilatov: Обновил с учетом последних изменений IDE на сайте http://minigui.mylivepage.ru по адресу: http://minigui.mylivepage.ru/file/?fileid=6229 Что нового: - исправлены обнаруженные ошибки

gfilatov: АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Готовится к опубликованию новая сборка №60, которая выйдет в конце недели. Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне Кратко, что нового: - исправление обнаруженных ошибок и неточностей кода; - команда SET AUTOADJUST ON работает для TsBrowse; - исправления в библиотеке HBPrinter; - обновлены сборки Харбор и HMGS-IDE, а также HbSQLite3; - новые и обновленные старые примеры (как обычно ).

gfilatov: Новый релиз библиотеки выложил по адресу: http://minigui.mylivepage.ru/file/?fileid=6250 а также, как обычно, на сервере http://hmgextended.com по адресу: http://hmgextended.com/files/CONTRIB/hmg-1.6-60-setup.zip Желаю всем удачной выкачки!

gustow: Поздравляю с юбилейной сборкой! Буду разбираться с новыми "фишками"... и, надеюсь, без особых новых глюков :)

gfilatov: gustow пишет: Поздравляю с юбилейной сборкой! Принимается... gustow пишет: надеюсь, без особых новых глюков Эта сборка была протестирована на рабочих приложениях Янушем Пора и при этом проблем замечено не было Но, по определению, количество невыявленных ошибок в ПО бесконечно (по законам Мерфи).

LYSK: Спасибо, Григорий, за труд и энтузиазм!

alex_II: SET AUTOADJUST ON для TsBrowse все равно не работает Ошибра происходит при попытке редактирования записи, находящейся в близи нижней граници окна TBROWSE Если команду закоментировать все нормально Error: Harbour MiniGUI 1.6 Extended Edition (Build 60) - 2008.12.12 SplitBox's Parent Window cannot be a 'Virtual Dimensioned' window (use 'Virtual Dimensioned' SplitChild instead). Program terminated Called from EVENTS(660) Called from _HMG_SETVSCROLLVALUE(0) Called from VIRTUALCHILDCONTROLFOCUSPROCESS(1856) Called from EVENTS(1574) Called from SETFOCUS(0) Called from EVENTS(628) Called from MESSAGEBOXINDIRECT(0) Called from MSGSTOP(334) Called from SHOWERROR(181) Called from MSGMINIGUIERROR(74) Called from EVENTS(660) Called from _HMG_SETVSCROLLVALUE(0) Called from VIRTUALCHILDCONTROLFOCUSPROCESS(1856) Called from EVENTS(1574) Called from SETFOCUS(0) Called from TGETBOX:SETFOCUS(800) Called from TSBROWSE:EDIT(3629) Called from TSBROWSE:KEYDOWN(5866) Called from TSBROWSE:HANDLEEVENT(6516) Called from EVENTS(73) Called from _DOMESSAGELOOP(0) Called from _ACTIVATEWINDOW(1294) Called from TBL_STRUK(73) <--------------- ACTIVATE WINDOW Form_spr Called from (b)MAIN(74) Called from _DOCONTROLEVENTPROCEDURE(1576) Called from EVENTS(1359) Called from _DOMESSAGELOOP(0) Called from _ACTIVATEWINDOW(1294) Called from MAIN(89) Тоже самое происходит когда в команде TSBROWSE использовать APPEND. При попадании курсора в нижнюю часть окна получаю ошибку

Vlad04: Работаю только с IDE. К сожалению, много из изложенных примеров (как в папке IDE\SAMPLES, так и в MINIGUI\SAMPLES ) повторить не удалось.Ошибки самые разные. Некоторые возникают после сохранения форм.

gfilatov: Новый релиз библиотеки выложил по адресу: http://minigui.mylivepage.ru/file/?fileid=6280 а также, как обычно, на сервере http://hmgextended.com по адресу: http://hmgextended.com/files/CONTRIB/hmg-1.6-61-setup.zip Кратко, что нового: - исправление обнаруженных ошибок и неточностей кода; - новый класс BackColor для элемента управления Tab; - добавлена обработка события OnNotifyIconDblClick для иконки основного окна в трее; - исправления в библиотеке WinReport; - обновлены сборки Харбор и HMGS-IDE, а также HbSQLite3; - новые и обновленные старые примеры (как обычно ). Поздравляю всех с наступающим Новым Годом!

krutoff: К сожалению при установке SET AUTOADJUST ON для окон с параметром CHILD у меня вываливается ошибка Error: Harbour MiniGUI 1.6 Extended Edition (Build 61) - 2008.12.22 SplitBox's Parent Window cannot be a 'Virtual Dimensioned' window (use 'Virtual Dimensioned' SplitChild instead). Program terminated Called from EVENTS(662) Called from _HMG_SETVSCROLLVALUE(0) Called from VIRTUALCHILDCONTROLFOCUSPROCESS(1862) Called from EVENTS(1724) Called from SETFOCUS(0) Called from _SETACTIVATIONFOCUS(1471) Called from _ACTIVATEWINDOW(1287)

gfilatov: krutoff пишет: при установке SET AUTOADJUST ON для окон с параметром CHILD у меня вываливается ошибка Попробуй добавить такое изменение в файл h_windows.prg: *-----------------------------------------------------------------------------* Procedure VirtualChildControlFocusProcess( nControlHandle , nWindowHandle ) *-----------------------------------------------------------------------------* Local x := 0 Local nWindowVirtualWidth := 0 Local nWindowVirtualHeight := 0 Local nWindowHeight := 0 Local nWindowWidth := 0 Local nControlHeight := 0 Local nControlWidth := 0 Local nControlRow := 0 Local nControlCol := 0 Local nHorizontalScrollBoxPos := 0 Local nVerticalScrollBoxPos := 0 Local nHorizontalScrollBarRangeMax := 0 Local nVerticalScrollBarRangeMax := 0 Local nVisibleAreaFromRow := 0 Local nVisibleAreaFromCol := 0 Local nVisibleAreaToRow := 0 Local nVisibleAreaToCol := 0 Local nNewScrollBarPos := 0 IF _HMG_AutoScroll == .F. .or. _HMG_AutoAdjust == .T. Return ENDIF ...

gfilatov: Обновил сборку компилятора Харбор 1.1.0 для BCC 5.5.1 (Harbour MiniGUI Extended Distribution) по адресу: http://minigui.mylivepage.ru/file/?fileid=6281 Harbour Build Info --------------------------- Version: Harbour 1.1.0dev (Rev. 10001) Compiler: Borland C++ 5.5.1 (32-bit) PCode version: 0.2 ChangeLog last entry: 2008-12-24 04:56 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) ChangeLog ID: ChangeLog 10001 2008-12-24 03:53:26Z druzus Built on: Dec 24 2008 11:24:24 Extra C compiler options: -DHB_FM_STATISTICS_OFF -DHB_GUI -DHB_FM_STD_ALLOC Build options: Language options: (Clipper 5.3) (Clipper 5.x undoc) (Xbase++) (Flagship) (dirty extensions) а также сборку Leto RDD build 0.7 с учетом последних изменений в Харборе по адресу: http://minigui.mylivepage.ru/file/?fileid=6282

gfilatov: Обновил с учетом последних изменений IDE на сайте http://minigui.mylivepage.ru по адресу: http://minigui.mylivepage.ru/file/?fileid=6448 Что нового: - добавлено свойство BackColor в элемент управления Tab; - исправлена ошибка при сохранении вложенных меню.

XVar: *PRIVAT*

gfilatov: Обновил сборку компилятора Харбор 1.1.0 для BCC 5.5.1 (Harbour MiniGUI Extended Distribution) по адресу: http://minigui.mylivepage.ru/file/?fileid=6528 Harbour Build Info --------------------------- Version: Harbour 1.1.0dev (Rev. 10072) Compiler: Borland C++ 5.5.1 (32-bit) PCode version: 0.2 ChangeLog last entry: 2009-01-20 00:20 UTC+0100 Francesco Saverio Giudice (info/at/fsgiudice.com) ChangeLog ID: ChangeLog 10072 2009-01-19 23:19:32Z fsgiudice Built on: Jan 20 2009 10:48:38

quiet: Всем добрый день. Похоже, я нашел баг с TSBrowse. Как воспроизвести: - Открываем IDE - Создаем новый проект - Создаем новую форму - Добавляем на форму TSBrowse - Заходим в меню Tools->Preferences (это окно должно перекрыть форму) и тащим окно вниз. При появлении верхней части TSBrowse IDE падает: Date: 01/21/09 Time: 16:09:23 Error DBCMD/2001 Workarea not in use: DBGOTO Called from DBGOTO(0) Called from TSBROWSE:PAINT(7768) Called from TCONTROL:HANDLEEVENT(874) Called from TSBROWSE:HANDLEEVENT(6552) Called from EVENTS(72) Called from _DOMESSAGELOOP(0) Called from _ACTIVATEWINDOW(1300) Called from PREFERENCES(2228) Called from (b)BUILDMENU(264) Called from _DOCONTROLEVENTPROCEDURE(1582) Called from EVENTS(1366) Called from _DOMESSAGELOOP(0) Called from _ACTIVATEWINDOW(1300) Called from DOMETHOD(4609) Called from NEWFORM(1322) Called from (b)MAIN(92) Called from _DOCONTROLEVENTPROCEDURE(1582) Called from EVENTS(1422) Called from _DOMESSAGELOOP(0) Called from _ACTIVATEWINDOW(1300) Called from MAIN(158) MiniGUIe 1.6 Build 61, с новым GUI 0.7.9. Кроме того, похоже, что иногда, после сохранения формы с TSBrowse, выхода и повторного открытия этой формы, TSBrowse исчезает. Но тут на 100% воспроизвести не удалось.

gfilatov: quiet пишет: Похоже, я нашел баг с TSBrowse Да, есть такая бяка в IDE при выполнении вышеописанных условий (новый проект, новая форма и т.д.). Для того, чтобы обойти эту ошибку, достаточно сохранить форму с TSBrowse перед открытием окна настроек Preferences.

gfilatov: Новый релиз библиотеки выложил по адресу: http://minigui.mylivepage.ru/file/?fileid=6539 а также, как обычно, на сервере http://hmgextended.com по адресу: http://hmgextended.com/files/CONTRIB/hmg-1.6-62-setup.zip Кратко, что нового: - громадная чистка кода для успешной компиляции с ключом -w3; - исправления в библиотеках HbPrinter, MiniPrint и TsBrowse; - обновлены сборки Харбор и HMGS-IDE, а также HbSQLite3; - новые и обновленные старые примеры (в частности, альфа версия ДЕКОМПИЛЯТОРА кода консольного Харбора). Желаю всем удачной выкачки!

gfilatov: Обновил с учетом последних изменений IDE на сайте http://minigui.mylivepage.ru по адресу: http://minigui.mylivepage.ru/file/?fileid=6575 Что нового: - добавлена обработка BackColor в элементах управления Radio, Slider, Hyperlink; - исправлено обновление BackColor в элементе управления Tab.

krutoff: Я попытался сформировать библиотеки версии 1.6-62 на xHarbour 1.1.0 у меня вылетает и дает даже сбой по памяти. Нашел причину в ключе -w3. Оставил предыдущую версию MakeLib.Bat с ключом -w2 и все собралось нормально.

gfilatov: krutoff пишет: сформировать библиотеки версии 1.6-62 на xHarbour 1.1.0 Эта сборка проверялась с помощью xHarbour Compiler build 1.2.0 (SimpLex) (Rev. 6309) по ссылке: http://hmgextended.com/files/xHARBOUR/xharbour-1.2.0-beta-bin-w32-bcc-5-5.zip и проблем не было

krutoff: Поставил новую версию xHarbour 1.2.0 но теперь ругает на библиотеку hbzip.lib (напр. в примере C:\MiniGUI\SAMPLES\BASIC\Zip ) Может есть какая-то новая версия библиотеки Zip для xHarbour?

krutoff: Поставил старую версию xHarbour 1.1.0, оставил предыдущую версию MakeLib.Bat с ключом -w2 и все работает.

gfilatov: krutoff пишет: теперь ругает на библиотеку hbzip.lib Новая версия библиотеки этой библиотеки для xHarbour есть в папке CONTRIB в Files области английского форума MiniGUI (для выкачки потребуется регистрация на этом форуме).

gfilatov: Обновил сборку компилятора Харбор 1.1.0 для BCC 5.5.1 (Harbour MiniGUI Extended Distribution) по адресу: http://minigui.mylivepage.ru/file/?fileid=6689 Harbour Build Info --------------------------- Version: Harbour 1.1.0dev (Rev. 10143) Compiler: Borland C++ 5.5.1 (32-bit) PCode version: 0.2 ChangeLog last entry: 2009-02-02 11:02 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) ChangeLog ID: ChangeLog 10143 2009-02-02 09:58:22Z druzus Built on: Feb 2 2009 13:24:09

gustow: Григорий, поправьте, если можно. Когда я в определении CHECKBOX пишу, к примеру: [pre2]@ 15, 20 checkbox CH1 of Win_1 ; width 250 ; caption "это чекбокс" ; value .T.[/pre2] то при компиляции выдает на этой строке "ошибка синтаксиса". Если же пишу WIDTH _после_ CAPTION (как описано в Help'e), то тогда все нормально. Обычно-то пишу "как учили", но иногда переставлю местами - и приходится, выражаясь, лезть править "ошибку". Пользую HMG Ext ver.1.6 build 60 (62 еще не брал - м.б. там уже исправлено?)

gfilatov: gustow пишет: поправьте, если можно Спасибо за вопрос! Дело в том, что при определении элемента управления CHECKBOX требуется обязательно определить ключевое слово CAPTION, а вот указание ширины этого элемента является необязательным. Для устранения указанной неприятности/неудобства и был применен так называемый альтернативный синтаксис, который является нечувствительным к порядку/расположению ключевых слов при определении элементов управления. Вывод: надо либо использовать альтернативный синтаксис, либо писать команды правильно (с учетом небольших "заморочек"). P.S. Прошу меня простить за нравоучительный тон...

gustow: ОК, Григорий, понял, буду писать "как учили". И без вопросов и обиженок (с моей стороны): коли надо - можно меня и "понравоучить" :)

Петр: 2009/01/22: Build 62 (HMG 1.6 Extended Edition) Published. * Fixed: A huge code's cleaning for warnings of Harbour 1.1 and xHarbour 1.2 with flag -w3. Совместимость HMG 1.6 EE с версиями [x]Hb 0.9* еще поддерживается? Извиняюсь за вопрос - сам проверить не могу. Спасибо.

gfilatov: Петр пишет: Совместимость HMG 1.6 EE с версиями [x]Hb 0.9* еще поддерживается? На практике я тоже не проверял. Для Харбора это не критично, поскольку HMG 1.6 EE поставляется с собственной сборкой Харбора. Для xHarbour проверяется только безошибочность сборки самой библиотеки свежей версией с CVS.

gfilatov: Петр пишет: сам проверить не могу Старые сборки xHb 0.9* можно взять для проверки на этой странице: http://www.the-holms.org/xharbour/compiler.htm

Петр: Спасибо. И еще один вопрос - планируются ли какие-то изменения в С коде в версии 1.6.3 по сравнению с 1.6.2

gfilatov: Петр пишет: планируются ли какие-то изменения в С коде в версии 1.6.3 С моей стороны - не планируются, но я с удовольствием рассмотрю любые Ваши предложения, направленные на улучшение С-кода

Петр: Хорошо, я вчера обратно портировал HMG 1.6 EE на MinGW 4.3.2. (для внутреннего использования). В ходе спецоперации возникли некоторые мысли.

gustow: Григорий, я тут (в процессе перевода [+ дополнения] Help'а) начал составлять перечень примеров (того, что в SAMPLES; поскольку там многое не только на английском, но и на всяких др. языках; да и назначение не всегда ясно [или есть какие-то "тонкости" или "хитрости" - что-то не работает под 98-й, где-то нужен пароль, где-то еще что-то...]). Полезен будет такой список (вставить его в "сборку")? (правда, он на русском, а сборка и Help'ы англоязычные - но, думаю, проблем с переводом [у кого-нибудь, кто этим владеет лучше, чем я] не возникнет) P.S. Заодно еще: скомпилировал SAMPLES\Advanced\PDFReader (пока пользую HMG 1.60 под Win98SE) - после компиляции при запуске вылетело по ошибке [pre2]Error 6491408/0 S_OK: LOADFILE Called from TOLEAUTO:LOADFILE(0) Called from FOPENACTIVEX(69) Called from (b)PDFREADER(44) Called from _PROCESSINITPROCEDURE(1405) Called from _ACTIVATEWINDOW(1263) Called from DOMETHOD(4608) Called from PDFREADER(49)[/pre2]

gfilatov: gustow пишет: Полезен будет такой список Конечно, всякая дополнительная инфа будет полезна gustow пишет: скомпилировал SAMPLES\Advanced\PDFReader (пока пользую HMG 1.60 под Win98SE) - после компиляции при запуске вылетело по ошибке Для корректной работы этого примера требуется Adobe Acrobat версии 7.0 или старше, поэтому лучше его запускать под WinXP

gustow: gfilatov пишет: Для корректной работы этого примера требуется Adobe Acrobat версии 7.0 или старше, поэтому лучше его запускать под WinXP Понял! И это уточнение тоже вставлю в "список примеров". Более-менее доделаю список - положу куда-нибудь для "отсмотрения" и "обсуждения".

krutoff: Григорий, может подскажешь или ткнешь носом: Поставил новую версию xHarbour 1.2.0 Поставил новую библиотеку hbzip.lib из английского форума Установил релиз 1.6-62 Пример C:\MiniGUI\SAMPLES\BASIC\Zip все равно не идет: ... C:\MiniGUI\SAMPLES\BASIC\Zip>call ..\..\..\batch\compile.bat demo /z xHarbour Compiler build 1.2.0 (SimpLex) (Rev. 6309) Copyright 1999-2008, http://www.xharbour.org http://www.harbour-project.org/ Compiling 'demo.prg'... ..... Error: Unresolved external '_inflateEnd' referenced from C:\MINIGUI\XHARBOUR\LIB\HBZIP.LIB|ziparchive Error: Unresolved external '_deflate' referenced from C:\MINIGUI\XHARBOUR\LIB\HBZIP.LIB|ziparchive Error: Unresolved external '_get_crc_table' referenced from C:\MINIGUI\XHARBOUR\LIB\HBZIP.LIB|ziparchive Error: Unresolved external '_deflateEnd' referenced from C:\MINIGUI\XHARBOUR\LIB\HBZIP.LIB|ziparchive Error: Unresolved external '_deflateInit2_' referenced from C:\MINIGUI\XHARBOUR\LIB\HBZIP.LIB|ziparchive Error: Unresolved external '_crc32' referenced from C:\MINIGUI\XHARBOUR\LIB\HBZIP.LIB|ziparchive Error: Unresolved external '_inflateInit2_' referenced from C:\MINIGUI\XHARBOUR\LIB\HBZIP.LIB|ziparchive Error: Unresolved external '_inflate' referenced from C:\MINIGUI\XHARBOUR\LIB\HBZIP.LIB|ziparchive Link error.

gfilatov: krutoff пишет: Поставил новую версию xHarbour 1.2.0 Поставил новую библиотеку hbzip.lib из английского форума Установил релиз 1.6-62 Пример C:\MiniGUI\SAMPLES\BASIC\Zip все равно не идет Проверил еше раз - у меня все работает Если нужно, могу выложить более свежую сборку xHarbour 1.2.0 (Rev. 6371) с уже включенной в сборку библиотекой hbzip.lib

krutoff: Спасибо большое! Жду.

gfilatov: Обновил сборку компилятора Харбор 1.1.0 для BCC 5.5.1 (Harbour MiniGUI Extended Distribution) по адресу: http://minigui.mylivepage.ru/file/?fileid=6753 и xHarbour 1.2.0 (Rev. 6371) для BCC 5.5.1 (CVS 2009-02-08 19:39) по адресу: http://minigui.mylivepage.ru/file/?fileid=6752

krutoff: Удалил Папку xHarbour Удалил папки Lib, xLib, Source из MiniGUI Поставил новую версию xHarbour 1.2.0 (6371) с hbzip.lib Установил релиз 1.6-62 Запустил MakeAllLibs.bat - все библиотеки сформировались. Но... Пример Zip дает те же неразрешимые ссылки и еще заметил, что при сборке DBView: Error: Unresolved external '_HB_FUN_HB_CODEPAGE_RU1251' referenced from C:\MINIGUI\SAMPLES\APPLICATIONS\DBFVIEW\SOURCE\DBFVIEW.OBJ

SkyNET: krutoff пишет: HB_CODEPAGE_RU1251 Так это русская кодировка ! Нужна библиотека codepage.lib !

krutoff: Библиотека codepage.lib, как и все остальные необходимые там есть. При восстановлении старой версии xHarbour 1.1.0 (и старой hbzip.lib) и предыдущей версии MakeLib.Bat с ключом -w2 и все работает.

gfilatov: Обновил с учетом последних изменений IDE на сайте http://minigui.mylivepage.ru по адресу: http://minigui.mylivepage.ru/file/?fileid=6833 Что нового: - исправление обнаруженных ошибок; - добавлена возможность переносить элементы управления с одной вкладки на другую в Tab.

gfilatov: Новый релиз библиотеки выложил по адресу: http://minigui.mylivepage.ru/file/?fileid=6845 а также, как обычно, на сервере http://hmgextended.com по адресу: http://hmgextended.com/files/CONTRIB/hmg-1.6-63-setup.zip Кратко, что нового: - чистка Си-кода для устранения устаревших Си-конструкций в [x]Harbour; - новый элемент управления Folder, свойство TopMost для окон; - Browse в режиме построчного редактирования может обращаться к связанным базам, используя их алиас; - исправления в библиотеке HbSqlDD; - обновлены сборки Харбор и HMGS-IDE, а также HbSQLite3; - обновлены некоторые старые примеры. Желаю всем удачной выкачки!

krutoff: Народ, откликнитесь! Что, у всех идет версия 1.6-62, 1.6-63 на xHarbour'е, или это я только такой неумеха ?

gfilatov: krutoff пишет: у всех идет версия 1.6-62, 1.6-63 на xHarbour'е Да, у меня работает без проблем на примерах из папки samples\Basic Для проверки использовал xHarbour Compiler build 1.2.0 (SimpLex) (Rev. 6371) Harbour Build Info --------------------------- Version: xHarbour build 1.2.0 Intl. (SimpLex) (Rev. 6371) PCode Version: 10 Compiler: Borland C++ 5.5.1 (32 bit) Built on: Feb 9 2009 14:37:26 Last ChangeLog entry: 2009-02-08 19:39 UTC-0600 Vicente Guerra <vicente@guerra.com.mx> ChangeLog CVS version: ChangeLog,v 1.6371 2009/02/09 01:42:19 guerra000 Exp Harbour extensions: Yes CA-Clipper 5.2e undocumented: Yes CA-Clipper 5.2e strict compatibility: No CA-Clipper 5.3x compatible extensions: Yes Alaska Xbase++ compatible extensions: Yes CA-Visual Objects compatible extensions: No Multisoft Flagship compatible extensions: Yes Microsoft FoxPro compatible extensions: Yes dBase compatible extensions: No Object file generation support: No ANSI C usage: Non strict C++ mode: Off Compiler YACC debug mode: Off Memory tracing and statistics: Off Maximum symbol name length: 63 ---------------------------

krutoff: У меня тоже все идет, кроме подключения Zip

krutoff: 1. Если в установках среды стоит строка: MG_CMP=XHARBOUR (чтобы использовать xHarbour по умолчанию) то дает резавершенные ссылки (см. выше). 2. Если по умолчанию стоит HARBOUR и при компиляции примера указать параметр /X ( XHARBOUR ) тогда все компилируется как положены. Вот такая загадка. Буду копать дальше. (Григорий, наверное, использовал при сборке примеров вариант №2)

gfilatov: krutoff пишет: Григорий, наверное, использовал при сборке примеров вариант №2 Да, конечно. Это - базовый вариант, поскольку по умолчанию используется Харбор.

krutoff: 1. В конфигурации HARBOUR по умолчанию при компиляции с параметром /X /Z формируются строки библиотек : c:\minigui\harbour\lib\ziparchive.lib + c:\MiniGUI\xharbour\lib\hbzip.lib + !!! И ПОЭТОМУ ВСЁ РАБОТАЕТ. 2. В конфигурации XHARBOUR по умолчанию при компиляции с параметром /X /Z формируются строки библиотек : c:\MiniGUI\xharbour\lib\hbzip.lib + c:\MiniGUI\xharbour\lib\hbzip.lib + !!! И ПОЭТОМУ НЕ РАБОТАЕТ - поставил вместо первой строки ziparchive.lib -> ВСЁ ЗАРАБОТАЛО 3. Дальше буду решать проблемы с codepage.lib

krutoff: У меня в компиляции при подключении дополнительных библиотек ( например adordd.lib ) с параметром /X все равно берется базовый маршрут HARBOUR

krutoff: DBView при компиляции с параметром /X дает неразрешимые ссылки "Error: Unresolved external '_HB_FUN_HB_CODEPAGE_RU1251' referenced from C:\MINIGUI\SAMPLES\APPLICATIONS\DBFVIEW\SOURCE\DBFVIEW.OBJ "

gfilatov: krutoff пишет: DBView при компиляции с параметром /X дает неразрешимые ссылки Спасибо за сообщение! Оказывается, в январе этого года разработчики xHarbour переименовали кодировку RU1251 в RUWIN. Надо просто заменить в REQUEST RU1251 и при использовании строки "RU1251" на REQUEST RUWIN и "RUWIN". Эти исправления будут доступны в следующей сборке

krutoff: Григорий, извини, что нагрузил, я понимаю, что у тебя хватает проблем по разработке и сопровождению (сами немножко такие). Но когда заходишь в тупик, то таких людей, как Ты не хватает. Спасибо!

krutoff: Григорий, но остается открытым вопрос - при использовании Zip подключать билиотеку (Harbour) ziparchive.lib и (xHarbour) hbzip.lib одновременно???

sashaBG: Столкнулся вот с тaкой проблемой : иногда из за неправильной установкой Win XP шрифты в PREVEW отображаются крокозяблами если в процедуре печати нарочно указать нужный шрифт все ок . Где нужно вставиь команду SET FONT TO <Font> , <Size> чтобы не переделывать процедуры печати пробовал в начале программы - не работает

gfilatov: АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Готовится к опубликованию новая сборка №64, которая выйдет на этой неделе. Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне Кратко, что нового: - исправление обнаруженных ошибок и неточностей кода; - в реестр теперь можно записывать числовые данные как DWORD значения; - небольшие коррекции при блокировке записи в элементе управления Browse; - MessageBox-функции теперь поддерживают данные любого типа; - обновлена сборка компилятора Харбор; - обновлены некоторые старые примеры (как обычно ).

valery2: gfilatov пишет: Если у Вас есть интересные наработки для включения в новый релиз Вот некое продолжение ( просмотр и обработка логических полей ) #include "minigui.ch" #include "Dbstruct.ch" MEMVAR met Memvar aresult , l, aWhen , aWhenVarNames, cMacroVar Function Main Local aColor := { || if ( rEven() == .F. , RGB( 0, 0, 0 ) , RGB( 255, 0, 0 ) ) } Local rfi1 := { 'Test->Code','Test->First', 'Test->Last' , 'Test->Birth', 'Test->Married', 'Test->Balance' } Local rfi2 := { 'Test1->Code' , 'Test1->Sum1' , 'Test1->Sum2' , 'Test1->Sum3' } Public met:={} SET DELETED ON SET BROWSESYNC ON SET EVENTS FUNCTION TO MYEVENTS DEFINE WINDOW Form_1; AT 0,0; WIDTH 880; HEIGHT 450; TITLE 'MiniGUI Browse test'; MAIN NOMAXIMIZE NOSIZE; ON INIT OpenTables(); ON RELEASE dbcloseall() DEFINE STATUSBAR STATUSITEM 'Mouse Right Click To Mark / Unmark a record' STATUSITEM '<Delete> : Delete record(s)' WIDTH 200 STATUSITEM '<Enter> : Edit inplace' WIDTH 200 END STATUSBAR @ 10,10 BROWSE Browse_1; WIDTH 400; HEIGHT 370; HEADERS { 'Code', 'First Name', 'Last Name', 'Birth Date', "Married", "Balance" }; WIDTHS { 40 , 90 , 90 , 60 , 40 , 100 }; WORKAREA Test; FIELDS rfi1; DYNAMICFORECOLOR {acolor, acolor, acolor, acolor, acolor, acolor}; DYNAMICBACKCOLOR inmet(rfi1); edit inplace @ 10,450 BROWSE Browse_2; WIDTH 400; HEIGHT 370; HEADERS { 'Code' , 'Summa1' , 'Summa2', 'Summa3'}; WIDTHS { 50 , 100 , 100 , 100 }; WORKAREA Test1; FIELDS rfi2; DYNAMICFORECOLOR {acolor, acolor, acolor, acolor}; DYNAMICBACKCOLOR inmet(rfi2) ON KEY ESCAPE ACTION Form_1.Release ON KEY DELETE ACTION rdel() END WINDOW CENTER WINDOW Form_1 ACTIVATE WINDOW Form_1 Return Nil Procedure OpenTables() if !file("test.dbf") CreateTable() endif if !file("test1.dbf") CreateTable() endif Use Test new Use Test1 new Return Procedure CreateTable Local aDbf[6][4], i, bdbf[4][4] aDbf[1][ DBS_NAME ] := "Code" aDbf[1][ DBS_TYPE ] := "Numeric" aDbf[1][ DBS_LEN ] := 3 aDbf[1][ DBS_DEC ] := 0 // aDbf[2][ DBS_NAME ] := "First" aDbf[2][ DBS_TYPE ] := "Character" aDbf[2][ DBS_LEN ] := 25 aDbf[2][ DBS_DEC ] := 0 // aDbf[3][ DBS_NAME ] := "Last" aDbf[3][ DBS_TYPE ] := "Character" aDbf[3][ DBS_LEN ] := 25 aDbf[3][ DBS_DEC ] := 0 // aDbf[4][ DBS_NAME ] := "Birth" aDbf[4][ DBS_TYPE ] := "Date" aDbf[4][ DBS_LEN ] := 8 aDbf[4][ DBS_DEC ] := 0 // aDbf[5][ DBS_NAME ] := "Married" aDbf[5][ DBS_TYPE ] := "Logical" aDbf[5][ DBS_LEN ] := 1 aDbf[5][ DBS_DEC ] := 0 // aDbf[6][ DBS_NAME ] := "Balance" aDbf[6][ DBS_TYPE ] := "Numeric" aDbf[6][ DBS_LEN ] := 10 aDbf[6][ DBS_DEC ] := 2 delete file test.dbf delete file test1.dbf DBCREATE("Test", aDbf) Use Test For i:= 1 To 100 append blank Replace code with i Replace First With 'First Name '+ Ltrim(Str(i)) Replace Last With 'Last Name '+ Ltrim(Str(i)) replace birth with date()-Max(10000, Random(20000))+Random(LastRec()) Replace Married With ( i/2 == int(i/2) ) replace Balance with i*10*if(i/5-int(i/5)=0,-1,1) Next i use bDbf[1][ DBS_NAME ] := "Code" bDbf[1][ DBS_TYPE ] := "Numeric" bDbf[1][ DBS_LEN ] := 3 bDbf[1][ DBS_DEC ] := 0 // bDbf[2][ DBS_NAME ] := "Sum1" bDbf[2][ DBS_TYPE ] := "Numeric" bDbf[2][ DBS_LEN ] := 10 bDbf[2][ DBS_DEC ] := 2 // bDbf[3][ DBS_NAME ] := "Sum2" bDbf[3][ DBS_TYPE ] := "Numeric" bDbf[3][ DBS_LEN ] := 10 bDbf[3][ DBS_DEC ] := 2 // bDbf[4][ DBS_NAME ] := "Sum3" bDbf[4][ DBS_TYPE ] := "Numeric" bDbf[4][ DBS_LEN ] := 10 bDbf[4][ DBS_DEC ] := 2 DBCREATE("Test1", bDbf) Use Test1 For i:= 1 To 30 append blank Replace code with i Replace sum1 With i*2*if(i/4-int(i/4)=0,-1,1) Replace sum2 With i*3*if(i/6-int(i/6)=0,-1,1) replace sum3 with i*10*if(i/5-int(i/5)=0,-1,1) Next i use Return #define WM_NOTIFY 78 #define NM_CLICK (-2) #define NM_RCLICK (-5) Function MyEvents ( hWnd, nMsg, wParam, lParam ) Local i, cFormName, cControlName, result, cControlType, BrowseArea if nMsg == WM_NOTIFY if GetNotifyCode ( lParam ) == NM_RCLICK i := Ascan( _HMG_aFormHandles , hWnd ) cFormName := if( i > 0, _HMG_aFormNames[ i ], "" ) i := Ascan( _HMG_aControlHandles, GetHwndFrom( lParam ) ) cControlName := if( i > 0, _HMG_aControlNames[ i ], "" ) cControlType := if( i > 0, _HMG_aControlType[ i ], "" ) BrowseArea := if(cControlType=="",0,_HMG_aControlSpacing[ i ]) if cControlType == "BROWSE" result:= pomet(cFormName, cControlName, BrowseArea) else result:= Events ( hWnd, nMsg, wParam, lParam ) endif else result:= Events ( hWnd, nMsg, wParam, lParam ) endif else result:= Events ( hWnd, nMsg, wParam, lParam ) endif Return result procedure pomet(cFormName, cControlName, BrowseArea) local namv := GetProperty( cFormName, cControlName , "Value") local jj IF Select (BrowseArea) != 0 Select &BrowseArea go namv jj:=ascan(met, alias()+' '+str(recno())) if jj=0 aadd(met,alias()+" "+str(recno())+"~"+cFormName+"`"+cControlName) else adel(met, jj) asize(met, len(met)-1) endif namv:=recno() skip if eof() go namv skip -1 endif endif SetProperty( cFormName, cControlName , "Value",recno()) DoMethod( cFormName , cControlName, "Refresh" ) return function rEven() Local i, result:=.F., BrowseArea, BackArea, BackRec i := ASCAN( _HMG_aControlhandles, GetFocus()) if i>0 BrowseArea := _HMG_aControlSpacing[ i ] BackArea := Alias() BackRec := RecNo() IF Select (BrowseArea) != 0 Select &BrowseArea result:= if ( ascan(MET,alias()+' '+str(recno())) = 0 , .F. , .T. ) dbselectarea(BackArea) go BackRec endif endif return result function cEven(rfi) Local result:=.F. if Valtype(rfi)=="N" if rfi<0 result:=.T. endif endif return result function kolmet() Local i, ii, ij, nStart := 1 Local BrowseArea, BackArea, BackRec, cAlias Local cArri:={} i := ASCAN( _HMG_aControlhandles, GetFocus()) if i>0 BrowseArea := _HMG_aControlSpacing[ i ] BackArea := Alias() BackRec := RecNo() IF Select (BrowseArea) != 0 Select &BrowseArea cAlias:=alias()+' ' ii:=len(cAlias) WHILE nstart > 0 nstart:=ascan(MET, cAlias,nstart) if nstart>0 ij:=len(met[nstart])-ii aadd(cArri,substr(met[nstart],ii+1,ij)) nstart:=nstart+1 endif ENDDO dbselectarea(BackArea) go BackRec endif endif return cArri procedure rdel() Local sumrec, sumrec2, cArri:=kolmet() Local i, ii, ij, cFormName, cControlName, pod1, pod2 Local BrowseArea, BackArea, BackRec, cAlias sumrec:=len(cArri) sumrec2:=sumrec if sumrec2=0 return endif if msgYesNo("Delete "+ltrim(str(sumrec2))+" record"+if(sumrec2=1,"?","s?"), "Delete records") i := ASCAN( _HMG_aControlhandles, GetFocus()) if i>0 BrowseArea := _HMG_aControlSpacing[ i ] BackArea := Alias() BackRec := RecNo() IF Select (BrowseArea) != 0 Select &BrowseArea cAlias:=alias()+' ' if sumrec=0 delete Skip if eof() Go Bottom EndIf else pod1:=at("~",cArri[1]) pod2:=at("`",cArri[1]) cFormName:=substr(cArri[1],pod1+1,pod2-1-pod1) cControlName:=substr(cArri[1],pod2+1,len(cArri[1])-pod2) for ii:=1 to sumrec go val(substr(cArri[ii],1,pod1-1)) delete ij:=ascan(MET, cAlias+cArri[ii]) adel(met, ij) asize(met, len(met)-1) next go top endif SetProperty( cFormName, cControlName , "Value",recno()) DoMethod( cFormName , cControlName, "Refresh" ) dbselectarea(BackArea) go BackRec endif endif endif return function inmet(rfi) Local il, i, ii, ij, ccolor:={} ij:=len(rfi) for il=1 to ij ii:="{ || if ( cEven("+rfi[il]+")= .F. , ( 255 + ( 255 * 256 ) + ( 255 * 65536 ) ) , ( 255 + ( 255 * 256 ) + ( 0 * 65536 ) ) ) }" i:=&(ii) aadd(ccolor,i) next return ccolor #ifndef __XHARBOUR__ #xcommand DEFAULT => OTHERWISE #endif *-----------------------------------------------------------------------------* Function _GetBrowseFieldValue ( cTemp ) *-----------------------------------------------------------------------------* Local cRet := 'Nil' Local cType := _TypeEx (cTemp) Switch cType CASE 'N' CASE 'F' CASE 'I' CASE 'B' CASE 'Y' cRet := lTrim ( Str (&cTemp) ) Exit CASE 'D' CASE 'T' cRet := Dtoc (&cTemp) Exit CASE 'C' CASE '@' cRet := rTrim ( &cTemp ) Exit CASE 'L' cRet := IIF ( &cTemp == .T. , ' '+chr(118)+' ' , ' ' ) Exit CASE 'M' cRet := '<memo>' If ! Empty (&cTemp) cRet := '<Memo>' EndIf Exit CASE 'G' cRet := '<General>' Exit DEFAULT If cType == 'UE' cRet := '<R-Next>' ElseIf cType == 'UI' cRet := _GetBrowseFnValue(cTemp) EndIf End Switch Return cRet *-----------------------------------------------------------------------------* Function _GetBrowseFnValue ( cTemp ) *-----------------------------------------------------------------------------* Local cRet := 'Nil' Switch ValType (cTemp) Case 'N' cRet := lTrim ( Str(&cTemp) ) Exit Case 'D' cRet := Dtoc(&cTemp) Exit Case 'L' cRet := IIF ( &cTemp == .T. , ' '+chr(118)+' ' , ' ' ) Exit Case 'C' cRet := rTrim ( &cTemp ) Exit Case 'M' cRet := '<Memo>' End Switch Return cRet *-----------------------------------------------------------------------------* Function _BrowseInPlaceEdit ( GridHandle , aValid , aValidMessages , aReadOnly , lock , append , aInputItems ) *-----------------------------------------------------------------------------* Local GridCol , GridRow , i , nrec , _GridWorkArea , BackArea , BackRec Local _GridFields , FieldName , CellData := '' , CellColIndex Local aStruct , Width , Decimals , sFieldname , ControlType Local Ldelta := 0 , aTemp , E , r , p , lInputItems := .F. , aItems := {}, aValues := {} Local abKeyBlocks := {} Local bOnDisplay := { || AADD(abKeyBlocks, _GetHotKey ( '_InPlaceEdit', 0, 27 )),; _ReleaseHotKey ( '_InPlaceEdit', 0, 27 ),; AADD(abKeyBlocks, _GetHotKey ('_InPlaceEdit', 0, 13 )),; _ReleaseHotKey ( '_InPlaceEdit', 0, 13 ) } Local bOnCloseUp := { || _DefineHotKey('_InPlaceEdit', 0, 27, abKeyBlocks[1]),; _DefineHotKey('_InPlaceEdit', 0, 13, abKeyBlocks[2]),; abKeyBlocks := {} } Local aEnabledTypes := {"N","C","D","L","M"} If append I := ascan ( _HMG_aControlhandles , GridHandle ) _BrowseInPlaceAppend ( '' , '' , i ) Return Nil EndIf If This.CellRowIndex != LISTVIEW_GETFIRSTITEM ( GridHandle ) Return Nil EndIf I := ascan ( _HMG_aControlhandles , GridHandle ) _GridWorkArea := _HMG_aControlSpacing _GridFields := _HMG_aControlRangeMin CellColIndex := This.CellColIndex If CellColIndex < 1 .or. CellColIndex > Len (_GridFields) Return Nil EndIf if Len ( _HMG_aControlBkColor ) > 0 .And. CellColIndex == 1 PlayHand() Return Nil EndIf If valType ( aInputItems ) == 'A' If Len ( aInputItems ) >= CellColIndex If ValType ( aInputItems [ CellColIndex ] ) == 'A' lInputItems := .T. EndIf EndIf EndIf If ValType ( aReadOnly ) == 'A' If Len ( aReadOnly ) >= CellColIndex If aReadOnly [ CellColIndex ] != Nil If aReadOnly [ CellColIndex ] == .T. _HMG_IPE_CANCELLED := .F. Return Nil EndIf EndIf EndIf EndIf FieldName := _GridFields [ CellColIndex ] If ASCAN(aEnabledTypes, _TypeEx ( FieldName )) < 1 MsgAlert ("Edit of this field is not supported.", "Warning") Return Nil EndIf r := at ( '>', FieldName ) if r != 0 sFieldName := Right ( FieldName, Len(Fieldname) - r ) p := Left ( FieldName, r - 2 ) If !( Upper( p ) == "FIELD" ) .And. !( Upper( p ) == "_FIELD" ) _GridWorkArea := p EndIf Else sFieldName := FieldName EndIf // It the specified area does not exists, when return If Select (_GridWorkArea) == 0 Return Nil EndIf // Save Original WorkArea BackArea := Alias() // Selects Grid's WorkArea Select &_GridWorkArea // Save Original Record Pointer BackRec := RecNo() IF _GridWorkArea == _HMG_aControlSpacing nRec := _GetValue ( '', '' , i ) Go nRec EndIf // If LOCK clause is present, try to lock. If lock == .T. If (_GridWorkArea)->( Rlock() ) == .F. MsgExclamation( _HMG_BRWLangError[9], _HMG_BRWLangError[10] ) // Restore Original Record Pointer Go BackRec // Restore Original WorkArea If Select (BackArea) != 0 Select &BackArea Else Select 0 EndIf Return Nil EndIf EndIf aTemp := __MVGET ( '_HMG_' + ALLTRIM(STR(_HMG_aControlhandles)) + '_WHEN' ) IF VALTYPE ( aTemp ) == 'A' IF LEN (aTemp) >= LEN (_GridFields) IF VALTYPE ( aTemp [CellColIndex] ) == 'B' E := EVAL ( aTemp [CellColIndex] ) IF E == .F. PlayHand() // Restore Original Record Pointer Go BackRec // Restore Original WorkArea If Select (BackArea) != 0 Select &BackArea Else Select 0 EndIf _HMG_IPE_CANCELLED := .F. Return Nil ENDIF ENDIF ENDIF ENDIF CellData := &FieldName aStruct := DbStruct() r := FieldPos ( sFieldName ) If r > 0 Width := aStruct [r] [DBS_LEN] Decimals := aStruct [r] [DBS_DEC] EndIf GridRow := GetWindowRow (GridHandle) GridCol := GetWindowCol (GridHandle) If lInputItems == .T. ControlType := 'X' Ldelta := 1 Else p := Type (FieldName) Switch p Case 'C' Case 'D' Case 'M' ControlType := p Exit Case 'L' ControlType := p Ldelta := 1 Exit Case 'N' ControlType := IFEMPTY(Decimals, 'I', 'F') End Switch EndIf _HMG_InplaceParentHandle := If( _HMG_BeginWindowMDIActive, GetActiveMdiHandle(), GetActiveWindow() ) If ControlType == 'M' r := InputBox ( '' , _HMG_aControlCaption [CellColIndex] , STRTRAN(CellData, chr(141), ' ') , , , .T. ) If _HMG_DialogCancelled == .F. Replace &FieldName With r _HMG_IPE_CANCELLED := .F. Else _HMG_IPE_CANCELLED := .T. EndIf (_GridWorkArea)->( dbrunlock() ) Else DEFINE WINDOW _InPlaceEdit; AT This.CellRow + GridRow - _HMG_aControlRow - 1 , This.CellCol + GridCol - _HMG_aControlCol + 2; WIDTH This.CellWidth; HEIGHT This.CellHeight + 6 + Ldelta; MODAL; NOCAPTION; NOSIZE; ON INIT _SetFocus ( 'Control_1' , '_InPlaceEdit' ) ON KEY CONTROL+U ACTION IF( _IsWindowActive('_InPlaceEdit'),; _InPlaceEdit.Control_1.Value := IF( ControlType == 'L', If ( CellData , 1 , 2 ), CellData ), NIL ) ON KEY RETURN ACTION IF( _IsWindowActive('_InPlaceEdit'),; _InPlaceEditOk ( i , _InPlaceEdit.Control_1.Value , aValid , CellColIndex ,; sFieldName , _GridWorkArea , aValidMessages , lock , ControlType , aInputItems ), NIL ) ON KEY ESCAPE ACTION ( _HMG_IPE_CANCELLED := .T. ,; dbrunlock(), IF( _IsWindowActive('_InPlaceEdit'), _InPlaceEdit.Release, NIL ) ) If lInputItems == .T. * Fill Items Array For p := 1 To Len ( aInputItems [ CellColIndex ] ) aadd ( aItems , aInputItems [ CellColIndex ] [p] [1] ) Next p * Fill Values Array For p := 1 To Len ( aInputItems [ CellColIndex ] ) aadd ( aValues , aInputItems [ CellColIndex ] [p] [2] ) Next p r := aScan ( aValues , CellData ) DEFINE COMBOBOX Control_1 ROW 0 COL 0 ITEMS aItems WIDTH This.CellWidth VALUE if ( Empty(r) , 1 , r ) FONTNAME _hmg_aControlFontName FONTSIZE _hmg_aControlFontSize ON LISTDISPLAY Eval( bOnDisplay ) ON LISTCLOSE Eval( bOnCloseUp ) END COMBOBOX ElseIf ControlType == 'C' CellData := rtrim ( CellData ) DEFINE TEXTBOX Control_1 ROW 0 COL 0 WIDTH This.CellWidth HEIGHT This.CellHeight + 6 VALUE CellData MAXLENGTH Width FONTNAME _hmg_aControlFontName FONTSIZE _hmg_aControlFontSize END TEXTBOX ElseIf ControlType == 'D' DEFINE DATEPICKER Control_1 ROW 0 COL 0 HEIGHT This.CellHeight + 6 WIDTH This.CellWidth VALUE CellData UPDOWN .T. SHOWNONE .T. FONTNAME _hmg_aControlFontName FONTSIZE _hmg_aControlFontSize END DATEPICKER ElseIf ControlType == 'L' DEFINE CHECKBOX Control_1 ROW 0 COL 0 WIDTH This.CellWidth CAPTION '' VALUE CellData FONTNAME _hmg_aControlFontName FONTSIZE _hmg_aControlFontSize END CHECKBOX ElseIf ControlType == 'I' DEFINE TEXTBOX Control_1 ROW 0 COL 0 NUMERIC .T. WIDTH This.CellWidth HEIGHT This.CellHeight + 6 VALUE CellData MAXLENGTH Width FONTNAME _hmg_aControlFontName FONTSIZE _hmg_aControlFontSize END TEXTBOX ElseIf ControlType == 'F' DEFINE TEXTBOX Control_1 ROW 0 COL 0 NUMERIC .T. INPUTMASK Replicate ( '9', Width - Decimals - 1 ) + '.' + Replicate ( '9', Decimals ) WIDTH This.CellWidth HEIGHT This.CellHeight + 6 VALUE CellData FONTNAME _hmg_aControlFontName FONTSIZE _hmg_aControlFontSize END TEXTBOX EndIf END WINDOW ACTIVATE WINDOW _InPlaceEdit EndIf _MdiWindowsActivate ( _HMG_InplaceParentHandle ) // GF HMG 47 _HMG_InplaceParentHandle := 0 SetFocus ( GridHandle ) // Restore Original Record Pointer Go BackRec // Restore Original WorkArea If Select (BackArea) != 0 Select &BackArea Else Select 0 EndIf Return Nil *-----------------------------------------------------------------------------* Static Procedure _InPlaceEditOk ( i , r , aValid , CellColIndex , sFieldName , AreaName , aValidMessages , lock , ControlType , aInputItems ) *-----------------------------------------------------------------------------* Local b , Result , mVar , TmpName If ValType ( aValid ) == 'A' If Len ( aValid ) >= CellColIndex If aValid [ CellColIndex ] != Nil Result := _GetValue ( 'Control_1' , '_InPlaceEdit' ) If GetControlType( 'Control_1' , '_InPlaceEdit' ) == 'COMBO' Result := iif ( Result == 1 , .T. , .F. ) EndIf TmpName := 'MemVar' + AreaName + sFieldname mVar := TmpName &mVar := Result b := Eval ( aValid [ CellColIndex ] ) If b == .f. If ValType ( aValidMessages ) == 'A' If Len ( aValidMessages ) >= CellColIndex If aValidMessages [CellColIndex] != Nil MsgExclamation ( aValidMessages [CellColIndex] ) Else MsgExclamation (_HMG_BRWLangError[11]) EndIf Else MsgExclamation (_HMG_BRWLangError[11]) EndIf Else MsgExclamation (_HMG_BRWLangError[11]) EndIf Else _InPlaceEditSave ( i , sFieldname , AreaName , r , lock , ControlType , aInputItems , CellColIndex ) EndIf Else _InPlaceEditSave ( i , sFieldname , AreaName , r , lock , ControlType , aInputItems , CellColIndex ) EndIf EndIf Else _InPlaceEditSave ( i , sFieldname , AreaName , r , lock , ControlType , aInputItems , CellColIndex ) EndIf _HMG_IPE_CANCELLED := .F. Return *-----------------------------------------------------------------------------* Static Procedure _InPlaceEditSave ( i , Fieldname , Alias , r , lock , ControlType , aInputItems , CellColIndex ) *-----------------------------------------------------------------------------* If ControlType == 'X' r := aInputItems [ CellColIndex ] [ r ] [ 2 ] EndIf If lock == .t. (Alias)->( Rlock() ) EndIf FieldName := Alias + "->" + Fieldname Replace &FieldName With r If lock == .t. (Alias)->( dbrunlock() ) EndIf _BrowseRefresh ( '' , '' , i ) _InPlaceEdit.Release Return

gustow: Григорий, в процессе составления "списка примеров" получил (при запуске скомпилированного примера из BASIC\Charts такой вот вылет (см. http://slil.ru/27270178). Win98 SE

gfilatov: gustow пишет: Win98 SE Called from TOLEAUTO:OPEN(0) Called from OPENTABLE(246) in demo.prg Called from (b)MAIN(46) in demo.prg Ничего удивительного - проверьте, установлен ли у Вас MDAC 2.8 SP1 по ссылке http://msdn2.microsoft.com/en-us/data/aa937730.aspx Это необходимо только для "устаревшей" Win98 SE естественно.

gfilatov: Новый релиз библиотеки выложил по адресу: http://minigui.mylivepage.ru/file/?fileid=6882 а также, как обычно, на сервере http://hmgextended.com по адресу: http://hmgextended.com/files/CONTRIB/hmg-1.6-64-setup.zip Также обновил с учетом последних изменений полную сборку IDE на сайте http://minigui.mylivepage.ru по адресу: http://minigui.mylivepage.ru/file/?fileid=6881 Что нового в IDE: - исправление ошибок (как обычно ); - значительно ускорена загрузка больших форм за счет ее оптимизации; - добавлена возможность компиляции проектов с помощью MinGW (я не проверял).

valery2: DEFINE CHECKBOX Control_1 ROW 0 COL 0 WIDTH This.CellWidth CAPTION '' VALUE CellData FONTNAME _hmg_aControlFontName FONTSIZE _hmg_aControlFontSize ON CHANGE IF( _IsWindowActive('_InPlaceEdit'),; _InPlaceEditOk ( i , _InPlaceEdit.Control_1.Value , aValid , CellColIndex ,; sFieldName , _GridWorkArea , aValidMessages , lock , ControlType , aInputItems ), NIL ) END CHECKBOX

gustow: gfilatov пишет: проверьте, установлен ли у Вас MDAC 2.8 SP1 Да оно мне как-то (пока) "и даром не надь!.. и с деньгами не надь!.." ((с) м/ф "Волшебное кольцо" - по "Архангельским новеллам") :) Просто проверял "на дурака" (для описания - "что вижу, о том пою") :) Хорошо бы прежде чем пытаться открывать - как-то проверить: а оно у клиента на машинке есть? И коли нет - "по-человечески" сказать: мол, обойдесся...

gfilatov: gustow пишет: Хорошо бы прежде чем пытаться открывать - как-то проверить Нет проблем - добавьте в самом начале Procedure Main такую проверку: IF !IsWinNT() .AND. !CheckMDAC() MsgStop( 'This Program Runs In Win2000/XP Only!', 'Stop' ) Return ENDIF где Static Function CheckMDAC() LOCAL oReg, cKey := "" OPEN REGISTRY oReg KEY HKEY_LOCAL_MACHINE ; SECTION "Software\CLASSES\MDACVer.Version\CurVer" GET VALUE cKey NAME "" OF oReg CLOSE REGISTRY oReg Return !EMPTY(cKey)

gustow: gfilatov пишет: Нет проблем - добавьте в самом начале Procedure Main Я про пример, который идет в сборке (там бы поправить)... или я уж перфекционизмом мучаюсь?.. :) (хотя, наверно, маловато будет "новичков" с "устаревшей" Win98 - но хочется, чтобы уж все или работало "везде" - или говорило внятно, почему не работает [чтоб новичка непонятными вылетами не пугать]) И... Григорий, не пора ли новую ветку открывать ("часть IV")? Или рановато? А то эта начинается с анонса аж 48-го билда... :)

gfilatov: gustow пишет: Я про пример, который идет в сборке (там бы поправить)... Сделаю в следующей сборке gustow пишет: не пора ли новую ветку открывать ("часть IV")? Или рановато? Ждем-с, пока эта ветка получит хотя бы четыре звезды в форуме

gfilatov: Обновил сборку компилятора Харбор 1.1.0 для BCC 5.5.1 (Harbour MiniGUI Extended Distribution) по адресу: http://minigui.mylivepage.ru/file/?fileid=6894 Harbour Build Info --------------------------- Version: Harbour 1.1.0dev (Rev. 10684) Compiler: Borland C++ 5.5.1 (32-bit) PCode version: 0.2 ChangeLog last entry: 2009-03-24 01:08 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) ChangeLog ID: ChangeLog 10684 2009-03-24 00:02:25Z druzus Built on: Mar 24 2009 10:29:35 Extra C compiler options: -DHB_FM_STATISTICS_OFF -DHB_GUI -DHB_FM_STD_ALLOC Build options: Language options: (Clipper 5.3) (Clipper 5.x undoc) (Xbase++) (Flagship) (dirty extensions)

gfilatov: Снова обновил сборку компилятора Харбор 1.1.0 для BCC 5.5.1 (Harbour MiniGUI Extended Distribution) по адресу: http://minigui.mylivepage.ru/file/?fileid=6936 Harbour Build Info --------------------------- Version: Harbour 1.1.0dev (Rev. 10775) Compiler: Borland C++ 5.5.1 (32-bit) PCode version: 0.2 ChangeLog last entry: 2009-04-03 03:45 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) ChangeLog ID: ChangeLog 10775 2009-04-03 01:39:08Z druzus Built on: Apr 3 2009 11:37:04 Extra C compiler options: -DHB_FM_STATISTICS_OFF -DHB_GUI -DHB_FM_STD_ALLOC Build options: Language options: (Clipper 5.3) (Clipper 5.x undoc) (Xbase++) (Flagship) (dirty extensions) ---------------------------

gfilatov: Новый релиз библиотеки выложил по адресу: http://minigui.mylivepage.ru/file/?fileid=7017 а также, как обычно, на сервере http://hmgextended.com по адресу: http://hmgextended.com/files/CONTRIB/hmg-1.6-65-setup.zip Что нового: - исправление обнаруженных ошибок и неточностей кода; - добавлена возможность перемещения внутри строки по полям в элемент управления GRID - добавлена возможность перетаскивания записей в элементе управления ListBox; - обновлена библиотека HbSqlite3 (спасибо Петру Черному!); - обновлены сборки компилятора Харбор и HMGS-IDE; - новые примеры использования TsBrowse совместно с ADORDD, простые транзакции для DBF - обновлены некоторые старые примеры (как обычно ).

Sergey Spirin: Григорий, здравствуйте, Не могли бы Вы в двух словах рассказать о вот этом: - поддержка пользовательских компонентов (заимствована из оффициального релиза); Это реализовано в полном объеме? Интересно, что сейчас тестируют Xailer2, в котором ждут, похоже, аналогичную функциональность. У некоторых пользователей Xailer "витает" идея User Preview Фаста как обычного контрола.... Хочу понять, это применимо только к Xailer или может использоваться каким-то образом шире.

gfilatov: Здравствуйте, Сергей! Под пользовательскими компонентами в МиниГуи подразумевается возможность создавать собственные элементы управления, не изменяя самой библиотеки. Описание на языке оригинала ниже: User Components Development Reference This standard interface allow HMG users to create its own components (ie: new controls) without need to modify HMG library itself. - InstallEventHandler ( <cEventHandlerFunctionName> )       Every time that an event is triggered by the system the specified       function will be called.       This function will receive the following parameters:                   hWnd, nMsg, wParam, lParam       If your function process the message, it must return a not NIL       value. If not, it must return NIL. - InstallMethodHandler(<cMethodName>,<cMethodHandlerProcName>)       Every time that specified method is called, your procedure will       be executed.       If your procedure process the method, you must set the 'user       process flag' to .T. If not, you must       set it to .F. - InstallPropertyHandler(<cPropName>,<cSetFucName>,<cGetFuncName>)       When the specified property is set, <cSetFucName> is called       with all the original parameters               When the specified property is value retrieved <cGetFucName> is       called with all the original parameters.       In both cases if your functions process the property, you must       set the 'user process flag' to .T.       If not, you must set it to .F. Other Considerations:       If you've created components that requires #command directives       (ie. a control) you must add these definitions to i_UsrInit.ch       file located at HMG's INCLUDE folder.       The definitions must include start and end markers that will be       used to allow the creation of automated installation and       maintenance procedures for components.       The format for start marker is:       #define BASEDEF_<YourComponentTypeName>       The format for end marker is:       #undef BASEDEF_<YourComponentTypeName>       If you've created methods or properties with new names (not       currently specified in i_windows.ch, DECLARE WINDOW command       definition) you must add translation directives for them in       'i_UsrSOOP.ch' file, located at HMG's INCLUDE folder.       The definitions must include start and end markers too and the       translation directives must follow special rules.       The format for start marker is:       #define SOOP_<YourComponentTypeName> ;;       The format for translation directives for methods is:       #xtranslate <Window> . \<Control\> . MethodName  => Domethod ( <"Window">, \<"Control"\> , "MethodName" ) ;;       The format for translation directives for properties is:       #xtranslate <Window> . \<Control\> . PropName  => GetProperty ( <"Window">, \<"Control"\> , "PropName" )  ;;       #xtranslate <Window> . \<Control\> . PropName  := \<v\> => SetProperty ( <"Window">, \<"Control"\> , "PropName" , \<v\> )  ;;       The format for end marker is:       #undef SOOP_<YourComponentTypeName> ;;

Sergey Spirin: Ок. Спасибо. То есть, создание дополнительных компонентов-контролов возможно. Тогда у меня такой вопрос: Что необходимо было бы от FrsystH.dll, чтобы реализовать контрол-предпросмотр? Например, достаточно ли будет таких методов: SetHDC() - передать хэндл графического контекста контрола. DrawPage() - нарисовать страницу на этом контексте. Этого достаточно?

gfilatov: Sergey Spirin пишет: Этого достаточно? Сергей! Мне трудно что-либо сказать без понимания работы Вашей DLL. В качестве примера могу привести реализацию универсального обращения к элементу ActiveX, выполненную в качестве пользовательского компонента: *------------------------------------------------------------------------------* Init Procedure _InitActiveX *------------------------------------------------------------------------------* InstallMethodHandler ( 'Release' , 'ReleaseActiveX' ) InstallPropertyHandler ( 'Object' , 'SetActiveXObject' , 'GetActiveXObject' ) Return *------------------------------------------------------------------------------* Procedure _DefineActivex ( cControlName, cParentForm, nRow, nCol , nWidth , nHeight , cProgId ) *------------------------------------------------------------------------------* Local mVar , nControlHandle , aControlHandles , k := 0 , nParentFormHandle , oOle Local nAtlDllHandle , nInterfacePointer * If defined inside DEFINE WINDOW structure, determine cParentForm if _HMG_BeginWindowActive = TRUE .or. _HMG_BeginDialogActive = TRUE cParentForm := iif(_HMG_BeginDialogActive, _HMG_ActiveDialogName, _HMG_ActiveFormName) endif * If defined inside a Tab structure, adjust position and determine * cParentForm if _HMG_FrameLevel > 0 nCol := nCol + _HMG_ActiveFrameCol [_HMG_FrameLevel] nRow := nRow + _HMG_ActiveFrameRow [_HMG_FrameLevel] cParentForm := _HMG_ActiveFrameParentFormName [_HMG_FrameLevel] EndIf * Check for errors * Check Parent Window If .Not. _IsWindowDefined (cParentForm) MsgMiniGuiError("Window: "+ cParentForm + " is not defined. Program terminated" ) Endif * Check Control If _IsControlDefined (cControlName,cParentForm) MsgMiniGuiError ("Control: " + cControlName + " Of " + cParentForm + " Already defined. Program Terminated" ) Endif * Check cProgId If valType (cProgId) <> 'C' MsgMiniGuiError ("Control: " + cControlName + " Of " + cParentForm + " PROGID Property Invalid Type. Program Terminated" ) EndIf If Empty (cProgId) MsgMiniGuiError ("Control: " + cControlName + " Of " + cParentForm + " PROGID Can't be empty. Program Terminated" ) EndIf * Define public variable associated with control mVar := '_' + cParentForm + '_' + cControlName nParentFormHandle := GetFormHandle (cParentForm) * Init Activex aControlHandles := InitActivex( nParentFormHandle , cProgId , nCol , nRow , nWidth , nHeight ) nControlHandle := aControlHandles [1] nInterfacePointer := aControlHandles [2] nAtlDllHandle := aControlHandles [3] If _HMG_BeginTabActive = .T. aAdd ( _HMG_ActiveTabCurrentPageMap , nControlhandle ) EndIf * Create OLE control oOle := CreateObject( nInterfacePointer ) k := _GetControlFree() Public &mVar. := k _HMG_aControlType [k] := "ACTIVEX" _HMG_aControlNames [k] := cControlName _HMG_aControlHandles [k] := nControlHandle _HMG_aControlParenthandles [k] := nParentFormHandle _HMG_aControlIds [k] := 0 _HMG_aControlProcedures [k] := "" _HMG_aControlPageMap [k] := {} _HMG_aControlValue [k] := Nil _HMG_aControlInputMask [k] := "" _HMG_aControllostFocusProcedure [k] := "" _HMG_aControlGotFocusProcedure [k] := "" _HMG_aControlChangeProcedure [k] := "" _HMG_aControlDeleted [k] := .F. _HMG_aControlBkColor [k] := Nil _HMG_aControlFontColor [k] := Nil _HMG_aControlDblClick [k] := "" _HMG_aControlHeadClick [k] := {} _HMG_aControlRow [k] := nRow _HMG_aControlCol [k] := nCol _HMG_aControlWidth [k] := nWidth _HMG_aControlHeight [k] := nHeight _HMG_aControlSpacing [k] := 0 _HMG_aControlContainerRow [k] := iif ( _HMG_FrameLevel > 0 ,_HMG_ActiveFrameRow [_HMG_FrameLevel] , -1 ) _HMG_aControlContainerCol [k] := iif ( _HMG_FrameLevel > 0 ,_HMG_ActiveFrameCol [_HMG_FrameLevel] , -1 ) _HMG_aControlPicture [k] := "" _HMG_aControlContainerHandle [k] := 0 _HMG_aControlFontName [k] := Nil _HMG_aControlFontSize [k] := Nil _HMG_aControlFontAttributes [k] := {} _HMG_aControlToolTip [k] := '' _HMG_aControlRangeMin [k] := 0 _HMG_aControlRangeMax [k] := 0 _HMG_aControlCaption [k] := '' _HMG_aControlVisible [k] := .t. _HMG_aControlHelpId [k] := nAtlDllHandle _HMG_aControlFontHandle [k] := Nil _HMG_aControlBrushHandle [k] := 0 _HMG_aControlEnabled [k] := .T. _HMG_aControlMiscData1 [k] := oOle Return *------------------------------------------------------------------------------* Procedure ReleaseActiveX ( cWindow , cControl ) *------------------------------------------------------------------------------* If _IsControlDefined ( cControl, cWindow ) .And. GetControlType ( cControl , cWindow ) == 'ACTIVEX' ExitActivex( GetControlHandle ( cControl , cWindow ), _HMG_aControlHelpId [ GetControlIndex ( cControl , cWindow ) ] ) _HMG_UserComponentProcess := .T. else _HMG_UserComponentProcess := .F. endif Return *------------------------------------------------------------------------------* Function SetActiveXObject ( cWindow , cControl ) *------------------------------------------------------------------------------* If GetControlType ( cControl , cWindow ) == 'ACTIVEX' MsgExclamation ( 'This Property is Read Only!' , 'Warning' ) endif _HMG_UserComponentProcess := .F. Return Nil *------------------------------------------------------------------------------* Function GetActiveXObject ( cWindow , cControl ) *------------------------------------------------------------------------------* Local RetVal := Nil If GetControlType ( cControl , cWindow ) == 'ACTIVEX' _HMG_UserComponentProcess := .T. RetVal := _GetControlObject ( cControl , cWindow ) else _HMG_UserComponentProcess := .F. endif Return RetVal *-----------------------------------------------------------------------------* Function _GetControlObject ( ControlName, ParentForm ) *-----------------------------------------------------------------------------* Local mVar , i mVar := '_' + ParentForm + '_' + ControlName i := &mVar if i == 0 Return '' EndIf Return ( _HMG_aControlMiscData1 [ &mVar ] ) *------------------------------------------------------------------------------* * Low Level C Routines *------------------------------------------------------------------------------* #pragma BEGINDUMP #include <windows.h> #include <commctrl.h> #include <hbapi.h> #include <hbvm.h> #include <hbstack.h> typedef HRESULT(WINAPI *LPAtlAxGetControl)(HWND hwnd,IUnknown** unk); typedef HRESULT(WINAPI *LPAtlAxWinInit)(void); /* InitActivex() function. 2008.07.15 - Roberto Lуpez <harbourminigui@gmail.com> http://harbourminigui.googlepages.com Inspired by the works of Oscar Joel Lira Lira <oskar78@users.sourceforge.net> for Freewin project http://www.sourceforge.net/projects/freewin */ HB_FUNC( INITACTIVEX ) { HMODULE hlibrary; HWND hchild; IUnknown *pUnk; IDispatch *pDisp; LPAtlAxWinInit AtlAxWinInit; LPAtlAxGetControl AtlAxGetControl; hlibrary = LoadLibrary( "Atl.Dll" ); AtlAxWinInit = ( LPAtlAxWinInit ) GetProcAddress( hlibrary, "AtlAxWinInit" ); AtlAxGetControl = ( LPAtlAxGetControl ) GetProcAddress( hlibrary, "AtlAxGetControl" ); AtlAxWinInit(); hchild = CreateWindowEx( 0, "AtlAxWin",hb_parc(2), WS_CHILD | WS_VISIBLE , hb_parni(3), hb_parni(4), hb_parni(5), hb_parni(6), (HWND)hb_parnl( 1 ) , 0 , 0 , 0 ); AtlAxGetControl( (HWND) hchild , &pUnk ); pUnk->lpVtbl->QueryInterface(pUnk,&IID_IDispatch,(void**)&pDisp); hb_reta( 3 ); hb_stornl( (LONG) hchild , -1, 1 ); hb_stornl( (LONG) pDisp , -1, 2 ); hb_stornl( (LONG) hlibrary , -1, 3 ); } HB_FUNC( EXITACTIVEX ) { DestroyWindow ( (HWND)hb_parnl( 1 ) ); FreeLibrary ( (HMODULE)hb_parnl( 2 ) ); } #pragma ENDDUMP А теперь пример программы для использования WMPlayer.OCX в качестве элемента ActiveX: /* * MINIGUI - Harbour Win32 GUI library Demo * * Copyright 2002-2008 Roberto Lopez <harbourminigui@gmail.com> * http://harbourminigui.googlepages.com/ * * Activex Sample: Inspired by Freewin Activex inplementation by * Oscar Joel Lira Lira http://sourceforge.net/projects/freewin */ #include "minigui.ch" Procedure Main DEFINE WINDOW Win1 ; AT 0,0 ; WIDTH 800 ; HEIGHT 500 ; TITLE 'ActiveX Component Demo' ; MAIN ; ON MAXIMIZE ( Win1.Test.Width := (Win1.Width) - 100, Win1.Test.Height := (Win1.Height) - 100 ) ; ON SIZE ( Win1.Test.Width := (Win1.Width) - 100, Win1.Test.Height := (Win1.Height) - 100 ) ; ON RELEASE Win1.Test.Release DEFINE MAIN MENU POPUP "Test" MENUITEM "Play File" ACTION Test() END POPUP END MENU DEFINE ACTIVEX Test ROW 10 COL 50 WIDTH 700 HEIGHT 400 PROGID "WMPlayer.OCX.7" END ACTIVEX END WINDOW CENTER WINDOW Win1 ACTIVATE WINDOW Win1 Return Procedure Test() Win1.Test.Object:url := "c:\\minigui\\samples\\basic\\resourcedemo\\sample.wav" Return Возможно, это покажет Вам путь (например, оформление Вашей DLL как элемента ActiveX )

Sergey Spirin: Добрый день, Григорий. Вы меня не совсем поняли. В данном случае, я не собираюсь сам писать контролы для предпросмотра ни под Xailer, ни под MiniGui и т.д. Я только хочу обеспечить такую возможность написания тем, кому это потребуется или захочется ActiveX делать не буду. В данном случае это был бы "чрезмерный огород", я же хочу найти оптимальное решение, с максимальным быстродействием, без раздутого кода и т.д. То есть, нужно "нативное" решение... Как COM-решение, есть FastReport Studio - можно брать и пользоваться FRH же по задумке - "родной".... То есть, мне хорошо бы сейчас понять с Вашей помощью что нужно было бы для реализации такого контрола в MiniGUI. Ok. Чуть конкретизирую вопросы: - Известен ли hdc (device context handle) у контролов в MiniGUI? - Для своей отрисовки контрол обрабатыват WM_PAINT? - Существуют ли какие-нибудь ограничения при отрисовках или все только "в русле" WinApi? Спасибо.

gfilatov: Sergey Spirin пишет: - Известен ли hdc (device context handle) у контролов в MiniGUI? - Для своей отрисовки контрол обрабатыват WM_PAINT? - Существуют ли какие-нибудь ограничения при отрисовках или все только "в русле" WinApi? 1) Да, hdc контрола всегда известен, он сохраняется в массиве _HMG_aControlHandles на prg-уровне. 2) нет, событие WM_PAINT используется только для отрисовки графических задач (линии, дуги и т.д.) и выполнения функции DefWindowProc() для форм, а также выполнения пользовательской прорисовки форм. 3) точно не скажу, но вроде используется только WinApi

Sergey Spirin: gfilatov пишет: 1) Да, hdc контрола всегда известен, он сохраняется в массиве _HMG_aControlHandles на prg-уровне. 2) нет, событие WM_PAINT используется только для отрисовки графических задач (линии, дуги и т.д.) и выполнения функции DefWindowProc() для форм, а также выполнения пользовательской прорисовки форм. 3) точно не скажу, но вроде используется только WinApi Ok. Спасибо. А как, схематично, выглядело бы реализация контрола, который, допустим, рисует пять красных квадратов на hdc-полотне 100x100, но имеющий размер 50x50? То есть, выводящий графический примитив, но скроллируемый.

gfilatov: Sergey Spirin пишет: А как, схематично, выглядело бы реализация контрола Сергей! Вот реальный пример подключения пользовательского компонента для универсальной печати содержания элемента управления GRID: *------------------------------------------------------------------------------* Init Procedure _InitPrintGrid *------------------------------------------------------------------------------* InstallMethodHandler ( 'Print' , 'MyGridPrint' ) Return *------------------------------------------------------------------------------* Procedure MyGridPrint ( cWindowName , cControlName , MethodName ) *------------------------------------------------------------------------------* MethodName := Nil If GetControlType ( cControlName , cWindowName ) == 'GRID' gridprint( cControlName , cWindowName ) _HMG_UserComponentProcess := .T. else _HMG_UserComponentProcess := .F. endif Return Здесь пользовательской функции gridprint( cControlName , cWindowName ) передаются только имя контрола и его родительского окна, но возможно передавать любой список параметров, а также имя требуемого метода для выполнения (в этом примере не используется). Затем вся обработка происходит в этой пользовательской функции

Sergey Spirin: gfilatov пишет: Вот реальный пример подключения Ok. Насколько я понимаю, это добавление метода... К тому же, работа gridprint(), кажется, не визуальна, нет отрисовок.. Меня все-таки интересует именно новый контрол со скроллируемой поверхностью для рисования на ней. Хочется понять момент инициализации этого контрола, чтобы вызвать что-то типа: FrPrn:SetDC( Control:hDC ) И момент отрисовки, чтобы вызвать что-то типа: FrPrn:DrawPage()

Петр: gfilatov пишет: 1) Да, hdc контрола всегда известен, он сохраняется в массиве _HMG_aControlHandles на prg-уровне. В _HMG_aControlHandles содержит что угодно но не hdc, в лучшем случае это может быть hWnd. Уточнить поможет _HMG_aControlType hdc = iif ( _HMG_aControlType$"LABEL", getdc(_HMG_aControlHandles), NIL )

gfilatov: Петр пишет: Уточнить поможет _HMG_aControlType hdc = iif ( _HMG_aControlType$"LABEL", getdc(_HMG_aControlHandles), NIL ) Согласен Sergey Spirin пишет: Хочется понять момент инициализации этого контрола Для установки обработчика событий для пользовательских компонент используется процедура Procedure InstallEventHandler, которая вызывается в message loop процедуре Events(). Внутри своего обработчика Вы можете отследить момент инициализации (событие WM_INITDIALOG и т.п.) и момент отрисовки (событие WM_PAINT) Пример обработчика для обычной кнопки: #define WM_COMMAND 0x0111 #define BN_CLICKED 0 *------------------------------------------------------------------------------* Function MyButtonEventHandler ( hWnd, nMsg, wParam, lParam ) *------------------------------------------------------------------------------* Local i Local RetVal := Nil hWnd := Nil // Unused variable if nMsg == WM_COMMAND i := Ascan ( _HMG_aControlHandles , lParam ) If i > 0 IF HiWord (wParam) == BN_CLICKED RetVal := 0 _DoControlEventProcedure ( _HMG_aControlProcedures , i ) Endif Endif endif Return RetVal

Sergey Spirin: gfilatov пишет: Procedure InstallEventHandler, которая вызывается в message loop процедуре Events(). Ok. Спасибо. Здесь ясно. А само определение контрола будет аналогично примеру с ActiveX? То есть, вплоть до вызова CreateWindowEx() (в HB_FUNC( INITACTIVEX ))? Ну, и с чего начали Если исходить из предположения, что некий метод DrawPage() аккуратно и красиво рисует на переданном hdc отчеты, то этого будет достаточно для полноценного функционирования обсуждаемого гипотетического контрола? То есть, такой контрол можно будет расположить "как хочется", расположить их несколько на одном окне и т.п. ?

gfilatov: Sergey Spirin пишет: Ну, и с чего начали Снова смотрим пример определения простой кнопки: *------------------------------------------------------------------------------* Procedure _DefineMyButton ( cName , nRow , nCol , cCaption , bAction , cParent ) *------------------------------------------------------------------------------* Local hControlHandle, nId, hParentFormHandle, k, cMacroVar If .Not. _IsWindowDefined (cParent) MsgMiniGuiError("Window: "+ cParent + " is not defined.") Endif If _IsControlDefined (cName,cParent) MsgMiniGuiError ("Control: " + cName + " Of " + cParent + " Already defined.") Endif cMacroVar := '_' + cParent + '_' + cName k := _GetControlFree() nId := _GetId() hParentFormHandle := GetFormHandle (cParent) hControlHandle := InitMyButton ( ; hParentFormHandle , ; nRow , ; nCol , ; cCaption , ; nId ; ) Public &cMacroVar. := k _HMG_aControlType [k] := 'MYBUTTON' _HMG_aControlNames [k] := cName _HMG_aControlHandles [k] := hControlHandle _HMG_aControlParenthandles [k] := hParentFormHandle _HMG_aControlIds [k] := 0 _HMG_aControlProcedures [k] := bAction _HMG_aControlPageMap [k] := {} _HMG_aControlValue [k] := Nil _HMG_aControlInputMask [k] := "" _HMG_aControllostFocusProcedure [k] := "" _HMG_aControlGotFocusProcedure [k] := "" _HMG_aControlChangeProcedure [k] := "" _HMG_aControlDeleted [k] := .F. _HMG_aControlBkColor [k] := Nil _HMG_aControlFontColor [k] := Nil _HMG_aControlDblClick [k] := "" _HMG_aControlHeadClick [k] := {} _HMG_aControlRow [k] := 0 _HMG_aControlCol [k] := 0 _HMG_aControlWidth [k] := 0 _HMG_aControlHeight [k] := 0 _HMG_aControlSpacing [k] := 0 _HMG_aControlContainerRow [k] := -1 _HMG_aControlContainerCol [k] := -1 _HMG_aControlPicture [k] := "" _HMG_aControlContainerHandle [k] := 0 _HMG_aControlFontName [k] := Nil _HMG_aControlFontSize [k] := Nil _HMG_aControlFontAttributes [k] := {} _HMG_aControlToolTip [k] := '' _HMG_aControlRangeMin [k] := 0 _HMG_aControlRangeMax [k] := 0 _HMG_aControlCaption [k] := '' _HMG_aControlVisible [k] := .t. _HMG_aControlHelpId [k] := 0 _HMG_aControlFontHandle [k] := Nil _HMG_aControlBrushHandle [k] := 0 _HMG_aControlEnabled [k] := .T. _HMG_aControlMiscData1 [k] := 0 Return Если Ваша Си-функция InitMyButton будет принимать координаты и размер создаваемой кнопки (контрола) и соответственно размещать этот контрол, то нет проблем расположить "как хочется"... Да, кстати, для кнопки эта функция выглядит так: *------------------------------------------------------------------------------* * Low Level C Routines *------------------------------------------------------------------------------* #pragma BEGINDUMP #include <windows.h> #include "hbapi.h" #include "hbapiitm.h" HB_FUNC( INITMYBUTTON ) { HWND hwnd = (HWND) hb_parnl (1) ; HWND hbutton; hbutton = CreateWindow( "button" , hb_parc(4) , BS_NOTIFY | WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE, hb_parni(3) , hb_parni(2) , 120 , 28 , hwnd , (HMENU)hb_parni(5) , GetModuleHandle(NULL) , NULL ) ; hb_retnl ( (LONG) hbutton ); } #pragma ENDDUMP

Sergey Spirin: Спасибо большое. Собственно, я не сомневался, что на "pure C / WinApi level" это все осуществимо безпрепятственно. Меня волновал вопрос "надстроек", но, похоже, это не про MiniGui Ok. Значит вердикт такой - при наличии упомянутых методов в FRH, пользовательский предпросмотр в MiniGui вполне может быть реализован пользователем... В Xailer2, похоже, тоже... Еще раз, спасибо.

SADSTAR2: Что то я не увидел в SQLite реализацию _create_function и _create_collation. Смотрел в Си-исходнике и в двух папках примеров. Или я плохо смотрел?

Петр: SADSTAR2 пишет: Или я плохо смотрел? Смотрели вы нормально ;) Их там действительно нет. Я опубликую их здесь на форуме. Я не хочу выкладывать сырые версии, а в условиях отсуствия свободного времени тестирование проходит вяло. Также я рассматриваю возможность работы связки sqlite + ICU. Но это дополнительно к вашей программе несколько dll, общим весом более 10 Mb, а также необходимость использования разных ухищрения для работы с bcc по крайней мере версиии 5.5. Рассматриваются и другие варианты.

Петр: Еще заметка по поводу _create_collation. В идеале и по доброму все это должно соотноситься с codepage - Harbour National Collation Support Module. А это есть очень проблематично, в т.ч. из-за ограниченной Harbour поддержки Unicode. Так что в ближайшем будущем здесь возможны только локальные решения. P.S. Вы бы мне (надеюсь и себе, и другим) очень помогли, если бы написали несколько маленьких тестовых пример, с пояснением какой результат для вас является приемлемым.

Петр: Петр пишет: в т.ч. из-за ограниченной Harbour поддержки Unicode. И фактически отсуствия оной в MiniGUI.

SADSTAR2: Петр пишет: P.S. Вы бы мне (надеюсь и себе, и другим) очень помогли, если бы написали несколько маленьких тестовых пример, с пояснением какой результат для вас является приемлемым. Я бы написал. Но обычно примеры иллюстрируют некую технологию работы. А здесь еще и технологии нет. Только тех.требования. Да? Требования. Общие - безрегистровый (NoCase) поиск в русских полях данных (... LIKE %...% COLLITE ....). Безрегистровая сортировка по русским полям (ordered by ...) варианты реализации 1. Хранить данные в UTF8 - рекомендовано SQLIte. При записи использовать HB_StrToUTF8(), при чтении - HB_UTF8ToStr(). Это удобно тем, что сторонние менеджеры баз SQLite3 правильно показывают такие русские данные. Создать функцию-колайшн "UTF8RusNoCase". Использовать так "SELECT .... WHERE DataColumn LIKE '%"+HB_strToUTF8(FindData)+"%' COLLITE UTF8RusNoCase ordered by ..." 2. Наплевать на рекомендацию. Записывать-считывать без UTF8-преобразования. Это работает - зуб даю. SQLite считает это кодировкой ISO 5339(?) - пишу по памяти. Сторонние менеджеры показывают лажу. Создать пользовательскую функцию UpperRus() которая преобразовывает в соответствии с CP1251. Использовать так "SELECT .... WHERE UpperRus(DataColumn) LIKE '%"+Upper(FindData)+"%' COLLITE BINARY ordered by ..." BINARY - один из трех встроенных колайтов. Используется по-умолчанию. "BINARY - Compares string data using memcmp(), regardless of text encoding." В данном случае его можно применять т.к. русские буквы в CP1251 стоят в нужном порядке - по-алфавиту. Другой случай - "SELECT .... ordered by UpperRus(ResultColumnN)" - сработает? Тогда попробуем по-другому "SELECT ..., UpperRus(ResultColumnN) as OrdCol ...... ordered by OrdCol" Правда в этом варианте есть некоторые мутные пока для меня места. Я думаю - лучше первый вариант. У него больше перспектив и меньше подводных камней. Одно из оснований для моих размышлений. Правильно ли я это понимаю. The default configuration of SQLite only supports case-insensitive comparisons of ASCII characters. The reason for this is that doing full unicode case-insensitive comparisons and case conversions requires tables and logic that would nearly double the size of the SQLite library. The SQLite developers reason that any application that needs full unicode case support probably already has the necessary tables and functions and so SQLite should not take up space to duplicate this ability. В конфигурации по-умолчанию SQLite поддерживает только регистро-чувствительное сравнение ASCI-символов. Причина в том что реализация полного юникодового регистронечувствительного сравнения и регистрового преобразования требует таблиц и алгоритмов которые почти вдвое увеличат размер SQLite-библиотеки. SQLite-разработчики считают что любое приложение, которое нуждается в полной юникодовой регистровой поддержке, вероятно уже имеет необходимые таблицы и функции и поэтому SQLite не должен увеличивать свой размер для дублирования этой возможности. Instead of providing full unicode case support by default, SQLite provides the ability to link against external unicode comparison and conversion routines. The application can overload the built-in NOCASE collating sequence (using sqlite3_create_collation()) and the built-in like(), upper(), and lower() functions (using sqlite3_create_function()). The SQLite source code includes an "ICU" extension that does these overloads. Or, developers can write their own overloads based on their own unicode-aware comparison routines already contained within their project. Вместо того, чтобы обеспечивать полную юникодовую регистровую поддержку по-умолчанию, SQLite предоставляет возможность линковать (связывать, присоединять) внешние процедуры юникодового сравнения и преобразования. Приложение может заменить встроенную последовательность сравнения NOCASE (используя sqlite3_create_collation()) и встроенные функции like(), upper() и lower() (используя sqlite3_create_function()). Исходный код SQLite включает "ICU" расширение которое выполняет эту замену. Или разработчик может написать свою собственную замену основанную на своих собственных процедурах юникод-сравнения содержащихся в его проекте. SQLITE_ENABLE_ICU This option causes the International Components for Unicode or "ICU" extension to SQLite to be added to the build. Похоже - для этого нужно перекомпилировать DLL-ку из исходников. Обычно я не трогаю стандартные функции (только если нет других вариантов). Может быть проблема при обновлении версий. Хотя маэстрам может быть виднее - мой взгляд довольно поверхностен. Вариант с ICU может быть прост и эффективен. На сайтах по Питону я видел подобные сообщения но не понял в чем суть.

gfilatov: Обновил сборку компилятора Харбор 1.1.0 для BCC 5.5.1 (Harbour MiniGUI Extended Distribution) по адресу: http://minigui.mylivepage.ru/file/?fileid=7070 Harbour Build Info --------------------------- Version: Harbour 1.1.0dev (Rev. 10926) Compiler: Borland C++ 5.5.1 (32-bit) PCode version: 0.2 ChangeLog last entry: 2009-04-23 22:11 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) ChangeLog ID: ChangeLog 10926 2009-04-23 20:03:33Z druzus Built on: Apr 24 2009 11:56:59 Extra C compiler options: -DHB_FM_STATISTICS_OFF -DHB_GUI -DHB_FM_STD_ALLOC Build options: Language options: (Clipper 5.3) (Clipper 5.x undoc) (Xbase++) (Flagship) (dirty extensions) ---------------------------

gfilatov: Обновил с учетом последних изменений полную сборку IDE на сайте http://minigui.mylivepage.ru по адресу: http://minigui.mylivepage.ru/file/?fileid=7076 Что нового в IDE: - исправление ошибок (как обычно ); - добавлена возможность компиляции проектов с помощью MinGW (я не проверял).

gfilatov: Новый релиз библиотеки выложил по адресу: http://minigui.mylivepage.ru/file/?fileid=7088 а также, как обычно, на сервере http://hmgextended.com по адресу: http://hmgextended.com/files/CONTRIB/hmg-1.6-66-setup.zip Кратко, что нового: - исправление обнаруженных ошибок и неточностей кода; - новое свойство DisableEdit для элемента управления BtnTextBox; - добавлена возможность управлять свойством Blink для элемента управления Label во время выполнения программы; - обновлена библиотека PropGrid; - обновлены сборки компилятора Харбор и HMGS-IDE; - новый пример HaruPDF для демонстрации создания пользовательских PDF-файлов прямо из Харбор-программы; - обновлены некоторые старые примеры (как обычно ).

gfilatov: АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Готовится к опубликованию новая сборка №67, которая выйдет завтра. Кратко, что нового: - исправление обнаруженных ошибок и неточностей кода; - новая команда SET CENTERWINDOW RELATIVE PARENT | DESKTOP; - программное изменение свойства Value и связанное с этим событие будет теперь происходить только при отличие нового и текущего значения Value; - изменения в элементе управления celled GRID - клавиши Up и Down теперь будут прерывать редактирование с сохранением его результата, а клавиша Enter будет двигать курсор-указатель на поле вправо; - обновлена сборка компилятора Харбор; - новые и обновленные некоторые старые примеры (как обычно ).

gfilatov: Новый релиз библиотеки выложил по адресу: http://minigui.mylivepage.ru/file/?fileid=7207 а также, как обычно, на сервере http://hmgextended.com по адресу: http://hmgextended.com/files/CONTRIB/hmg-1.6-67-setup.zip Желаю удачной выкачки!

gfilatov: Обновил с учетом последних изменений полную сборку IDE на сайте http://minigui.mylivepage.ru по адресу: http://minigui.mylivepage.ru/file/?fileid=7237 Что нового в IDE: - исправление обнаруженных ошибок (как обычно )

gfilatov: Обновил сборку компилятора Харбор 1.1.0 для BCC 5.5.1 (Harbour MiniGUI Extended Distribution) по адресу: http://minigui.mylivepage.ru/file/?fileid=7263 Harbour Build Info --------------------------- Version: Harbour 1.1.0dev (Rev. 11097) Compiler: Borland C++ 5.5.1 (32-bit) Platform: Windows 98 4.10.2222 A PCode version: 0.2 ChangeLog last entry: 2009-05-21 11:19 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) ChangeLog ID: ChangeLog 11097 2009-05-21 09:10:41Z druzus Built on: May 21 2009 13:04:30 Extra C compiler options: -DHB_FM_STATISTICS_OFF -DHB_GUI -DHB_FM_STD_ALLOC Build options: Language options: (Clipper 5.3) (Clipper 5.x undoc) (Xbase++) (Flagship) ---------------------------

gfilatov: Обновил с учетом последних изменений полную сборку IDE на сайте http://minigui.mylivepage.ru по адресу: http://minigui.mylivepage.ru/file/?fileid=7287 Что нового в IDE: - исправление обнаруженных ошибок (как обычно ) - добавлены свойства DRAGITEMS для LISTBOX и DISABLEEDIT для BTNTEXTBOX - теперь показывает цвет шрифта в элементе управления TEXTBOX

gfilatov: Новый релиз библиотеки выложил по адресу: http://minigui.mylivepage.ru/file/?fileid=7321 а также, как обычно, на сервере http://hmgextended.com по адресу: http://hmgextended.com/files/CONTRIB/hmg-1.6-68-setup.zip Также обновил (с учетом последних изменений от автора) полную сборку IDE 0.8.6 по адресу: http://minigui.mylivepage.ru/file/?fileid=7320 Подробные изменения см. в соответствующих файлах changelog.txt. Желаю всем удачной выкачки!

gfilatov: Обновил с учетом последних изменений полную сборку IDE на сайте http://minigui.mylivepage.ru по адресу: http://minigui.mylivepage.ru/file/?fileid=7380 Что нового в IDE: - исправление обнаруженных ошибок (как обычно ); - добавлено окно с информацией о ходе компиляции программы (можно отключить в настройках); - теперь можно построить EXE в папке, отличной от папки проекта (задается в настройках).

gfilatov: Новый релиз библиотеки выложил по адресу: http://minigui.mylivepage.ru/file/?fileid=7385 а также, как обычно, на сервере http://hmgextended.com по адресу: http://hmgextended.com/files/CONTRIB/hmg-1.6-68b-setup.zip Также обновил (с учетом последних изменений от автора) полную сборку Harbour Leto RDD build 0.9 Александра Кресина для Harbour 1.1.0dev по адресу: http://minigui.mylivepage.ru/file/?fileid=7386

gfilatov: Обновил сборку компилятора Харбор 1.1.0 для BCC 5.5.1 (Harbour MiniGUI Extended Distribution) по адресу: http://minigui.mylivepage.ru/file/?fileid=7399 Harbour Build Info --------------------------- Version: Harbour 1.1.0dev (Rev. 11200) Compiler: Borland C++ 5.5.1 (32-bit) PCode version: 0.2 ChangeLog last entry: 2009-06-03 11:36 UTC+0200 Viktor Szakats (harbour.01 syenar hu) ChangeLog ID: ChangeLog 11200 2009-06-03 09:36:39Z vszakats Built on: Jun 3 2009 13:25:26 Extra C compiler options: -DHB_FM_STATISTICS_OFF -DHB_GUI -DHB_FM_STD_ALLOC Build options: Language options: (Clipper 5.3) (Clipper 5.x undoc) (Xbase++) (Flagship) ---------------------------

Петр: gfilatov пишет: Extra C compiler options: -DHB_FM_STATISTICS_OFF -DHB_GUI -DHB_FM_STD_ALLOC C HB_FM_STATISTICS_OFF Harbour теперь компилируется по умолчанию, теперь HB_FM_STATISTICS_ON надо явно определять, если что.. И попутно, буквально вчера столкнулся в Applications\DBFview\source\DBFview.prg процедура SaveToXls - вызов oExcel:End() приводит к GPF по вполне понятным причинам. Правда использовал версию 1.67, как дела обстоят в 1.68b - не знаю.

gfilatov: Петр пишет: C HB_FM_STATISTICS_OFF Harbour теперь компилируется по умолчанию Ничего, кашу маслом не испортишь... Петр пишет: И попутно, буквально вчера столкнулся в Applications\DBFview\source\DBFview.prg процедура SaveToXls - вызов oExcel:End() приводит к GPF по вполне понятным причинам. Спасибо за подсказку - уже поправил для следующей сборки.

gfilatov: Всем привет! Выложил сборку компилятора Харбор 2.0.0beta1 для BCC 5.5.1 (Harbour MiniGUI Extended Distribution) по адресу: http://minigui.mylivepage.ru/file/?fileid=7414 Harbour 2.0.0beta1 (Rev. 11287) Copyright (c) 1999-2009, http://www.harbour-project.org/ Harbour MiniGUI Extended Distribution Harbour Build Info --------------------------- Version: Harbour 2.0.0beta1 (Rev. 11287) Compiler: Borland C++ 5.5.1 (32-bit) PCode version: 0.2 ChangeLog last entry: 2009-06-09 15:59 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) ChangeLog ID: ChangeLog 11287 2009-06-09 14:01:53Z vszakats Built on: Jun 9 2009 17:29:12 ---------------------------

gfilatov: АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Готовится к опубликованию новая сборка №69, которая выйдет на следующей неделе. Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне Кратко, что нового: - исправление обнаруженных ошибок и неточностей кода; - новая команда MRU[ITEM] для размещения в меню списка из ini-файла; - улучшения в элементе управления GRID - новый класс CHECKBOXES (и новое свойство CheckboxItem); - добавлены синонимы для классов команды DEFINE WINDOW - Row, Col, WindowType, а также для альтернативного синтаксиса - ALIGNMENT, DATATYPE и CASECONVERT; - обновлены сборка компилятора Харбор, Ide и библиотеки MiniPrint, SQLite до версии 3.6.15; - обновлены некоторые старые примеры (как обычно ).

gfilatov: Обновил с учетом последних изменений от автора полную сборку IDE на сайте http://minigui.mylivepage.ru по адресу: http://minigui.mylivepage.ru/file/?fileid=7464 а также, как обычно, на сервере http://hmgextended.com в папке HMGS-IDE. Что нового (на языке оригинала): 2009-06-19: version 0.8.8 *Fixed : bug in mainmenu.prg creating a menu of options, always sends all the primary option (from the second) as the first sub-options option. Reported by John Ayres <jlayresz@yahoo.com> *Fixed : bug in mainmenu.prg missing END POPUP when save project. Reported by Fernando C.Salvador <caseinformatica@itelefonica.com.br> *Added : property CELLNAVIGATION to control GRID. Requested by Sudip Bhattacharyya <sudipb001@gmail.com> *Fixed : bug at using MINGW causing error message "HMG1.6(Build68a) Window: FORM_SPLASH is not Defined. Program Terminated". Reported by Chee Chong Hwa <chonghwa.chee@gmail.com> *Added : processing resource files in MINGW compile batch. *Fixed : bug when doubleclick in objectinspector with no form load. Reported by Luciano <suporte@lmi-informatica.com.br> *Added : timer in Build process to close window when compile with no error. Requested by Luciano <suporte@lmi-informatica.com.br> 2009-06-12: version 0.8.7.1 *Fixed : Empty Radiogroup ReadOnly clause at saving in reduced code of form. *Fixed : crash at loading a new MRU project after using form with defined Main Menu. Contribution by Grigory Filatov <gfilatov@rambler.ru> *Changed: MRU projects handling due to a last changes in the minigui core.

gfilatov: Новый релиз библиотеки, как и обещал, выложил по адресу: http://minigui.mylivepage.ru/file/?fileid=7471 а также, как обычно, на сервере http://hmgextended.com по адресу: http://hmgextended.com/files/CONTRIB/hmg-1.6-69-setup.zip P.S. Следующая сборка, вероятно, будет иметь статус beta, поскольку в нее будут внесены существенные изменения на уровне С-кода в связи с изменениями в текущем Harbour SVN. Кстати, Харбор сейчас находится в состоянии Release Candidate 1 для версии 2.0

gfilatov: Выложил сборку компилятора Харбор 2.0.0beta2 для BCC 5.5.1 (Harbour MiniGUI Extended Distribution) по адресу: http://minigui.mylivepage.ru/file/?fileid=7489 Harbour 2.0.0beta2 (Rev. 11600) Copyright (c) 1999-2009, http://www.harbour-project.org/ Harbour MiniGUI Extended Distribution Harbour Build Info --------------------------- Version: Harbour 2.0.0beta2 (Rev. 11600) Compiler: Borland C++ 5.5.1 (32-bit) Platform: Windows 98 4.10.2222 A PCode version: 0.2 ChangeLog last entry: 2009-07-02 09:34 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) ChangeLog ID: ChangeLog 11600 2009-07-02 07:34:34Z vszakats

gfilatov: Обновил с учетом последних изменений полную сборку IDE на сайте http://minigui.mylivepage.ru по адресу: http://minigui.mylivepage.ru/file/?fileid=7494 Что нового в IDE: - исправление обнаруженных ошибок (как обычно ) - добавление/обновление элементов при загрузке/редактировании LISTBOX - добавлена обработка FONTCOLOR и BACKCOLOR для TSBROWSE Эта версия Ide была собрана новым Харбором 2.0 beta2

sashaBG: MiniGUi Не собирается со сборкой 11600 harbour 2.00 beta2 Григорий пожалуйста помогите собрать и LetoDB /* $Id: Changelog,v 1.228 2009/07/03 07:12:00 alkresin Exp $ */ я его пользуюсь вместе с MINIGUI Extended . с послeднем Харбуром из SVN у меня не получилось

gfilatov: sashaBG пишет: MiniGUi Не собирается со сборкой 11600 harbour 2.00 beta2 Расширенная версия библиотеки MINIGUI, совместимая с harbour 2.00 beta2, будет опубликована на следующей неделе. sashaBG пишет: с послeднем Харбуром из SVN у меня не получилось Это вызвано большими внутренними изменениями в Харборе, которые были внесены во 2-й beta. Рекомендую пока использовать Харбор 2.00 beta1

gfilatov: Новый релиз библиотеки, как и обещал, выложил по адресу: http://minigui.mylivepage.ru/file/?fileid=7515 а также, как обычно, на сервере http://hmgextended.com по адресу: http://hmgextended.com/files/CONTRIB/hmg-1.7-70-setup.zip Вследствие изменений, внесенных в Харбор версии beta 2, потребовалась ревизия Си-кода ядра и многих примеров, которые использовали вставки Си-кода. Желаю удачной выкачки!

alex_II: После небольших усилий по адаптации к 70 релизу все заработало. Спасибо Григорий

AM: После закачки последней версии MiniGui перестало работать вообще всё. Прежде всего - кто подскажет, как быть с функциями hb_storni,hb_stornl и т.п. - было 3 параметра, стало 2. Можно ли просто выкинуть средний?

gfilatov: AM пишет: как быть с функциями hb_storni,hb_stornl и т.п. Надо использовать следующую замену в собственном Си-коде: ... #ifdef __XHARBOUR__ #define HB_STORL( n, x, y ) hb_storl( n, x, y ) #define HB_STORNI( n, x, y ) hb_storni( n, x, y ) #define HB_STORNL( n, x, y ) hb_stornl( n, x, y ) #else #define HB_STORL( n, x, y ) hb_storvl( n, x, y ) #define HB_STORNI( n, x, y ) hb_storvni( n, x, y ) #define HB_STORNL( n, x, y ) hb_storvnl( n, x, y ) #endif и конвертировать все имена функций hb_storni,hb_stornl ... в верхний регистр.

AM: Спасибо, число неувязочек уменьшилось. Но, как я понял, надо что-то подобное сотворить с hb_parnl и т.п. Завтра попробую.

gfilatov: Обновил с учетом последних изменений от автора полную сборку IDE на сайте http://minigui.mylivepage.ru по адресу: http://minigui.mylivepage.ru/file/?fileid=7560 а также, как обычно, на сервере http://hmgextended.com в папке HMGS-IDE. Что нового (на языке оригинала): *New : Option in menu Help->Update to download a last version of HMGS-IDE from http://www.hmgextended.com/files/HMGS-IDE/ide.zip. Based on code contributed by Marek <mol68@tlen.pl> *Fixed : loadfmg.prg to load virtual form with small width and height of width and height form_2.fmg. Reported by Luciano <suporte@lmi-informatica.com.br> *Fixed : status.prg - program crash when click after last item and click in arrow down. Reported by Luciano <suporte@lmi-informatica.com.br> *Added : option in mainmenu.prg to change type of menu to SEPARATOR. Requested by Stefan <yh_nosp@yahoo.de> *Fixed : in mainmenu.prg ENDPOPUP duplicated before ITEM in same level. *Fixed : in hmgide.prg missing value "" of property HELPID causing error "Variable does not exist: DISABLEEDIT". Reported by Stefan <yh_nosp@yahoo.de> *Fixed : in inspector.prg invalid character in name of control Б not A. Reported by Luciano <suporte@lmi-informatica.com.br> *Changed : in inspector.prg to accept var of array in ITEMS property of control COMBOBOX and not hangup. Requested by Luciano <suporte@lmi-informatica.com.br> *Added : in preferences.fmg and mpmc3.prg - option to compile with HMG of Roberto Lopez. Based on contribuition of Miguel Angel Juarez A. <fugaz_cl@yahoo.es> *Changed : to accept the path for picture like c:\images\picture.bmp. *New : search button for images/pictures. Requested by Stefan <yh_nosp@yahoo.de> *Added : in context menu of object inspector - option "edit" to edit files with preferred editor stored in preferences. Requested by Sudip <sudipb001@gmail.com> *Splitted : preferences modules to preferences.prg from main module *Fixed : when close form designer window without closing Control Position Window IDE shuts down. Reported by Sudip <sudipb001@gmail.com> *Changed : in loadfmg.prg - load method of control Label to show backcolor. *Added : verification of fmg is changed outside by text editor when form is showed to reload form.

gfilatov: Снова обновил с учетом последних изменений от автора полную сборку IDE на сайте http://minigui.mylivepage.ru по адресу: http://minigui.mylivepage.ru/file/?fileid=7563 а также, как обычно, на сервере http://hmgextended.com в папке HMGS-IDE. Что нового: исправление обнаруженных после опубликования версии 0.9.0 ошибок

gfilatov: АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Готовится к опубликованию новая сборка №71, которая выйдет завтра. Кратко, что нового: - исправление обнаруженных ошибок и неточностей кода; - добавлена возможность использовать различные tooltip для каждой вкладки элемента управления Tab; - исправления в библиотеке TSBrowse; - обновлены сборка компилятора Харбор и Ide; - новый Report Generator от Роберто Лопеза с поддежкой экспорта отчетов в форматы html и pdf; - обновлены некоторые старые примеры (как обычно ).

gfilatov: Новый релиз библиотеки, как и обещал, выложил по адресу: http://minigui.mylivepage.ru/file/?fileid=7589 а также, как обычно, на сервере http://hmgextended.com по адресу: http://hmgextended.com/files/CONTRIB/hmg-1.7-71-setup.zip Ваши комментарии приветствуются, как всегда!

gfilatov: Выложил сборку компилятора Харбор 2.0.0beta2 для BCC 5.5.1 (Harbour MiniGUI Extended Distribution) по адресу: http://minigui.mylivepage.ru/file/?fileid=7590 Harbour 2.0.0beta2 (Rev. 11936) Copyright (c) 1999-2009, http://www.harbour-project.org/ Harbour MiniGUI Extended Distribution Harbour Build Info --------------------------- Version: Harbour 2.0.0beta2 (Rev. 11936) Compiler: Borland C++ 5.5.1 (32-bit) PCode version: 0.2 ChangeLog last entry: 2009-07-30 08:48 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) ChangeLog ID: ChangeLog 11936 2009-07-30 06:50:56Z vszakats Built on: Jul 30 2009 12:46:50 Extra C compiler options: -DHB_FM_STATISTICS_OFF -DHB_GUI -DHB_FM_STD_ALLOC Build options: Language options: (Clipper 5.3) (Clipper 5.x undoc) (Xbase++) (Flagship)

AM: С 69-й сборкой - всё, грубо говоря, работало. Скачал 70-ю сборку - начались неувязочки. Добавил все новые #define насчёт hb_parni, hb_storni и т.п. (без этого вообще сишный компилятор ругался), но неувязочки не прекратились. Происходят вылеты (не харборовские, а с предложением послать MS отчёт о неувязочке). Попытки удалить какие-либо операторы, чтобы посмотреть, какой из них вызывает вылет - не помогли, видимо, это позволяет только его отсрочить. После удаления некоторых кусков (вполне невинных, и без С-кода) - вылетов стало меньше - при запуске через NC не вылетает, через ярлык - вылетает. Скачал 71-ю сборку - стало вылетать в любом случае. Компилируется и собирается без ошибок, просмотр примеров MiniGUI ничего нового не дал (вроде всё, что нужно, добавил). ИМХО, лучше бы все новые #define собрать в файл .h или .ch - может, я там что пропустил? Но вроде нет. Может, библиотеки нужны не те? Возможно такое, если собирается нормально? Кто может подсказать, в каком направлении искать неувязочку?

gfilatov: AM пишет: Происходят вылеты (не харборовские, а с предложением послать MS отчёт о неувязочке). Значит, надо искать ошибки в Си-коде AM пишет: С 69-й сборкой - всё, грубо говоря, работало. В таком случае рекомендую убрать из исходников Минигуи версии 71 все новые #define и перекомпилировать библиотеку Харбором из 69-й сборки. Таким образом, Вы сможете использовать свежие обновления библиотеки и стабильную (для Вас) версию компилятора. Надеюсь, это поможет решить проблемы

alex_II: Григорий! Перестала работать программа с maySQL? попробовал примеры из поставки - аналогичный результат Ниже содержимое файла error.log: Application Internal Error - C:\MiniGUI\SAMPLES\BASIC\MYSQL\demo_1.exe Terminated at: 2009.08.03 12:02:02 Info: Harbour MiniGUI 1.7 Extended Edition (Build 71) - 2009.07.30 Unrecoverable error 6005: Exception error: Exception Code:C0000005 Exception Address:100225DB EAX:00393C20 EBX:00393C20 ECX:00000000 EDX:00000000 ESI:0049781B EDI:00497827 EBP:0049782E CS:EIP:001B:100225DB SS:ESP:0023:0012F7E0 DS:0023 ES:0023 FS:003B GS:0000 Flags:00010202 CS:EIP: FF 11 83 C4 04 C2 04 00 CC CC CC CC CC CC CC CC SS:ESP: 00393C20 0048C21F 00393C20 0049781B 00497827 0049782E 00000000 00000CEA 00000000 00000000 00000CEA 00000000 0012F838 00516356 00000000 00519EEC C stack: EIP: EBP: Frame: OldEBP, RetAddr, Params... Modules: 0x00400000 0x00135000 C:\MiniGUI\SAMPLES\BASIC\MYSQL\demo_1.exe 0x7C900000 0x000B1000 C:\WINDOWS\system32\ntdll.dll 0x7C800000 0x000F7000 C:\WINDOWS\system32\kernel32.dll 0x10000000 0x001F5000 C:\MiniGUI\SAMPLES\BASIC\MYSQL\LIBMYSQL.DLL 0x77DC0000 0x000AC000 C:\WINDOWS\system32\ADVAPI32.dll 0x77E70000 0x00091000 C:\WINDOWS\system32\RPCRT4.dll 0x71AB0000 0x0000A000 C:\WINDOWS\system32\WSOCK32.dll 0x71A90000 0x00017000 C:\WINDOWS\system32\WS2_32.dll 0x77C00000 0x00058000 C:\WINDOWS\system32\msvcrt.dll 0x71A80000 0x00008000 C:\WINDOWS\system32\WS2HELP.dll 0x75A40000 0x00021000 C:\WINDOWS\system32\MSVFW32.DLL 0x7E360000 0x00091000 C:\WINDOWS\system32\USER32.dll 0x77F10000 0x00047000 C:\WINDOWS\system32\GDI32.dll 0x76B20000 0x0002E000 C:\WINDOWS\system32\WINMM.dll 0x7C9C0000 0x00C39000 C:\WINDOWS\system32\SHELL32.dll 0x77F60000 0x00076000 C:\WINDOWS\system32\SHLWAPI.dll 0x773C0000 0x00103000 C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2982_x-ww_ac3f9c03\COMCTL32.dll 0x76760000 0x00009000 C:\WINDOWS\system32\SHFOLDER.DLL 0x774D0000 0x0013D000 C:\WINDOWS\system32\OLE32.DLL 0x5F2F0000 0x00017000 C:\WINDOWS\system32\OLEPRO32.DLL 0x77110000 0x0008B000 C:\WINDOWS\system32\OLEAUT32.dll 0x746E0000 0x0004C000 C:\WINDOWS\system32\MSCTF.dll 0x003F0000 0x00004000 C:\Program Files\Unlocker\UnlockerHook.dll 0x5B260000 0x00038000 C:\WINDOWS\system32\UxTheme.dll 0x00EE0000 0x0000D000 C:\Program Files\XemiComputers\Active Desktop Calendar\MouseHook.dll 0x71A30000 0x00040000 C:\WINDOWS\System32\mswsock.dll 0x76F10000 0x00027000 C:\WINDOWS\system32\DNSAPI.dll 0x76FA0000 0x00008000 C:\WINDOWS\System32\winrnr.dll 0x76F50000 0x0002D000 C:\WINDOWS\system32\WLDAP32.dll 0x66210000 0x00009000 C:\WINDOWS\system32\netware\NWWS2NDS.DLL 0x50D50000 0x00047000 C:\WINDOWS\system32\NETWIN32.DLL 0x50D00000 0x00015000 C:\WINDOWS\system32\CLNWIN32.DLL 0x50DF0000 0x00020000 C:\WINDOWS\system32\LOCWIN32.DLL 0x50DB0000 0x00029000 C:\WINDOWS\system32\NCPWIN32.dll 0x66220000 0x0000C000 C:\WINDOWS\system32\netware\NWWS2SLP.DLL 0x1C000000 0x00007000 C:\WINDOWS\system32\NWSRVLOC.dll 0x75000000 0x0001E000 C:\WINDOWS\system32\wshbth.dll 0x77910000 0x00170000 C:\WINDOWS\system32\SETUPAPI.dll 0x76FB0000 0x00006000 C:\WINDOWS\system32\rasadhlp.dll Called from MYSQL_REAL_CONNECT(0) Called from TMYSQLSERVER:NEW(1364) in tmysql.prg Called from CONNECT(99) in demo_1.prg Called from (b)MAIN(33) in demo_1.prg Called from _PROCESSINITPROCEDURE(1454) in h_windows.prg Called from _ACTIVATEWINDOW(1312) in h_windows.prg Called from MAIN(53) in demo_1.prg ------------------------------------------------------------------------ Application Internal Error - C:\MiniGUI\SAMPLES\BASIC\MYSQL\demo_2.exe Terminated at: 2009.08.03 12:02:35 Info: Harbour MiniGUI 1.7 Extended Edition (Build 71) - 2009.07.30 Unrecoverable error 6005: Exception error: Exception Code:C0000005 Exception Address:100225DB EAX:00393C20 EBX:00393C20 ECX:00000000 EDX:00000000 ESI:00AABBA4 EDI:00AE200C EBP:00AF4868 CS:EIP:001B:100225DB SS:ESP:0023:0012EE94 DS:0023 ES:0023 FS:003B GS:0000 Flags:00010202 CS:EIP: FF 11 83 C4 04 C2 04 00 CC CC CC CC CC CC CC CC SS:ESP: 00393C20 0048C277 00393C20 00AABBA4 00AE200C 00AF4868 00000000 00000CEA 00000000 00000000 00000CEA 00000000 0012EEEC 0051702A 00000000 0051ABC0 C stack: EIP: EBP: Frame: OldEBP, RetAddr, Params... 100225DB 00AF4868 6C71735F 5F30005F 0000001C 00000001 00AAC86C 00000000 05DD0000 00AAC44C 00AA00A8 00000020 Modules: 0x00400000 0x00136000 C:\MiniGUI\SAMPLES\BASIC\MYSQL\demo_2.exe 0x7C900000 0x000B1000 C:\WINDOWS\system32\ntdll.dll 0x7C800000 0x000F7000 C:\WINDOWS\system32\kernel32.dll 0x10000000 0x001F5000 C:\MiniGUI\SAMPLES\BASIC\MYSQL\LIBMYSQL.DLL 0x77DC0000 0x000AC000 C:\WINDOWS\system32\ADVAPI32.dll 0x77E70000 0x00091000 C:\WINDOWS\system32\RPCRT4.dll 0x71AB0000 0x0000A000 C:\WINDOWS\system32\WSOCK32.dll 0x71A90000 0x00017000 C:\WINDOWS\system32\WS2_32.dll 0x77C00000 0x00058000 C:\WINDOWS\system32\msvcrt.dll 0x71A80000 0x00008000 C:\WINDOWS\system32\WS2HELP.dll 0x75A40000 0x00021000 C:\WINDOWS\system32\MSVFW32.DLL 0x7E360000 0x00091000 C:\WINDOWS\system32\USER32.dll 0x77F10000 0x00047000 C:\WINDOWS\system32\GDI32.dll 0x76B20000 0x0002E000 C:\WINDOWS\system32\WINMM.dll 0x7C9C0000 0x00C39000 C:\WINDOWS\system32\SHELL32.dll 0x77F60000 0x00076000 C:\WINDOWS\system32\SHLWAPI.dll 0x773C0000 0x00103000 C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2982_x-ww_ac3f9c03\COMCTL32.dll 0x76760000 0x00009000 C:\WINDOWS\system32\SHFOLDER.DLL 0x774D0000 0x0013D000 C:\WINDOWS\system32\OLE32.DLL 0x5F2F0000 0x00017000 C:\WINDOWS\system32\OLEPRO32.DLL 0x77110000 0x0008B000 C:\WINDOWS\system32\OLEAUT32.dll 0x746E0000 0x0004C000 C:\WINDOWS\system32\MSCTF.dll 0x003F0000 0x00004000 C:\Program Files\Unlocker\UnlockerHook.dll 0x5B260000 0x00038000 C:\WINDOWS\system32\UxTheme.dll 0x00EE0000 0x0000D000 C:\Program Files\XemiComputers\Active Desktop Calendar\MouseHook.dll 0x00F90000 0x0001F000 C:\Program Files\Total Commander XP\Plugins\WLX\ieView\ieview.wlx 0x71A30000 0x00040000 C:\WINDOWS\System32\mswsock.dll 0x76F10000 0x00027000 C:\WINDOWS\system32\DNSAPI.dll 0x76FA0000 0x00008000 C:\WINDOWS\System32\winrnr.dll 0x76F50000 0x0002D000 C:\WINDOWS\system32\WLDAP32.dll 0x66210000 0x00009000 C:\WINDOWS\system32\netware\NWWS2NDS.DLL 0x50D50000 0x00047000 C:\WINDOWS\system32\NETWIN32.DLL 0x50D00000 0x00015000 C:\WINDOWS\system32\CLNWIN32.DLL 0x50DF0000 0x00020000 C:\WINDOWS\system32\LOCWIN32.DLL 0x50DB0000 0x00029000 C:\WINDOWS\system32\NCPWIN32.dll 0x66220000 0x0000C000 C:\WINDOWS\system32\netware\NWWS2SLP.DLL 0x1C000000 0x00007000 C:\WINDOWS\system32\NWSRVLOC.dll 0x75000000 0x0001E000 C:\WINDOWS\system32\wshbth.dll 0x77910000 0x00170000 C:\WINDOWS\system32\SETUPAPI.dll 0x76FB0000 0x00006000 C:\WINDOWS\system32\rasadhlp.dll Called from MYSQL_REAL_CONNECT(0) Called from TMYSQLSERVER:NEW(1364) in tmysql.prg Called from SQL_CONNECT(410) in demo_2.prg Called from (b)MY_SQL_LOGIN(389) in demo_2.prg Called from _DOCONTROLEVENTPROCEDURE(1611) in h_windows.prg Called from EVENTS(1415) in h_events.prg Called from _DOMESSAGELOOP(0) Called from _ACTIVATEWINDOW(1329) in h_windows.prg Called from MY_SQL_LOGIN(398) in demo_2.prg Called from (b)MAIN(41) in demo_2.prg Called from _PROCESSINITPROCEDURE(1454) in h_windows.prg Called from _ACTIVATEWINDOW(1312) in h_windows.prg Called from MAIN(63) in demo_2.prg ------------------------------------------------------------------------

gfilatov: alex_II пишет: попробовал примеры из поставки - аналогичный результат Только что проверил пример demo_2 из папки samples\basic\Mysql - все работает. Подключился к серверу, создал тестовую базу с данными из DBF-файла, штатно работают вставка, удаление и обновление записей. Проверьте наличие libmysql.dll в папке с примером, сверьте версии сервера и клиента, а также пересоберите новым Харбором, на всякий случай, библиотеки из папки source\HbMySQL

alex_II: Перешел на MySQL сервер 5.1 с 5.0 и все заработало

gfilatov: Обновил с учетом последних изменений от автора полную сборку IDE на сайте http://minigui.mylivepage.ru по адресу: http://minigui.mylivepage.ru/file/?fileid=7606 а также, как обычно, на сервере http://hmgextended.com в папке HMGS-IDE. Что нового: исправление обнаруженных после опубликования версии 0.9.1 ошибок

Andrey: Скачал последнию версию. Установил.... И сразу облом. При установки есть запрос - куда устанавливать. Если пишешь на диск Z:, то все переменные нужно ручками переправлять... и вдобавок BCC у меня просто стоит в папке Z:\BCC55, тоже приходиться в BAT-файлах исправлять.... Это конечно не смертельно для меня, но для новичков это просто "засада" .... Может можно что-нибудь "прикрутить" для замены путей.... или сделать корректировку путей на первом запуске ? Хотя у меня и установлено несколько версий Харбора, при первом запуске примеры не собирались. Добавил в окружении путей 2 строчки: MG_BCC = Z:\BCC55 MG_ROOT = Z:\MiniGUI все заработало... Но я уже второй год вожусь, знаю...

gfilatov: АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Готовится к опубликованию новая сборка №72, которая выйдет завтра. Кратко, что нового: - исправление обнаруженных ошибок и неточностей кода; - небольшие исправления в библиотеке TSBrowse; - добавлена новая команда SET DEFAULT ICON TO <IconName> для определения одной общей иконки для всех окон; - обновлены сборка компилятора Харбор и Ide, а также библиотека HbSglite3; - Report Generator от Роберто Лопеза адаптирован для работы с библиотекой HbPrinter; - обновлены некоторые старые примеры (как обычно ).

SkyNET: Установил последнию версию MiniGUI и IDE... Версия IDE - 2009.07.08 - Version 0.9.1 Пытаюсь собрать в IDE стандартный пример с TSBROWSE (MiniGUI\IDE\SAMPLES\TSBROWSE) выдаёт ошибку: MAKE Version 5.2 Copyright (c) 1987, 2000 Borland echo Z:\MINIGUI\IDE\SAMPLES\TSBROWSE\OBJ\Demo.obj + >b32.bc echo Z:\BCC55\LIB\c0w32.obj, + >> b32.bc echo Z:\MINIGUI\IDE\SAMPLES\TSBROWSE\Demo.Exe,Demo.map, + >> b32.bc echo Z:\MINIGUI\LIB\minigui.lib + >> b32.bc echo Z:\MINIGUI\HARBOUR\LIB\dll.lib + >> b32.bc echo Z:\MINIGUI\HARBOUR\LIB\gtgui.lib + >> b32.bc echo Z:\MINIGUI\HARBOUR\LIB\compiler.lib + >> b32.bc echo Z:\MINIGUI\HARBOUR\LIB\rtl.lib + >> b32.bc echo Z:\MINIGUI\HARBOUR\LIB\vm.lib + >> b32.bc echo Z:\MINIGUI\HARBOUR\LIB\lang.lib + >> b32.bc echo Z:\MINIGUI\HARBOUR\LIB\codepage.lib + >> b32.bc echo Z:\MINIGUI\HARBOUR\LIB\macro.lib + >> b32.bc echo Z:\MINIGUI\HARBOUR\LIB\rdd.lib + >> b32.bc echo Z:\MINIGUI\HARBOUR\LIB\hsx.lib + >> b32.bc echo Z:\MINIGUI\HARBOUR\LIB\dbfntx.lib + >> b32.bc echo Z:\MINIGUI\HARBOUR\LIB\dbfcdx.lib + >> b32.bc echo Z:\MINIGUI\HARBOUR\LIB\dbffpt.lib + >> b32.bc echo Z:\MINIGUI\HARBOUR\LIB\hbsix.lib + >> b32.bc echo Z:\MINIGUI\HARBOUR\LIB\common.lib + >> b32.bc echo Z:\MINIGUI\HARBOUR\LIB\debug.lib + >> b32.bc echo Z:\MINIGUI\HARBOUR\LIB\pp.lib + >> b32.bc echo Z:\MINIGUI\HARBOUR\LIB\hbpcre.lib + >> b32.bc echo Z:\MINIGUI\HARBOUR\LIB\libct.lib + >> b32.bc echo Z:\MINIGUI\HARBOUR\LIB\libmisc.lib + >> b32.bc echo Z:\MINIGUI\HARBOUR\LIB\hbole.lib + >> b32.bc echo Z:\MINIGUI\HARBOUR\LIB\hbprinter.lib + >> b32.bc echo Z:\MINIGUI\HARBOUR\LIB\miniprint.lib + >> b32.bc echo Z:\MINIGUI\HARBOUR\LIB\socket.lib + >> b32.bc echo Z:\BCC55\LIB\cw32.lib + >> b32.bc echo Z:\BCC55\LIB\import32.lib, >> b32.bc echo Z:\MINIGUI\RESOURCES\hbprinter.res + >> b32.bc echo Z:\MINIGUI\RESOURCES\miniprint.res + >> b32.bc echo Z:\MINIGUI\RESOURCES\minigui.res >> b32.bc Z:\BCC55\BIN\ILINK32.EXE -Gn -Tpe -aa -LZ:\BCC55\LIB @b32.bc Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Error: Unresolved external '_HB_FUN__DEFINETBROWSE' referenced from Z:\MINIGUI\IDE\SAMPLES\TSBROWSE\OBJ\DEMO.OBJ Error: Unresolved external '_HB_FUN__ENDTBROWSE' referenced from Z:\MINIGUI\IDE\SAMPLES\TSBROWSE\OBJ\DEMO.OBJ ** error 2 ** deleting Z:\MINIGUI\IDE\SAMPLES\TSBROWSE\Demo.Exe  Что делать ?

gfilatov: SkyNET пишет: Пытаюсь собрать в IDE стандартный пример с TSBROWSE Выбрать в IDE пункт меню Tools->Preferences и в окне формы ввести полный путь в поле "Additional Libraries", например: c:\minigui\lib\tsbrowse.lib После этого пример заработает

SkyNET: Большое вам спасибо !

SkyNET: Начал писать программу, по работе с DBF через TSBrowse. IDE споткнулся... Выдаёт две ошибки: MAKE Version 5.2 Copyright (c) 1987, 2000 Borland Z:\MINIGUI\HARBOUR\BIN\HARBOUR.EXE /iZ:\MINIGUI\HARBOUR\INCLUDE;Z:\MINIGUI\INCLUDE;Z:\MYWORK\MARSHA~1;E:\DOCUME~1\SkyNET\C316~1\IDE /n Z:\MYWORK\MARSHA~1\CD7000.Prg -oZ:\MYWORK\MARSHA~1\OBJ\CD7000.c CD7000.fmg(29) Error E0030 Syntax error "syntax error at 'TBROWSE'" CD7000.fmg(30) Error E0030 Syntax error "syntax error at 'END'" И почему-то в папке проекта появляется стандартная тестовая база, хотя ее не должно быть... Помогите пожалуйста разобраться... Проект

gfilatov: SkyNET пишет: Помогите пожалуйста разобраться... Внес следующие изменения в проект: - файл PRG выглядит так #include "minigui.ch" #include "tsbrowse.ch" Function Main USE CD7000 alias CD7000 shared Load Window CD7000 Center Window CD7000 Activate Window CD7000 Return Nil Procedure FPortLoad // USE CD7000 alias DBASE shared Load Window PortSett Activate Window PortSett Return - определелил TBROWSE в форме таким образом DEFINE TBROWSE TBROWSE_1 ; AT 30,10 ; WIDTH 704 ; HEIGHT 283 ; HEADERS 'NN','TYPEKEY','DATEID','TIMEID','KODKEY','IDDOMOFON','ADRESSS' ; COLSIZES 100,100,100,100,100,100,100 ; WORKAREA "CD7000" ; FIELDS CD7000->NN,CD7000->TYPEKEY,CD7000->DATEID,CD7000->TIMEID,CD7000->KODKEY,CD7000->IDDOMOFON,CD7000->ADRESSS ; VALUE 1 Проект собрался без проблем

SkyNET: Спасибо, всё заработало... Пытаюсь разместить в названия столбца на несколько строчек. Но, не получается. HEADERS '№№','Ключ;Код;Звонок','Дата;события','Время;события','Код;ключа','Номер;домофона','Адрес;домофона' ; И ещё не знаю, как растянуть колонки. Свойство ColSizes не работает.... COLSIZES 20,200,300,400,500,600 ;

gfilatov: Новый релиз библиотеки, как и обещал, выложил по адресу: http://minigui.mylivepage.ru/file/?fileid=7610 а также, как обычно, на сервере http://hmgextended.com по адресу: http://hmgextended.com/files/CONTRIB/hmg-1.7-72-setup.zip Ваши комментарии приветствуются, как всегда! P.S. Это - последняя сборка, которую я успел подготовить перед отпуском

gfilatov: Выложил сборку компилятора Харбор 2.0.0beta2 для BCC 5.5.1 (Harbour MiniGUI Extended Distribution) по адресу: http://minigui.mylivepage.ru/file/?fileid=7615 Harbour 2.0.0beta2 (Rev. 12100) Copyright (c) 1999-2009, http://www.harbour-project.org/ Harbour MiniGUI Extended Distribution Harbour Build Info --------------------------- Version: Harbour 2.0.0beta2 (Rev. 12100) Compiler: Borland C++ 5.5.1 (32-bit) PCode version: 0.2 ChangeLog last entry: 2009-08-14 08:41 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) ChangeLog ID: ChangeLog 12100 2009-08-14 06:42:19Z vszakats Built on: Aug 14 2009 11:08:44 Extra C compiler options: -DHB_FM_STD_ALLOC -DHB_GUI Build options: Language options: (Clipper 5.3) (Clipper 5.x undoc) (Xbase++) (Flagship) ---------------------------

AM: gfilatov пишет: В таком случае рекомендую убрать из исходников Минигуи версии 71 все новые #define и перекомпилировать библиотеку Харбором из 69-й сборки. Прошу извинить, меня не было 2 недели, сейчас я на 1 день, потом ещё неделю не будет. Григорий! Ничего не выходит. Я для начала пытаюсь пересоздать библиотеки просто как есть, без всяких изменений (через MakeAllLibs.bat или MakeAllMiniguiLibs.bat) . И вот какие ошибки возникают (в 71-й и в 72-й версиях одинаковые): Error E2194: Could not find file 'h_help.c' Error E2194: Could not find file 'h_hyperlink.c' Где эти файлы должны быть? У меня нет нигде! Warning: 'h_help.obj' file not found Warning: 'h_hyperlink.obj' file not found (естественно) Warning W8002 cdll.c 151: Restarting compile using assembly in function HB_DynaCall Warning W8002 _wincall.c 111: Restarting compile using assembly in function DynaCall После этого при попытке создать экзешник из примеров (скажем, basic\browse_1) получается вот что: Error: Unresolved external '_HB_FUN__SETADDRESS' referenced from C:\MINIGUI\LIB\MINIGUI.LIB|h_controlmisc Error: Unresolved external '_HB_FUN__GETADDRESS' referenced from C:\MINIGUI\LIB\MINIGUI.LIB|h_controlmisc Как с этим бороться?

gfilatov: AM пишет: Как с этим бороться? Рекомендую начать с изучения содержимого файла MakeLib.Bat

Петр: AM пишет: Error E2194: Could not find file 'h_help.c' Error E2194: Could not find file 'h_hyperlink.c' Где эти файлы должны быть? У меня нет нигде! Если вы еще не заметили, то обратите внимание: имене всех файлов в папке source\ начинаются или с c_ или h_ в зависимости от того на каком языке программирования написан код. У вас нет, допустим h_help.c или h_hyperlink.c, но зато есть h_help.prg или h_hyperlink.prg. Ну а дальше, надеюсь вы уже поняли: файлы h_*.c получаются вследствии обработки компилятором harbour соответствующих h_*.prg файлов. Ошибку Error E2194: Could not find file 'h_help.c' мы можем получить в таких случаях 1) при компиляции h_help.prg произошла ошибка 2) h_help.prg отсутствует или он не включен в скрипт

gfilatov: Выложил сборку компилятора Харбор 2.0.0beta2 для BCC 5.5.1 (Harbour MiniGUI Extended Distribution) по адресу: http://minigui.mylivepage.ru/file/?fileid=7686 Harbour 2.0.0beta2 (Rev. 12390) Copyright (c) 1999-2009, http://www.harbour-project.org/ Harbour MiniGUI Extended Distribution Harbour Build Info --------------------------- Version: Harbour 2.0.0beta2 (Rev. 12390) Compiler: Borland C++ 5.5.1 (32-bit) PCode version: 0.2 ChangeLog last entry: 2009-09-02 02:51 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) ChangeLog ID: ChangeLog 12390 2009-09-02 00:52:01Z druzus Built on: Sep 2 2009 12:14:56 Extra C compiler options: -DHB_FM_STD_ALLOC -DHB_GUI Build options: Language options: (Clipper 5.3) (Clipper 5.x undoc) (Xbase++) (Flagship) ---------------------------

Andrey: Вопрос по теме: как пользоваться Resource editor 1.1.2.4 KetilO © 2003-2005 для создания меню, диалогов и т.д. Есть ли примеры в MiniGUI ? Где можно почитать про эту тематику. Я понимаю, что в ИНЕТЕ, но дайте пожалуйста ссылки на более правильную документацию ! Заранее спасибо

gfilatov: Andrey пишет: Где можно почитать про эту тематику. Ч. Петзолд. Программирование для Windows 95 в двух томах Часть III. Использование ресурсов (главы 9-11) http://zipsites.ru/books/petzold_program_dlya_windows_95/

Andrey: Спасибо ! А как насчет примеров, где это используется (создания меню, диалогов и т.д.) в MiniGUI ?

gfilatov: Andrey пишет: А как насчет примеров ... в MiniGUI ? Создание и обработка диалогов см. в папках - samples\basic\Dialog; - samples\basic\Dialog_2; - samples\basic\Timer



полная версия страницы