On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение
gfilatov
модератор




Пост N: 699
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 29.01.08 13:59. Заголовок: Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение)


Начало темы находится здесь, а теперь

АНОНС * АНОНС * АНОНС * АНОНС * АНОНС

Готовится к опубликованию новая сборка №48, которая выйдет в конце недели.
Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне

Кратко, что нового:

- исправление обнаруженных ошибок и неточностей кода;
- новый класс HEADERIMAGE для Grid и Browse;
- свойство Address в Hyperlink может теперь открывать папку или файл на диске;
- добавлен NOTABSTOP класс для Browse;
- поддержка пользовательских компонентов (заимствована из оффициального релиза);
- расширения и исправления в библиотеках TsBrowse и PropGrid;
- обновлены сборки Харбор и HMGS-IDE;
- новые и обновленные старые примеры (как обычно ).




Спасибо: 5 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]


gfilatov2002
moderator




Пост N: 2346
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 03.09.24 19:34. Заголовок: SergKis пишет: При ..


SergKis пишет:

 цитата:
При вкл. корректировки колонки Notes формируются файлы checkres.txt


Благодарю за сообщение!
Поправил код в методе End() следующим образом
METHOD End() CLASS TControl 

LOCAL ix
LOCAL nAt := If( ! Empty( ::oWnd:aControls ), ;
AScan( ::oWnd:aControls, {| hCtrl | hCtrl == Self:hWnd } ), 0 )

IF nAt != 0
ADel( ::oWnd:aControls, nAt )
ASize( ::oWnd:aControls, Len( ::oWnd:aControls ) - 1 )
ENDIF

IF ::hBrush != NIL
DeleteObject( ::hBrush )
ENDIF

::DelVars( Self:hWnd )
...

и теперь этот файл НЕ создается.

P.S.
SergKis пишет:

 цитата:
TSMULTI:NEW(76)


Строку 76 в файле TSMULTI.PRG я закомментировал...

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




Пост N: 4628
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 05.09.24 17:48. Заголовок: gfilatov2002 Неболь..


gfilatov2002
Небольшое предложение h_alert.prg
 
STATIC aBackColor, aFontColor, cLineSeparator := ";|"
...
IF Set( _SET_DELIMITERS ) .and. !Empty(cLineSeparator)
cOldDelim := Set( _SET_DELIMCHARS )
Set( _SET_DELIMCHARS, cLineSeparator )
#ifdef __XHARBOUR__
...
*-----------------------------------------------------------------------------*
FUNCTION HMG_Alert_Separator( cSeparator )
*-----------------------------------------------------------------------------*
LOCAL cOldSep := cLineSeparator

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)
...


Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 2347
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 05.09.24 20:37. Заголовок: SergKis пишет: Небо..


SergKis пишет:

 цитата:
Небольшое предложение h_alert.prg


Добавил такую возможность.
Благодарю за помощь!

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




Пост N: 7846
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.09.24 20:43. Заголовок: https://i.postimg.cc..




Иконки 96х96 не помещаются.
И наверное на нужно ещё сделать 128х128, экраны у юзеров большие !!!

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 2348
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 06.09.24 14:57. Заголовок: Andrey пишет: нужно..


Andrey пишет:

 цитата:
нужно ещё сделать 128х128



Попробуй переопределить следующую константу в файле h_alert.prg

 цитата:
#define MARGIN_ICON 130 // 70

и затем пересобрать библиотеку, конечно.

Спасибо: 1 
Профиль
gfilatov2002
moderator




Пост N: 2349
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 13.09.24 11:37. Заголовок: Всем кому это интересно...


На английском форуме библиотеки выложили такой элемент управления (SPLITTER), который обязательно будет добавлен в следующую сборку.

 цитата:
SYNTAX:

DEFINE SPLITTER <ControlName>
[ ID <nId> ]
[ OF, PARENT, DIALOG> <ParentWindowName> ]
[ AT <nRow> ,<nCol> ]
[ WIDTH <nWidth> ]
[ HEIGHT <nHeight> ]
[ VERTICAL ] [ HORIZONTAL ]
[ HIDEARROW ]
[ NOHOVER ]
[ USEGRADIENT ]
[ COLOR <color> ]
[ BACKCOLOR <backColor> ]
[ COLORHOVER <hoverColor> ]
[ BACKCOLORHOVER <hoverBackColor> ]
[ GRADIENT <leftColor>, <middleColor> [, <rightColor> ] ]
[ GRADIENTHOVER <hoverLeftColor>, <hoverMiddleColor> [, <hoverRightColor> ] ]
[ SPLIT <aLeftControls> FROM <aRightControls> ]
[ LIMITS <aLimits> ]



SPLITTER object properties:

- 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)





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




Пост N: 4632
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 20.09.24 13:10. Заголовок: gfilatov2002 Неболь..


gfilatov2002
Небольшая правка LetoDbf.
 
server\letofunc.c
/* leto_udf() */
HB_FUNC( LETO_GETAPPOPTIONS )
{
HB_USHORT uiNum;

if( HB_ISNUM( 1 ) )
uiNum = ( HB_USHORT ) hb_parni( 1 );
else
uiNum = 0;

switch( uiNum )
{
case LETOOPT_DATAPATH:
hb_retc( s_pDataPath );
break;
case LETOOPT_INDEXTYPE:
hb_retni( s_uiDriverDef );
break;
case LETOOPT_FILEFUNC:
hb_retl( s_bFileFunc );
break;

case LETOOPT_ANYEXT:
...
server\server.prg
...
REQUEST WaitRunTerm
REQUEST hb_hrbRun, hb_hrbLoad, hb_hrbDo, hb_hrbUnLoad, hb_hrbGetFunsym, hb_hrbGetFunList
REQUEST CompressFiles, UnCompressFiles
REQUEST HB_ZIPFILE, HB_UNZIPFILE
REQUEST HB_DIRECTORY, HB_ISARRAY, HB_ISCHAR, HB_ISLOGICAL, HB_ISBLOCK, ;
HB_ISNUMERIC, HB_ISOBJECT, HB_ISNIL, hb_Default, hb_ExecFromArray, ;
hb_jsonDecode, hb_jsonEncode, hb_DirSepAdd, hb_DirBuild, hb_DirExists, ;
hb_DefaultValue, hb_DirTemp, hb_DirUnbuild, hb_FileExists, hb_ForNext, ;
hb_FNameDir, hb_FNameExt, hb_FNameExtSet, hb_FNameExtSetDef, hb_FNameMerge, ;
hb_FNameName, hb_FNameNameExt, hb_FNameSplit, hb_eol, hb_ps, ;
HB_Crypt, HB_DeCrypt, hb_CRC32, hb_memoread, hb_memowrit, Seconds
...
и добавка в letoudf.prg
/* leto_AppGetOptions() of this HRB */
FUNCTION UDF_AppGetOptions
Local aOptions := {}

AAdd( aOptions, { "DataPath" , leto_GetAppOptions( 1 ) } ) // LETOOPT_DATAPATH
AAdd( aOptions, { "IndexType" , leto_GetAppOptions( 2 ) } ) // LETOOPT_INDEXTYPE
AAdd( aOptions, { "FileFunc" , leto_GetAppOptions( 3 ) } ) // LETOOPT_FILEFUNC
AAdd( aOptions, { "AnyExt" , leto_GetAppOptions( 4 ) } ) // LETOOPT_ANYEXT
AAdd( aOptions, { "ShareTables" , leto_GetAppOptions( 10 ) } ) // LETOOPT_SHARETABLES
AAdd( aOptions, { "NoSaveWA" , leto_GetAppOptions( 11 ) } ) // LETOOPT_NOSAVEWA
AAdd( aOptions, { "DebugLevel" , leto_GetAppOptions( 17 ) } ) // LETOOPT_DEBUGLEVEL
AAdd( aOptions, { "Optimize" , leto_GetAppOptions( 18 ) } ) // LETOOPT_OPTIMIZE
AAdd( aOptions, { "AutoOrder" , leto_GetAppOptions( 19 ) } ) // LETOOPT_AUTOORDER
AAdd( aOptions, { "MemoType" , leto_GetAppOptions( 20 ) } ) // LETOOPT_MEMOTYPE
AAdd( aOptions, { "LockCheme" , leto_GetAppOptions( 22 ) } ) // LETOOPT_LOCKCHEME
AAdd( aOptions, { "UdfEnabled" , leto_GetAppOptions( 23 ) } ) // LETOOPT_UDFENABLED
AAdd( aOptions, { "MemoSize" , leto_GetAppOptions( 24 ) } ) // LETOOPT_MEMOSIZE
AAdd( aOptions, { "LowerPath" , leto_GetAppOptions( 25 ) } ) // LETOOPT_LOWERPATH
AAdd( aOptions, { "Trigger" , leto_GetAppOptions( 26 ) } ) // LETOOPT_TRIGGER
AAdd( aOptions, { "HardCommit" , leto_GetAppOptions( 27 ) } ) // LETOOPT_HARDCOMMIT
AAdd( aOptions, { "VersionServer", "3.01" } )
AAdd( aOptions, { "VersionUDF" , UDF_Version() } )
AAdd( aOptions, { "VersionOS" , OS() } )
AAdd( aOptions, { "SepatorPath" , hb_ps() } )
AAdd( aOptions, { "SepatorLine" , hb_eol() } )

RETURN aOptions
...
использование
aOpt := leto_Udf("UDF_AppGetOptions") ; Default aOpt := {{"Error", "UDF not found"}}
?v aOpt ; ?
oOpt := oHmgData()
oOpt:Set(aOpt)
?v oOpt:GetAll() ; ?
? oOpt:FileFunc, oOpt:UdfEnabled, oOpt:DataPath

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

aDir := hb_Directory( cDataPath + cPath + cMask, cAttr )

IF hb_IsArray(aDir) .and. Len(aDir) > 0
IF !Empty(cPath)
nLen := Len(aDir)
aFil := { cPath, nLen - 2, hb_CtoT(""), "", "D" }
aAdd(aFiles, aClone(aFil))
ENDIF

FOR EACH aFil IN aDir
IF left(aFil[1], 1) != "."
IF aFil[5] == "D"
UDF_GetFiles( cPath + aFil[1], cMask, cAttr, aFiles )
ELSE
aFil[1] := upper(cPath) + lower(aFil[1])
aAdd(aFiles, aClone(aFil))
ENDIF
ENDIF
NEXT
ENDIF

RETURN aFiles

использование
aFil := leto_UDF("UDF_GetFiles")
?v aFil ; ?
aFil := leto_UDF("UDF_GetFiles", "TRANSFER")
?v aFil ; ?


Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 2350
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 20.09.24 16:23. Заголовок: SergKis пишет: Небо..


SergKis пишет:

 цитата:
Небольшая правка LetoDbf


Добавил эти изменения, но убрал из кода сервера функции, которые зависят от Минигуи.
Также увеличил версию сервера до 3.01

 цитата:
//REQUEST WaitRunTerm
REQUEST hb_hrbRun, hb_hrbLoad, hb_hrbDo, hb_hrbUnLoad, hb_hrbGetFunsym, hb_hrbGetFunList
//REQUEST CompressFiles, UnCompressFiles
REQUEST HB_ZIPFILE, HB_UNZIPFILE
REQUEST HB_DIRECTORY, HB_ISARRAY, HB_ISCHAR, HB_ISLOGICAL, HB_ISBLOCK, ;
HB_ISNUMERIC, HB_ISOBJECT, HB_ISNIL, hb_Default, hb_ExecFromArray, ;
hb_jsonDecode, hb_jsonEncode, hb_DirSepAdd, hb_DirBuild, hb_DirExists, ;
hb_DefaultValue, hb_DirTemp, hb_DirUnbuild, hb_FileExists, hb_ForNext, ;
hb_FNameDir, hb_FNameExt, hb_FNameExtSet, hb_FNameExtSetDef, hb_FNameMerge, ;
hb_FNameName, hb_FNameNameExt, hb_FNameSplit, hb_eol, hb_ps, ;
HB_Crypt, HB_DeCrypt, hb_CRC32, hb_memoread, hb_memowrit, Seconds


SergKis пишет:

 цитата:
и добавка в letoudf.prg


Оставил в поставке стандартный файл letoudf.prg, любые дополнительные функции можно добавить в этот файл или в свою программу по желанию.
Благодарю за помощь

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




Пост N: 7862
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.09.24 16:29. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Также увеличил версию сервера до 3.01


Где эта циферка сидит ?
Не могу у себя исправить, всегда показывает 3.0 вот по этой функции Leto_GetServerVersion()

Спасибо: 0 
Профиль
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, что бы не заморачиваться с этим и за одно обращение к серверу иметь все доступные режимы работ его.

Спасибо: 0 
Профиль
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

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 2351
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 20.09.24 18:32. Заголовок: SergKis пишет: Можн..


SergKis пишет:

 цитата:
Можно включить ShellExecuteEx вместо WaitRunTerm


Тогда добавлю функцию WAPI_SHELLEXECUTE_WAIT() из библиотеки hbwin для замены WaitRunTerm

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




Пост N: 4635
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 20.09.24 19:13. Заголовок: gfilatov2002 пишет Т..


gfilatov2002 пишет
 цитата:
Тогда добавлю функцию WAPI_SHELLEXECUTE_WAIT() из библиотеки hbwin для замены WaitRunTerm


Она без ожидания запускает ? Это важно иметь обе возможности, без ожидания и с ожиданием и кодом возврата.
В linuks эти строки для windows, комментируются в коде, остальное остается, Андрей проверил.

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




Пост N: 4636
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.09.24 14:08. Заголовок: gfilatov2002 Вынеси..


gfilatov2002
Вынесите _o2log(...) ( вместе с STATIC FUNCTION TR0( cTxt, nLen, cSim ) ) за скобку
#ifdef _OBJECT_
она к oHmgData() подходит в пару

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




Пост N: 7864
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.09.24 22:03. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Тогда добавлю функцию 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 ) + "!;;"


Спасибо: 0 
Профиль
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

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 2352
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 22.09.24 11:19. Заголовок: SergKis пишет: Выне..


SergKis пишет:

 цитата:
Вынесите _o2log(...) ( вместе с STATIC FUNCTION TR0( cTxt, nLen, cSim ) ) за скобку


OK
Благодарю за все ваши предложения - всегда "по делу".

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 2353
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 23.09.24 12:55. Заголовок: Всем кому это интересно...


Подготовил вторую бета версию новой сборки библиотеки Минигуи.

Что нового:
Скрытый текст

Если у вас есть предложения или вопросы, я готов их рассмотреть...

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




Пост N: 4639
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.09.24 17:49. Заголовок: gfilatov2002 в Leto..


gfilatov2002
в LetoDbf добавить REQUEST hb_NtoC, hb_EnumIndex

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 2354
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 23.09.24 18:00. Заголовок: SergKis пишет: REQU..


SergKis пишет:

 цитата:
REQUEST hb_NtoC, hb_EnumIndex


Видимо, имелась ввиду функция hb_NtoS, так она уже линкуется вместе с сервером

 цитата:
REQUEST HB_HEXTONUM, HB_NUMTOHEX, HB_NTOS



Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 25
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет