Форум » GUI » Пример экспорта Tsbrowse в разные форматы (Tsb_Export)... » Ответить

Пример экспорта Tsbrowse в разные форматы (Tsb_Export)...

Andrey: Всем привет. Что то у меня цвета с таблицы Tsbrowse не такими экспортируются в XML. Т.е. что-то в библиотеке hbxlsxml цвета по другому получаются... В Tsb2xml.prg цвет задаю так:[pre2] nColor := oBrw:aColumns[nCol]:nClrBack If hb_isBlock( nColor ) nColor := Eval(nColor, oBrw:nAt, nCol, oBrw ) end // в aColors храним массивы ( строка, столбец. стиль ) Aadd( aColors, {nLine, nCol, "S" + hb_ntoc(nColor, 16)} )[/pre2] Может неправильно делаю ?

Ответов - 75, стр: 1 2 3 4 All

Haz: Haz пишет: При таскании за угол - не меняется (НОЛЬ) тогда искать другое решение Ловится через WAPI_GETKEYSTATE()

SergKis: Haz пишет Значит клики при таскании парента за угол так не поймать Да это так, но и в др. местах не очень ловится Ловится через WAPI_GETKEYSTATE() Не ловится, как и через _HMG_MouseState Добавил [pre2] STATIC _App_OnEvent_ := .F. ... SET EVENTS FUNCTION TO App_OnEvents ... DEFINE WINDOW test ; ... ON INIT ( OnInitTest(oBrw,cParam), This.Topmost := .F., ; _App_OnEvent_ := .T. ) ... DEFINE TIMER Timer_MTest INTERVAL 100 ACTION iif( !_App_OnEvent_, , ; _LogFile(.T., 'Timer: _HMG_MouseState', _HMG_MouseState, WAPI_GETKEYSTATE()) ) END WINDOW CENTER WINDOW test ACTIVATE WINDOW test ... #define WM_SIZING 532 #define WM_NCPAINT 133 FUNC App_OnEvents( hWnd, nMsg, wParam, lParam ) LOCAL nRes := 0 If _App_OnEvent_ switch nMsg case WM_LBUTTONDOWN ? procname(), WM_LBUTTONDOWN, 'WM_LBUTTONDOWN', WAPI_GETKEYSTATE(), '_HMG_MouseState', _HMG_MouseState exit case WM_LBUTTONUP ? procname(), WM_LBUTTONUP, 'WM_LBUTTONUP', WAPI_GETKEYSTATE(), '_HMG_MouseState', _HMG_MouseState exit case WM_SIZE ? procname(), WM_SIZE, 'WM_SIZE', WAPI_GETKEYSTATE(), '_HMG_MouseState', _HMG_MouseState exit case WM_SIZING ? procname(), WM_SIZING, 'WM_SIZING', WAPI_GETKEYSTATE(), '_HMG_MouseState', _HMG_MouseState exit case WM_NCPAINT ? procname(), WM_NCPAINT, 'WM_NCPAINT', WAPI_GETKEYSTATE(), '_HMG_MouseState', _HMG_MouseState exit end EndIf RETURN Events( hWnd, nMsg, wParam, lParam ) ... STATIC FUNCTION ResizeTable(oBrw) LOCAL cForm := oBrw:cParentWnd LOCAL nMaxWidth, nMaxHeight, nPBarWidth, nCol, oCol LOCAl nW, nS, nN, nK ? procname() nMaxWidth := This.ClientWidth nMaxHeight := This.ClientHeight ... Получил в _MsgLog.txt Start - Tsb_export987bcc.exe Number of records in the table: 1005 Windows 8.1 6.3 Harbour MiniGUI Extended Edition 18.10 (32-bit) . Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 APP_ONEVENTS 532 WM_SIZING 0 _HMG_MouseState 0 APP_ONEVENTS 133 WM_NCPAINT 0 _HMG_MouseState 0 APP_ONEVENTS 5 WM_SIZE 0 _HMG_MouseState 0 RESIZETABLE Timer: _HMG_MouseState 0 0 APP_ONEVENTS 532 WM_SIZING 0 _HMG_MouseState 0 APP_ONEVENTS 133 WM_NCPAINT 0 _HMG_MouseState 0 APP_ONEVENTS 5 WM_SIZE 0 _HMG_MouseState 0 RESIZETABLE Timer: _HMG_MouseState 0 0 APP_ONEVENTS 532 WM_SIZING 0 _HMG_MouseState 0 APP_ONEVENTS 133 WM_NCPAINT 0 _HMG_MouseState 0 APP_ONEVENTS 5 WM_SIZE 0 _HMG_MouseState 0 RESIZETABLE Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 Timer: _HMG_MouseState 0 0 [/pre2] т.е. не поймали нажатие WM_LBUTTONDOWN, WM_LBUTTONUP, т.к. ловится нажатия над окном, но не при resize

Haz: SergKis пишет: Не ловится, Ловится ! У WAPI_GETKEYSTATE() есть параметр WAPI_GETKEYSTATE( VK_LBUTTON ) при попытке ресайза парент окна за угол возвращает значение по модулю больше 1 при нажатой кнопке и 0/1 при отпускании


SergKis: Haz пишет У WAPI_GETKEYSTATE() есть параметр Добавил в примере параметр, теперь вывод выглядит примерно так: ? procname(), ..., 'VK_LBUTTON', WAPI_GETKEYSTATE(VK_LBUTTON), '_HMG_MouseState', _HMG_MouseState получил файл [pre2] Start - Tsb_export987bcc.exe Number of records in the table: 1005 Windows 8.1 6.3 Harbour MiniGUI Extended Edition 18.10 (32-bit) . Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 Timer: _HMG_MouseState 0 VK_LBUTTON 0 APP_ONEVENTS 532 WM_SIZING VK_LBUTTON -127 _HMG_MouseState 0 Timer: _HMG_MouseState 0 VK_LBUTTON -127 APP_ONEVENTS 532 WM_SIZING VK_LBUTTON -127 _HMG_MouseState 0 APP_ONEVENTS 133 WM_NCPAINT VK_LBUTTON -127 _HMG_MouseState 0 APP_ONEVENTS 5 WM_SIZE VK_LBUTTON -127 _HMG_MouseState 0 RESIZETABLE VK_LBUTTON -127 _HMG_MouseState 0 Timer: _HMG_MouseState 0 VK_LBUTTON -127 APP_ONEVENTS 532 WM_SIZING VK_LBUTTON -127 _HMG_MouseState 0 APP_ONEVENTS 133 WM_NCPAINT VK_LBUTTON -127 _HMG_MouseState 0 APP_ONEVENTS 5 WM_SIZE VK_LBUTTON -127 _HMG_MouseState 0 RESIZETABLE VK_LBUTTON -127 _HMG_MouseState 0 Timer: _HMG_MouseState 0 VK_LBUTTON -127 APP_ONEVENTS 532 WM_SIZING VK_LBUTTON -127 _HMG_MouseState 0 APP_ONEVENTS 133 WM_NCPAINT VK_LBUTTON -127 _HMG_MouseState 0 APP_ONEVENTS 5 WM_SIZE VK_LBUTTON -127 _HMG_MouseState 0 RESIZETABLE VK_LBUTTON -127 _HMG_MouseState 0 Timer: _HMG_MouseState 0 VK_LBUTTON -127 APP_ONEVENTS 532 WM_SIZING VK_LBUTTON -127 _HMG_MouseState 0 APP_ONEVENTS 133 WM_NCPAINT VK_LBUTTON -127 _HMG_MouseState 0 APP_ONEVENTS 5 WM_SIZE VK_LBUTTON -127 _HMG_MouseState 0 RESIZETABLE VK_LBUTTON -127 _HMG_MouseState 0 Timer: _HMG_MouseState 0 VK_LBUTTON -127 APP_ONEVENTS 532 WM_SIZING VK_LBUTTON -127 _HMG_MouseState 0 APP_ONEVENTS 133 WM_NCPAINT VK_LBUTTON -127 _HMG_MouseState 0 APP_ONEVENTS 5 WM_SIZE VK_LBUTTON -127 _HMG_MouseState 0 RESIZETABLE VK_LBUTTON -127 _HMG_MouseState 0 Timer: _HMG_MouseState 0 VK_LBUTTON -127 Timer: _HMG_MouseState 0 VK_LBUTTON 1 Timer: _HMG_MouseState 0 VK_LBUTTON 1 Timer: _HMG_MouseState 0 VK_LBUTTON 1 Timer: _HMG_MouseState 0 VK_LBUTTON 1 Timer: _HMG_MouseState 0 VK_LBUTTON 1 Timer: _HMG_MouseState 0 VK_LBUTTON 1 Timer: _HMG_MouseState 0 VK_LBUTTON 1 Timer: _HMG_MouseState 0 VK_LBUTTON 1 Timer: _HMG_MouseState 0 VK_LBUTTON 1 Timer: _HMG_MouseState 0 VK_LBUTTON 1 Timer: _HMG_MouseState 0 VK_LBUTTON 1 Timer: _HMG_MouseState 0 VK_LBUTTON 1 Timer: _HMG_MouseState 0 VK_LBUTTON 1 Timer: _HMG_MouseState 0 VK_LBUTTON 1 Timer: _HMG_MouseState 0 VK_LBUTTON 1 Timer: _HMG_MouseState 0 VK_LBUTTON 1 Timer: _HMG_MouseState 0 VK_LBUTTON 1 Timer: _HMG_MouseState 0 VK_LBUTTON 1 Timer: _HMG_MouseState 0 VK_LBUTTON 1 [/pre2] т.е. во всех событиях, кроме timer значение -127 и надо переносить перерисовку на on timer ?

Haz: SergKis пишет: и надо переносить перерисовку на on timer ? Нет , в процедуре по On Resize если -127 то не рисуем бровс, а ждем когда отпустят кнопку . Но парадокс в том когда ее отпустят - то и on Resize уже не вызовется ЗЫ таймер я испорльзовал для простоты и наглядности

Haz: Haz пишет: Но парадокс в том когда ее отпустят - то и on Resize уже не вызовется Получается с началом ON RESIZE запускаем сторожа ( через поток или через таймер ) и в нем ждем когда кнопка освободится. Потом перерисовываем бровс в новых размерах. Все реализуемо, но мне оно тоже не надо )))

SergKis: SergKis пишет т.е. во всех событиях, кроме timer значение -127 Еще -128 появляется, точно не понял от чего, но похоже чередуются с -127, но может и не так Haz пишет Но парадокс в том когда ее отпустят - то и on Resize уже не вызовется Потому и переносить прорисовку надо на куда то и timer активировать. Мудрено как то. По мне лучше zoom +\- 10% к ширине окна добавлять и плясать перерисовкой контролов

Haz: SergKis пишет: Еще -128 появляется, точно не понял от чего, но похоже чередуются с -127, но может и не так Haz пишет Именно так , сам не пойму почему Чередуется -127/-128 и 0/1 SergKis пишет: Мудрено как то Да, ну если кто-то захочет маньячить в потоке или на таймере - то реализуемо.

SkyNET: Haz пишет: Получается с началом ON RESIZE запускаем сторожа ( через поток или через таймер ) и в нем ждем когда кнопка освободится. Потом перерисовываем бровс в новых размерах. Зачем так сложно, когда в WinApi есть готовые WM_ENTERSIZEMOVE/WM_EXITSIZEMOVE? Они же, кстати, и используются в C# под капотом у Form->ResizeBegin/ResizeEnd. Andrey пишет: Как бы сделать ТАК ЖЕ и для Tsb_Export ? Через свою функцию-обработчик сообщений: [pre] PROCEDURE Main() SET EVENTS FUNCTION TO MYEVENTS DEFINE WINDOW Form_1 ; // ........... CENTER WINDOW Form_1 ACTIVATE WINDOW Form_1 RETURN #define WM_ENTERSIZEMOVE 0x0231 #define WM_EXITSIZEMOVE 0x0232 FUNCTION MyEvents ( hWnd, nMsg, wParam, lParam ) DO CASE CASE nMsg == WM_ENTERSIZEMOVE Form1_ResizeBegin() CASE nMsg == WM_EXITSIZEMOVE Form1_ResizeEnd() OTHERWISE Events ( hWnd, nMsg, wParam, lParam ) ENDCASE RETURN Events ( hWnd, nMsg, wParam, lParam ) [/pre] Было бы хорошо, если эти события добавили в MiniGUI к Window, чтобы можно было просто задавать ON SIZE_BEGIN / SIZE_END.

SergKis: SkyNET пишет Через свою функцию-обработчик сообщений: ... Было бы хорошо, если эти события добавили в MiniGUI к Window, чтобы можно было просто задавать ON SIZE_BEGIN / SIZE_END. Тогда все, действительно, получается хорошо. [pre2] Добавка в пример (timer убран) #define WM_ENTERSIZEMOVE 0x0231 #define WM_EXITSIZEMOVE 0x0232 FUNC App_OnEvents( hWnd, nMsg, wParam, lParam ) If _App_OnEvent_ switch nMsg case WM_ENTERSIZEMOVE ? procname(), WM_ENTERSIZEMOVE, 'WM_ENTERSIZEMOVE' exit case WM_EXITSIZEMOVE ? procname(), WM_EXITSIZEMOVE , 'WM_EXITSIZEMOVE' exit end EndIf RETURN Events( hWnd, nMsg, wParam, lParam ) дает результат Start - Tsb_export987bcc.exe Number of records in the table: 1005 Windows 8.1 6.3 Harbour MiniGUI Extended Edition 18.10 (32-bit) . APP_ONEVENTS 561 WM_ENTERSIZEMOVE RESIZETABLE VK_LBUTTON -128 _HMG_MouseState 0 RESIZETABLE VK_LBUTTON -128 _HMG_MouseState 0 RESIZETABLE VK_LBUTTON -128 _HMG_MouseState 0 RESIZETABLE VK_LBUTTON -128 _HMG_MouseState 0 RESIZETABLE VK_LBUTTON -128 _HMG_MouseState 0 RESIZETABLE VK_LBUTTON -128 _HMG_MouseState 0 APP_ONEVENTS 562 WM_EXITSIZEMOVE APP_ONEVENTS 561 WM_ENTERSIZEMOVE RESIZETABLE VK_LBUTTON -127 _HMG_MouseState 0 RESIZETABLE VK_LBUTTON -127 _HMG_MouseState 0 RESIZETABLE VK_LBUTTON -127 _HMG_MouseState 0 RESIZETABLE VK_LBUTTON -127 _HMG_MouseState 0 RESIZETABLE VK_LBUTTON -127 _HMG_MouseState 0 RESIZETABLE VK_LBUTTON -127 _HMG_MouseState 0 RESIZETABLE VK_LBUTTON -127 _HMG_MouseState 0 RESIZETABLE VK_LBUTTON -127 _HMG_MouseState 0 APP_ONEVENTS 562 WM_EXITSIZEMOVE [/pre2]

Andrey: Вышла новая версия примера Tsb_Export(9.88). Реализована плавное увеличение окон и автоматическое увеличение/уменьшение таблицы. Спасибо большое Григорию и Сергею за помощь ! Большая просьба протестировать на ваших компах следующее меню - "Export to C# Dll Ole-Excel (xls)" ! И результаты пожалуйста напишите здесь. У меня даже на игровом компе не вылетает. Григорий пишет, что у него на 7-ке вылетает. Сами ехе-ники собраны на 2-х компиляторах: https://cloud.mail.ru/public/C2ae/pkQkZh9kY В системе должен быть установлен Microsoft.NET Framework версии 4.0.3 и выше. Заранее благодарю за помощь.

Andrey: hbxlsxml + tsbrowse и картинка ? А как можно вывести картинку для таблицы, пример SAMPLES\Advanced\Tsb_Export - для меню "Export to Excel 2 (xml-files)" Смотрел либу, вроде нет методов вывода картинки...

Haz: Andrey пишет: Смотрел либу, вроде нет методов вывода картинки Давно не смотрел исходник, но там вроде и правда не было. Поступаю так: создаю XML, затем открываю через ole и дорисовываю .

Andrey: Haz пишет: Поступаю так: создаю XML, затем открываю через ole и дорисовываю . Понял. Спасибо !

Andrey: Версия МиниГуи 20.08 (Update 3) Есть пример SAMPLES\Advanced\Tsb_Export_2\demo.exe Беру оттуда Tsb7xlsOle.prg, Tsb7xml.prg, TsbCell.prg в новый проект. В новом проекте вылет из-за TsbCell - не заполняется формат oCol:cPicture в функции myGetTsbCell(oBrw) Т.е. в примере в модуле TsbCell.prg ставлю отладку [pre2] ? aRet ; ?v aRet[/pre2] выводит правильно, типа: [pre2]{0, 15794175, 1879708121, 0d20200331, "D", "99.99.99", "DCALC", "Center"}[/pre2] А в новом проекте выводит так: [pre2]{0, 15794175, 1611272175, 0d20200920, "D", NIL, "DEVENT", "Center"}[/pre2] все выводы формата oCol:cPicture - NIL Как такое возможно используя один и тот же исходник ? Что нужно исправить/добавить в новом проекте для ТСБ ?



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