Готовится к опубликованию новая сборка №48, которая выйдет в конце недели. Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне
Кратко, что нового:
- исправление обнаруженных ошибок и неточностей кода; - новый класс HEADERIMAGE для Grid и Browse; - свойство Address в Hyperlink может теперь открывать папку или файл на диске; - добавлен NOTABSTOP класс для Browse; - поддержка пользовательских компонентов (заимствована из оффициального релиза); - расширения и исправления в библиотеках TsBrowse и PropGrid; - обновлены сборки Харбор и HMGS-IDE; - новые и обновленные старые примеры (как обычно ).
IF HB_ISCHAR( cSeparator ) cLineSeparator := cSeparator ENDIF
RETURN cOldSep ... тогда ini файлы и т.д. можно показывать как ест, т.е. ... cOSep := HMG_Alert_Separator("") cText := hb_memoread(cFile) AlertInfo(cText, , , , , , , .T.) HMG_Alert_Separator(cOSep) ...
- aLeft Get/Set left (or top) controls of a splitter - aRight Get/Set right (or bottom) controls of a splitter - nLeftLimit Get/Set left (or top) limit of a splitter - nRightLimit Get/Set right (or bottom) limit of a splitter - lShowArrow Set wheter arrow on a splitter is displayed - lUseHover Set wheter hover effect on a splitter is applied - lUseGradient Set wheter a gradient is used to paint a splitter instead of flat color - color Get/Set an RGB value corresponding to a splitter's foreground color - bcolor Get/Set an RGB value corresponding to a splitter's background color - colorHover Get/Set an RGB value corresponding to a splitter's foreground color when hovered - bColorHover Get/Set an RGB value corresponding to a splitter's background color when hovered - gradient Get/Set a tuple of 2 or 3 RGB values corresponding to gradient colors (the order is leftColor then middleColor) - gradientHover Get/Set a tuple of 2 or 3 RGB values corresponding to gradient colors (the order is leftColor then middleColor)
PS. можно и такую udf добавить /* leto_Directory() of this HRB */ FUNCTION UDF_GetFiles( cPath, cMask, cAttr, aFiles ) LOCAL aDir, aFil, nLen Local cDataPath := hb_DirSepAdd( leto_GetAppOptions( 1 ) )
IF aFiles == NIL ; aFiles := {} ENDIF IF cPath == NIL ; cPath := "" ENDIF IF cMask == NIL ; cMask := "*" ENDIF IF cAttr == NIL ; cAttr := "AD" ENDIF
IF !Empty(cPath) ; cPath := hb_DirSepAdd(cPath) ENDIF
Оставил в поставке стандартный файл letoudf.prg, любые дополнительные функции можно добавить в этот файл или в свою программу по желанию. Благодарю за помощь
Где эта циферка сидит ? Не могу у себя исправить, всегда показывает 3.0 вот по этой функции Leto_GetServerVersion()
SergKis
постоянный участник
Пост N: 4633
Зарегистрирован: 17.02.12
Отправлено: 20.09.24 17:50. Заголовок: Andrey пишет Не могу..
Andrey пишет
цитата:
Не могу у себя исправить, всегда показывает 3.0 вот по этой функции Leto_GetServerVersion()
версия сидит в include\funcleto.h #define LETO_VERSION_STRING "3.0" надо править тут, но главное, после сборки заменить клиента полученного в MiniGui, потому и предлагал UDF_AppGetOptions, что бы не заморачиваться с этим и за одно обращение к серверу иметь все доступные режимы работ его.
SergKis
постоянный участник
Пост N: 4634
Зарегистрирован: 17.02.12
Отправлено: 20.09.24 18:05. Заголовок: gfilatov2002 пишет Д..
gfilatov2002 пишет
цитата:
Добавил эти изменения, но убрал из кода сервера функции, которые зависят от Минигуи.
сборка лежит в hmg и сервер для windows, так что вполне может быть привязан к MiniGui, но отпадают мелькающие черные экраны с использованием leto_ProcessRun(...), она хороша, но ... не всегда. Я беру и в каталог Advanced\LetoDbf кладу каталог Letodbf-master, в нем делаю _Build.bat с одной строкой call ..\..\..\..\batch\hbmk2.bat /n %* letodb.hbp и _Build_udf.bat (letoudf.prg кладу в SOURCE) со строками @echo off SET UDF=.\SOURCE if exist letoudf.hrb del letoudf.hrb > nul call ..\..\..\..\batch\hbmk2.bat letoudf.hbp if exist letoudf.hrb move letoudf.hrb %UDF%\letoudf.hrb
для windows daemon сборки (как в версии hmg) все ok!, но получается, все таки, это лишнее, на мой взгляд. Можно включить ShellExecuteEx вместо WaitRunTerm (тут вариантов больше). Будет размер exe немного больше Зато в сборке hmg нормальная сборка сервера и не надо каждый раз его пересобирать, после новой версии hmg
Тогда добавлю функцию WAPI_SHELLEXECUTE_WAIT() из библиотеки hbwin для замены WaitRunTerm
SergKis
постоянный участник
Пост N: 4635
Зарегистрирован: 17.02.12
Отправлено: 20.09.24 19:13. Заголовок: gfilatov2002 пишет Т..
gfilatov2002 пишет
цитата:
Тогда добавлю функцию WAPI_SHELLEXECUTE_WAIT() из библиотеки hbwin для замены WaitRunTerm
Она без ожидания запускает ? Это важно иметь обе возможности, без ожидания и с ожиданием и кодом возврата. В linuks эти строки для windows, комментируются в коде, остальное остается, Андрей проверил.
Тогда добавлю функцию WAPI_SHELLEXECUTE_WAIT() из библиотеки hbwin для замены WaitRunTerm
Как это использовать ? Как различать какой сервер запущен: на Windows или на Linux ? Я конечно могу предложить своё решение, но хотелось бы иметь СТАНДАРТНОЕ решение.
Это нужно для запуска внешних программ, пока архиваторов. Для Linux работает запуск Rar и Zip без .exe Уже проверял, работает.
Встроенный hb_ZipFile() работает в 3 раза быстрей.
// Здесь два бегунка - на стороне сервера LetoDbf НЕ БУДУТ работать bBlock := {|| Nil } // показ общего бегунка bBlock2 := {|| Nil } // показ для каждого файла tStart := hb_DateTime() // запуск функции на сервере hb_ZipFile() lScs := Leto_Udf("hb_ZipFile", cZipFile, aZip, nLZip, bBlock, NIL, cPsw, .T., , bBlock2) cTime := "Time spent archiving - " + HMG_TimeMS( tStart ) + "!;;"
SergKis
постоянный участник
Пост N: 4638
Зарегистрирован: 17.02.12
Отправлено: 21.09.24 23:05. Заголовок: Andrey пишет Как это..
Andrey пишет
цитата:
Как это использовать ?
Это для windows сборки (которая в hmg), запуски exe на сервере без черных окон leto_ProcessRun WAPI_SHELLEXECUTE_WAIT() - с ожиданием и кодом возврата WAPI_SHELLEXECUTE() - ты знаешь exe работает на сервере, например, VWT без экранных команд или даже hmg сборка без окон для разных операций с базой (выступать может автономным модулем или как клиент сервера к localhost), в том числе и 7za.exe
* Fixed: StatusItem, ProgressItem, KeyBoard, Clock items: program crashes when these controls were defined after END WINDOW command. Example: // Define the main window DEFINE WINDOW Form_1 ... ... END WINDOW // Define a status bar DEFINE STATUSBAR OF Form_1 STATUSITEM "Ready" KEYBOARD CLOCK END STATUSBAR Contributed by Grigory Filatov * Enhanced: The StatusBar command supports now the optional PROMPT clause. This message will be used to display in the 1st status item when the status bar has been defined like this DEFINE STATUSBAR PROMPT "Ready" END STATUSBAR Contributed by Grigory Filatov (see demo in folder \samples\Basic\ChatGPT\template) * Enhanced: Added the auxiliary function HMG_Alert_Separator() for managing of a delimiter in the function HMG_Alert(). Usage: // Set empty Alert* separator cOldSep := HMG_Alert_Separator( "" ) cText := hb_MemoRead( cFile ) AlertInfo( cText, , , , , , , .T. ) HMG_Alert_Separator( cOldSep ) Suggested and contributed by Sergej Kiselev * New: The SPLITTER library source code (see in folder \Source\Splitter). Don't miss this very interesting expansion! Contributed by Kamil Kalus <kamilkalus0[at]gmail.com> Revised by Grigory Filatov (see demo in folder \samples\Advanced\Splitter) * Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG: - fixed a resource leakage in the TSMulti class. Reported by Sergej Kiselev on the Russian HMG forum. Contributed by Grigory Filatov (see demo in folder \samples\Advanced\Tsb_SBrowse) * Updated: Harbour Compiler 3.2.0dev (SVN 2024-08-17 17:37). Contributed by Grigory Filatov <gfilatov@gmail.com> (look at ReadMe.txt in folder \harbour) [STANDARD VERSION] * New: 'Minigui Basic examples generated by ChatGPT AI' samples: - added 'Quick Start Guide' by ChatGPT; - added 'Unlocking the Power of Harbour MiniGUI' by ChatGPT; - added 'Key Differences from DOS Programming' by ChatGPT; - added 'Commented some of the core functions' by ChatGPT. Revised for Minigui Extended by Grigory Filatov (see in folder \samples\Basic\ChatGPT) * New: 'Database RollBack testing in DBF' sample. Based upon a contribution of G. N. Rao for FiveWin. Adapted for Minigui Extended by Grigory Filatov (see in folder \samples\Advanced\DBROLLBACK) * New: 'Remove Drive By Letter Safely' utility. Based upon a code by Uwe Sieber - www.uwe-sieber.de Adapted for Minigui Extended by Grigory Filatov (see in folder \Utils\RemoveDriveByLetter) [PRO VERSION] * Updated: 'Simple app for creating backup of source files' utility: - updated for compatibility with the last Minigui changes. Contributed by Grigory Filatov (see in folder \Utils\SOURCE_ARCHIVER) [PRO VERSION] * Updated: 'LetoDBf server&client testing' sample: - added directory and zip compress functions to LetoDBf server code. Suggested and contributed by Sergej Kiselev (see in folder \samples\Advanced\LetoDBf\SERVER\SOURCE) - updated LetoDBf server to version 3.01. Contributed by Grigory Filatov (see in folder \samples\Advanced\LetoDBf\SERVER) [PRO VERSION] * Updated: 'HMG Achoice' sample: added new possibilities. Contributed by Pierpaolo Martinello (see in folder \samples\Advanced\ACHOICE_2) * Updated: 'Five GUI libraries for testing' sample: - changed GUI functions to a class. Contribution of Jose Quintas. Revised for Minigui Extended by Grigory Filatov (see in folder \samples\Advanced\FiveLibsTest)
Если у вас есть предложения или вопросы, я готов их рассмотреть...
SergKis
постоянный участник
Пост N: 4639
Зарегистрирован: 17.02.12
Отправлено: 23.09.24 17:49. Заголовок: gfilatov2002 в Leto..
gfilatov2002 в LetoDbf добавить REQUEST hb_NtoC, hb_EnumIndex
Все даты в формате GMT
3 час. Хитов сегодня: 25
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет