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

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

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

Ответов - 300, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All

gfilatov2002: Andrey пишет: функция определяющая тип время Попробуй использовать функцию HB_ISTIMESTAMP()

Andrey: Спасибо БОЛЬШОЕ !

SergKis: Andrey Уже публиковали, повторю https://github.com/Petewg/harbour-core/wiki


Andrey: gfilatov2002 пишет: Попробуй использовать функцию HB_ISTIMESTAMP() А можно добавить аналогично как другие hb_IsLogical, hb_IsDate, hb_IsChar , типа - hb_IsDateTime ?

SergKis: Andrey по ссылке на оглавлении hb_I смотреть не пробовал ? [pre2] ... hb_IsDateTime(<xExp>) ➜ lResult determines if <xExp> evaluates to a timestamp (valtype "T") or a date (valtype "D") value. hb_IsTimestamp(<xExp>) ➜ lResult determines if <xExp> evaluates to a timestamp (valtype "T). [/pre2]

Andrey: SergKis пишет: по ссылке на оглавлении hb_I смотреть не пробовал ? Да опять моё невнимание. Посмотрел только в CH и все... Извиняюсь...

SergKis: gfilatov2002 Небольшая недоработка в MDI с ToolBar, примеры тут https://TransFiles.ru/duv77 1. demo.exe - ToolBar на MdiMain окне - нажатие Maximize окна работает как надо ToolBar меняет размер 2. demo2.exe- ToolBar на MdiChild окне - нажатие Maximize окна работает НЕ как надо ToolBar НЕ меняет размер с тсб, то что размер не меняется, так и должно быть - нет обработчика [pre2]h_events.prg **************************************************************************** CASE WM_SIZE **************************************************************************** ... FOR i := 1 TO ControlCount IF _HMG_aControlParentHandles [ i ] == hWnd IF _HMG_aControlType [ i ] == "TOOLBAR" SendMessage ( _HMG_aControlHandles [ i ], TB_AUTOSIZE, 0, 0 ) ENDIF ENDIF NEXT i ... h_windowsmdi.prg //********************************************************************** CASE nMsg == WM_SIZE //********************************************************************** ... нет SendMessage ( _HMG_aControlHandles [ i ], TB_AUTOSIZE, 0, 0 ), как выше [/pre2] может тут причина

gfilatov2002: Выложил 2-е обновление сборки 23.02 с учетом последних исправлений и дополнений click here Благодарю Андрея Верченко и Сергея Киселева за непрерывную поддержку разработки этой библиотеки Желаю всем форумчанам здоровья и процветания

Andrey: gfilatov2002 пишет: Выложил 2-е обновление сборки 23.02 с учетом последних исправлений и дополнений Спасибо БОЛЬШОЕ Григорий за твой труд ! Народ ! Оцените код примера - MiniGUI\SAMPLES\Advanced\Tsb_array_4 Огромное СПАСИБО Сергею за его участие в создание таких примеров ! Был бы раньше такой пример, я бы по другому сделал у себя ВСЕ таблицы.

SergKis: gfilatov2002 SergKis пишет Небольшая недоработка в MDI с ToolBar Сделал как в нашей версии 1. убрал в FUNCTION MdiEvents ( hWnd, nMsg, wParam, lParam ) секцию WM_SIZE, т.е. /* //********************************************************************** CASE nMsg == WM_SIZE //********************************************************************** ... */ //********************************************************************** CASE nMsg == WM_CLOSE //********************************************************************** ... 2. h_events.prg [pre2] **************************************************************************** CASE WM_SIZE **************************************************************************** ... IF _HMG_MainClientMDIHandle != 0 IF wParam != SIZE_MINIMIZED .AND. hWnd==_HMG_MainHandle SizeClientWindow ( hWnd, _HMG_ActiveStatusHandle, _HMG_MainClientMDIHandle, r ) ENDIF ENDIF ... [/pre2] работает как надо с изменением Maximize\Normalize Main окна, но так же не работает, как и раньше, с Maximize MdiChild окна (пример 1 из архива выше)

gfilatov2002: SergKis пишет: не работает, как и раньше, с Maximize MdiChild окна Решил эту проблему в примере 2 из архива, добавив в основное окно два обработчика событий ON MAXIMIZE и ON SIZE: [pre2] DEFINE WINDOW wMain AT nY,nX WIDTH nW HEIGHT nH TITLE cTitle ; MAIN MDI TOPMOST ; BACKCOLOR {227, 238, 251} ; ON INIT {|| This.Topmost := .F., DoEvents(), _wPost(0) } ; ON MAXIMIZE {|| iif( ISNUMERIC( hSpl ), _SetWindowSizePos ( hSpl, , , This.Width ), ) } ; ON SIZE {|| iif( ISNUMERIC( hSpl ), _SetWindowSizePos ( hSpl, , , This.Width ), ) } ; ON INTERACTIVECLOSE {|| _wSend(98), This.Cargo:lCloseForm } ; ON RELEASE {|| dbCloseAll() } [/pre2] и сделал переменную hSpl типа Public в функции Main (соответственно убрал ее из функции Child_Button()): PUBLIC hSpl

SergKis: gfilatov2002 пишет Решил эту проблему в примере 2 из архива, добавив в основное окно два обработчика событий ON MAXIMIZE и ON SIZE: С самим MdiChild окном - все ясно (надо обработчики, лучше спрятать во внутрь, а не прописывать каждому окну). Изменения про которые писал выше, касаются только притягивания StatusBar и ToolBar к размеру MdiMain окна (Maximize\Normalize кнопка), в 1-м и во втором примерах (до изменений работало правильно только во 2-м примере, в 1-м нет). А но так же не работает, как и раньше, с Maximize MdiChild окна (пример 1 из архива выше) относится к 1-му примеру, т.е. запускаем, жмем, например, кнопку 3, получаем MdiChild окно, жмем кнопку Maxmize этого окна и получаем .... Тут тоже вопрос есть. Как выполнять Maximize ? Приводить все MdiChild окна к режиму Maximize или делать MdiChild окно в размер реальной клиентской области MdiMain окна ? PS В своей версии режим работы 1-го примера не используем в работе MDI, все только в режиме 2-го примера, т.е. всем MdiChild окнам (в lib загнали) делается This.Maximize, т.е. всегда видим только одно окно (под ним могут быть др. MdiChild окна, можно их видимость переключать) + Modal окна как в примере 2-а. Как показала практика - этого достаточно

gfilatov2002: Выложил 3-е обновление сборки 23.02 с учетом последних исправлений и дополнений click here Это последнее обновление библиотеки, дальнейшая ее разработка и поддержка поставлены на паузу... Благодарю за ваше внимание.

Andrey: Григорий, можно в h_tbrowse.prg в METHOD ExcelOle(...) поменять местами строки ? [pre2] IF bExtern != NIL Eval( bExtern, oSheet, Self ) ENDIF oRange:Borders():LineStyle := xlContinuous oRange:Columns:AutoFit() Сделать так: oRange:Borders():LineStyle := xlContinuous oRange:Columns:AutoFit() IF bExtern != NIL Eval( bExtern, oSheet, Self ) ENDIF [/pre2] Дело в том что [pre2]oRange:Columns:AutoFit() // автоматически поменять ширину всех столбцов и высоту всех строк // в диапазоне, чтобы туда уместился текст ячеек.[/pre2] А я хочу менять ширину колонок.

Haz: Andrey пишет: А я хочу менять ширину колонок. Гораздо полезнее если метод будет опционально возвращать oExcel вне зависимости от установки lActivate. Тогда делать можно что угодно с созданным объектом. Ps. Повторюсь, метод на любителя. Скорее как пример работы с оле , чем реально требующийся.

Andrey: gfilatov2002 пишет: Выложил 3-е обновление сборки 23.02 с учетом последних исправлений и дополнений Перешёл на него, отдельные проекты собираются. Перестал работать ехе-ник моей большой системы. Собирается, запускается, в лог чуток пишет и выходит без ошибки ! Совсем выходит, без запуска MAIN окна. Откатился на 23.01 - прога собирается и запускается нормально... Что такого нового в этом обновление ?

gfilatov2002: gfilatov2002 пишет: Это последнее обновление библиотеки Завершается подготовка 4-го и последнего обновления сборки 23.02 Что нового: * New: Added the new C-function IsHIcon( hIcon ) --> lIsHIcon to check if the given parameter is a pointer to an icon. This function is already used in the Minigui core. Contributed by Grigory Filatov <gfilatov@gmail.com> * New: Added HbLibXlsxWriter library by Fausto Di Creddo Trautwein for creating new Excel XLSX files. Based upon the Libxlsxwriter C library of John McNamara. Adapted for Minigui Extended by Grigory Filatov (see source in folder \Source\hblibxlsxwriter) * Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG: - minor corrections in the method UpStable(). Investigated and contributed by Igor Nazarov (see demo in folder \samples\Advanced\TSBrowse) * Updated: HbSQLite3 library: - update for using SQLITE3 version 3.41.2 (from 3.41.1). Contributed by Grigory Filatov <gfilatov@gmail.com> * New: 'HyperLinks and Labels usage' sample. Based upon a contribution of Pablo Cesar Arrascaeta at HMGFORUM. Adapted for Minigui Extended by Grigory Filatov (see in folder \samples\Basic\HYPERLINK_2) * Updated: 'Usage of the built-in ZIP support of Windows' sample: - modified for archiving to the Backup subfolder. Contributed by Grigory Filatov <gfilatov@gmail.com> (see in folder \samples\Basic\Zip_4) * Updated: 'HbLibXlsxWriter library test' samples: - update for using libxlsxwriter version 1.1.5 (from 0.7.5). Contributed by Grigory Filatov <gfilatov@gmail.com> (see in folder \samples\Advanced\HbXlsxWriter) Если у вас есть дополнения к этой сборке, то я с удовольствием рассмотрю их Желаю всем доброго здоровья (SergKis) и благодарю за ваше внимание.

Andrey: gfilatov2002 пишет: Если у вас есть дополнения к этой сборке, то я с удовольствием рассмотрю Отправил на почту.

SergKis: gfilatov2002 Спасибо за пожелание. Всем его желаю. Такую правку предлагаю.[pre2] FUNCTION _EndTBrowse( bEnd ) ... IF i > 0 oBrw := _HMG_aControlIds[ i ] IF Len(oBrw:aColumns) > 0 oc := ATail(oBrw:aColumns) oBrw:oPhant:nClrHeadBack := oc:nClrHeadBack oBrw:oPhant:nClrFootBack := oc:nClrFootBack oc := NIL ENDIF oBrw:lRePaint := .T. ... что бы не писать END TBROWSE ON END {|ob,oc| ob:SetNoHoles(), oc := ATail(ob:aColumns), ; ob:oPhant:nClrHeadBack := oc:nClrHeadBack, ; ob:oPhant:nClrFootBack := oc:nClrFootBack, ; ob:Refresh(), ob:SetFocus() } [/pre2]

gfilatov2002: SergKis пишет: правку предлагаю Принято, но с поправкой. SergKis пишет: ... oBrw := _HMG_aControlIds[ i ] IF Len(oBrw:aColumns) > 0 oc := ATail(oBrw:aColumns) oBrw:oPhant:nClrHeadBack := oc:nClrHeadBack oBrw:oPhant:nClrFootBack := oc:nClrFootBack oc := NIL ENDIF oBrw:lRePaint := .T. Поскольку в этот момент колонка oPhant не определена, переписал эту правку таким образом: [pre2] ... oBrw:lRePaint := .T. oBrw:Display() IF Len( oBrw:aColumns ) > 0 .AND. ! Empty( oBrw:oPhant ) oc := ATail( oBrw:aColumns ) oBrw:oPhant:nClrHeadBack := oc:nClrHeadBack oBrw:oPhant:nClrFootBack := oc:nClrFootBack oc := NIL ENDIF ... [/pre2]



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