Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение)
gfilatov: Начало темы находится здесь, а теперь АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Готовится к опубликованию новая сборка №48, которая выйдет в конце недели. Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне Кратко, что нового: - исправление обнаруженных ошибок и неточностей кода; - новый класс HEADERIMAGE для Grid и Browse; - свойство Address в Hyperlink может теперь открывать папку или файл на диске; - добавлен NOTABSTOP класс для Browse; - поддержка пользовательских компонентов (заимствована из оффициального релиза); - расширения и исправления в библиотеках TsBrowse и PropGrid; - обновлены сборки Харбор и HMGS-IDE; - новые и обновленные старые примеры (как обычно ).
Andrey: gfilatov2002 пишет: Подготовил первый релиз-кандидат для новой сборки библиотеки со следующим списком изменений Что то не увидел свой пример CallDll2 ? Старался его сделать для других, чтобы было понятно как загружать чужие и свои DLL-ки.
gfilatov2002: Andrey пишет: не увидел свой пример CallDll2 Верно. Andrey пишет: как загружать чужие и свои DLL-ки В этом примере есть Харбор, Си, DLL, но очень мало собственно МиниГУИ. Поэтому пример не вошел в следующую сборку. Если будет интерес в использовании DLL у пользователей, то, конечно, добавлю Ваш пример
gfilatov2002: SergKis пишет: Ввел в TsColumns DATA bValue Принято, конечно. Благодарю за помощь
SergKis: SergKis пишет Использование oColum:cName := 'MET' oColum:lChecBox := .T. oColum:Cargo := oKeyData() // контейнер\список для recno отмеченных записей oColum:bValue := {|xval,obrw,ncol,ocol| ; xval := ocol:Cargo:Get((obrw:cAlias)->( RecNo() )), ; ncol := ! empty(xval) } // .T. - при наличии в контейнере ... oBrw:UserKeys( VK_SPACE, {|obr| Local oCol := obr:aColumns[obr:nCell] Local nRec If oCol:cName == 'MET' nRec := (obr:cAlias)->( RecNo() ) If empty(oCol:Cargo:Get(nRec)) // добавим в список oCol:Cargo:Set(nRec, nRec) Else oCol:Cargo:Del(nRec) // уберем из списка EndIf EndIf Return Nil } ) все проще (по привычке смешал в кучу старое, новое) :UserKeys не надо, достаточно :bValue[pre2] oCol:cAlias := "BASE" oCol:lCheckBox := .T. oCol:lEdit := .T. oCol:Cargo := oKeyData() oCol:bValue := {|xv,ob,nc,oc| Local nRec := RecNo() If xv == Nil xv := ! empty(oc:Cargo:Get(nRec)) ElseIf xv oc:Cargo:Set(nRec, nRec) Else oc:Cargo:Del(nRec) EndIf Return xv } [/pre2]
SergKis: PS Правка tsb4xml.prg[pre2] METHOD StyleFooter() CLASS Tsb2Xml2Xls ... // If empty( ::nClrHead ) If empty( ::nClrFoot ) nColor := :nColorGet( oCol:nClrFootBack, i ) // nColor := :nColorGet( oCol:nClrFootBack, i ) nColor := ::StyleColor( nColor ) Else // nColor := ::nClrHead nColor := ::nClrFoot EndIf ... [/pre2]
gfilatov2002: SergKis пишет: Пропало, что выкладывал. Повторю. Благодарю за настойчивость Изменения приняты
Andrey: Если будет интерес в использовании DLL у пользователей, то, конечно, добавлю Ваш пример У меня есть интерес, да думаю и другим будет интересен пример: Как собрать свои отдельные модули в отдельной dll-ке и вызов их из главной программы ? Причём как туда в dll-ку можно передать параметры (массив и другие) ? Попытался сам сделать это и не смог. Хочу свой большой проект разделить на части. Вынести готовые (которые не подвегаются правке) модули в отделные DLL-ки.
SergKis: Andrey Помнится, ты даже одну собственную либу не хотел делать, боясь запутаться в версиях. А тут несколько dll да еще разных версий hb, hmg, свои, ... ?
Andrey: А тут несколько dll да еще разных версий hb, hmg, свои, ... ? Чуток разобрался с МиниГуи. Понравились отдельные dll-ки. Вот и хочу свои dll-ки пока на МиниГуи попробовать. Другие языки пока не нужны. Хотелось бы в МиниГуи иметь отдельную папку с таким примером, типа CallDll3 !
SergKis: Andrey пишет Другие языки пока не нужны. Иди по пути hrb, т.е. собери exe, включив все нужные компоненты (lib + request). Окна и алгоритмы получай в hrb. Hrb можешь включать в ресурсные dll, иметь как файлы или как в foxpro, prg и hrb с одним именем, меняем prg, запускается получение hrb и потом он выполняется.
SergKis: PS hrb можешь держать в zip с паролем или без. Собранный, полный exe можно будет менять достаточно редко.
Haz: SergKis пишет: полный exe можно будет менять достаточно редко. Я не вижу принципиальной разницы что менять, exe dll hbr prg. Все кроме prg будет лочиться системой на момент выполнения, а prg требует дополнительной компиляции. То есть все кроме prg требует либо автоматом рубить всех пользователей либо с матами индивидуально. Я в итоге пришёл к решению следующему. Компилируется два exe. Первый просто лончер, который запускает второй. Первый exe имеет настройки, с каким именем запускать второй. У второго от версии к версии инкрементируется расширение. mod.000 mod.001 и так далее. После сборки основного мода его надо закинуть в папку программы и изменить конфигурацию лончер. Всё юзеря могут работать по прежнему, могут получить уведомление о доступности нового. Для обновления потребуется перезапуск лончер и он запустит новый мод. В качестве мода можно подсунуть сервисную программу. Которая к примеру поменяет структуру баз, пересчитатает историю и много чего., а потом пропишет новый мод. Да, лончер запустив мод, сам заканчивает работу
SergKis: Haz пишет Я не вижу принципиальной разницы что менять, exe dll hbr prg. Я не имел ввиду замену версии. В технике с hrb меняются в основном ресурсные dll общие или частные для конкр. клиента. Exe один, не надо следить где какая версия dll hb, hmg и т.д. следить (лежат в тек. каталоге, у exe, в windows,...). Кто и по какой причине (из "добрых" побуждений) подменил\ записал старую версию, перекрыв нужную ... "Добрых" людей много как оказалось. Этого наелся с VO. В итоге оставил минимум dll один exe и все остальное в VO script и ресурсная dll, правда причина такой работы и плохая работа репозитария VO, даже в VO 2.7 такое случалось, т.е. пересобиря exe нельзя быть уверенным (не проверив), что все режимы работают. Первый просто лончер, который запускает второй. Первый exe имеет настройки, с каким именем запускать второй. Инсталяторы тоже так делают, устанавливают и запускают, что укажешь для доинсталяции.
Andrey: В итоге оставил минимум dll один exe Вот я и не смог сделать свою dll-ку на МиниГуи вообще .... Не получается... Хотелось бы в МиниГуи иметь отдельную папку с таким примером, типа CallDll3 !
SergKis: Andrey пишет Вот я и не смог сделать свою dll-ку на МиниГуи вообще В VO dll в поставке, а ты хочешь выделить принудительно, а оно надо ? По мне - не надо. Лучше на технологию hrb потрать время - это будет аналог dll
ММК: Andrey пишет: Вот я и не смог сделать свою dll-ку на МиниГуи вообще .... Не получается... А зачем? Что это дает?
Andrey: А зачем? Что это дает? 1) Чтобы уметь так же делать. 2) Разбить свой проект на части и неизменяемые программы держать в dll-ке. У некоторых юзеров слабый инет, качать приходиться много, ехе-ник весит 18 мб.