Автор | Сообщение |
|
| постоянный участник
|
Пост N: 5971
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.07.18 12:15. Заголовок: Пример экспорта Tsbrowse в разные форматы (Tsb_Export)...
Всем привет. Что то у меня цвета с таблицы Tsbrowse не такими экспортируются в XML. Т.е. что-то в библиотеке hbxlsxml цвета по другому получаются... В Tsb2xml.prg цвет задаю так: 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)} ) Может неправильно делаю ?
|
|
|
Ответов - 75
, стр:
1
2
3
4
All
[только новые]
|
|
|
| постоянный участник
|
Пост N: 6116
Зарегистрирован: 12.09.06
|
|
Отправлено: 06.11.18 14:22. Заголовок: Собрал проект Tsb_Ex..
Собрал проект Tsb_Export под MSVC 2017 64bit ! О чудо, на игровом компе, где раньше вылетало (меню "New: Export to Ole-Excel 1 (xls)"), теперь не вылетает ! Слава MSVC 2017. Правда на меню "New: Export to Ole-Excel 2 (xls)" вылетает, что то с фонтами. Разница в размере между 32бит и 64бит на 400Кб больше ехе-ник весит.
|
|
|
|
| постоянный участник
|
Пост N: 6124
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.11.18 22:03. Заголовок: Добавил следующее ме..
Добавил следующее меню - "Export to C# Dll Ole-Excel (xls)" ! Создание массивов таблицы и передача их в C# - ExcelOleLib.dll сам проект ExcelOleLib.dll на C# (преобразование из массива и заполнение через OLE эксельной таблицы). Вызов из харбора dll-ки на C# выглядит так: aParam := { cFile, oBrw:nLen, aImage, aTTitle, aTTitle2, aTSuperHd, aTHeading, aTFooting, aTTitle3, aTCellType } oCLR := CLR_RUNTIME():New("v4.0.30319") // clrdyn.dll - работа с Common Language Runtime // (загрузка и выполнение C# сборок) oAsm := oCLR:LoadAssembly("ExcelOleLib") // вызов ExcelOleLib.dll на C# oExcel := oAsm:CreateInstance("Library.Runner") //oAsm:CallStatic("Library.Debug", "PrintArray", aParam ) // отладка oExcel:Call("SetSettings", aParam) // передача параметров в ExcelOleLib.dll на C# oExcel:Call("AddData", aTCell) // передача массива всех ячеек таблицы //oAsm:CallStatic("Library.Debug", "PrintArray", aTCell) // отладка hExcelHandle := oExcel:Call("ShowAndGetHwnd") // возврат хендла окна экселя На игровом компе не вылетает. Большая просьба протестировать на ваших компах. Сами ехе-ники собраны на 2-х компиляторах: https://cloud.mail.ru/public/2QaA/52ay65T9T Для работы с C# необходимы: clrdyn.dll и ExcelOleLib.dll смотреть - http://clipper.borda.ru/?1-7-0-00000046-000-0-1-1540654515 Сами исходники отправлены Григорию.
|
|
|
|
| постоянный участник
|
Пост N: 6125
Зарегистрирован: 12.09.06
|
|
Отправлено: 22.11.18 18:57. Заголовок: Вот пример аналог Ts..
|
|
|
|
| |
Пост N: 1404
Зарегистрирован: 20.02.11
|
|
Отправлено: 22.11.18 19:28. Заголовок: Andrey пишет: Как б..
Andrey пишет: Так же и делай, по тому же алгоритму. Есть же метод SetColSize(). Возможно не совсем плавная прорисов ка получится, но это другая история
|
|
|
|
| постоянный участник
|
Пост N: 2139
Зарегистрирован: 17.02.12
|
|
Отправлено: 23.11.18 10:28. Заголовок: Haz пишет Так же и д..
Haz пишет цитата: | Так же и делай, по тому же алгоритму. |
| Можно задавать ВСЕ контролы в % к клиентской области и колонки тсб в % к ширине тсб. Тогда не нужно сохранять OldWidth, всегда расчет от тек. width и %. Фонты размеры так же наложить с учетом %. Иногда исп. для форм. размеров 2-х окон (совместное использование) и контролов на них в % от desktop (c noresize)
|
|
|
|
| |
Пост N: 1405
Зарегистрирован: 20.02.11
|
|
Отправлено: 23.11.18 10:56. Заголовок: SergKis пишет: Можн..
SergKis пишет: цитата: | Можно задавать ВСЕ контролы в % |
| Согласен, тогда на разных мониторах будет приемлемо смотреться Но ... Андрей хотел и для этого в TS все есть, просто бери и делай
|
|
|
|
| постоянный участник
|
Пост N: 6130
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.11.18 18:52. Заголовок: Вот ещё один тестовы..
|
|
|
|
| постоянный участник
|
Пост N: 6131
Зарегистрирован: 12.09.06
|
|
Отправлено: 29.11.18 17:31. Заголовок: Возвращаюсь к измене..
Возвращаюсь к изменению ширин колонок Tsbrowse на окне. Если сделать так: ON MAXIMIZE ( ResizeTable(oBrw) ) ; ON SIZE ( ResizeTable(oBrw) ) ; То при изменение размеров окна таблица прямо таки вся мерцает (перерисовывается) ! Что не очень красиво. В C# есть свойства для окна: Form_ResizeBegin(...) и Form_ResizeEnd(...) Из-за этого там плавная перерисовка таблицы. Можно ли как то в МиниГуи сделать похоже ? Или как то клик мышки отловить, нажата она или отпустили её ?
|
|
|
|
| постоянный участник
|
Пост N: 2140
Зарегистрирован: 17.02.12
|
|
Отправлено: 29.11.18 17:56. Заголовок: Andrey пишет То при ..
Andrey пишет цитата: | То при изменение размеров окна таблица прямо таки вся мерцает (перерисовывается) ! |
| Может надо перевести пример на дискретные приращения размеров (масштаб +\- 10 %) к текущим значениям (кнопки zoom +\-) Нажимай на окне примера кнопки Maximize, Normalize - приемлемо отображает, если тсб в светлых тонах, так совсем нормально
|
|
|
|
| |
Пост N: 1408
Зарегистрирован: 20.02.11
|
|
Отправлено: 29.11.18 18:04. Заголовок: Andrey пишет: Или к..
Andrey пишет: цитата: | Или как то клик мышки отловить, нажата она или отпустили её ? |
| в h_events.prg есть два события WM_LBUTTONDOWN и WM_LBUTTONUP можешь вставить в них установку флага , а в процедуре ResizeTable этот флаг анализировать
|
|
|
|
| постоянный участник
|
Пост N: 2141
Зарегистрирован: 17.02.12
|
|
Отправлено: 29.11.18 18:12. Заголовок: Haz пишет в h_events..
Haz пишет цитата: | в h_events.prg есть два события |
| Ловить их надо скорее в блоке кода тсб :bEvents := {|oBrw, nMsg, nWParam, nLParam| ... }
|
|
|
|
|
| постоянный участник
|
Пост N: 6132
Зарегистрирован: 12.09.06
|
|
Отправлено: 29.11.18 18:14. Заголовок: Haz пишет: в h_even..
Haz пишет: цитата: | в h_events.prg есть два события WM_LBUTTONDOWN и WM_LBUTTONUP можешь вставить в них установку флага , а в процедуре ResizeTable этот флаг анализировать |
| Если я вставлю, то код точно работать не будет ! Да и это только у меня будет, а в других версиях потом не будет. Как бы сделать общий код для всех, чтобы Григорий добавил в МиниГуи ?
|
|
|
|
| постоянный участник
|
Пост N: 2142
Зарегистрирован: 17.02.12
|
|
Отправлено: 29.11.18 18:33. Заголовок: Andrey пишет Как бы ..
Andrey пишет цитата: | Как бы сделать общий код для всех, чтобы Григорий добавил в МиниГуи ? |
| Код общий чего надо вставлять ? resize мне, к примеру совсем не нужен для работы с данными базы и клиента это вполне устраивает. Все размеры идут от фонта _HMG_DefaultFont... устанавливаются извне. Если понадобится обработчик для ловли сообщений, то сделать вполне можно :bEvents := {|oBrw, nMsg, nWParam, nLParam| MyEvents(oBrw, nMsg, nWParam, nLParam) } FUNC MyEvents(oBrw, nMsg, nWParam, nLParam) If nMsg == WM_LBUTTONDOWN ... ElseIf nMsg == WM_LBUTTONUP ... EndIf Return 0 // если выполнение главной Events(...) продолжать или Return 1 // если выполнение главной Events(...) НЕ продолжать, все уже сделано
|
|
|
|
| постоянный участник
|
Пост N: 6133
Зарегистрирован: 12.09.06
|
|
Отправлено: 29.11.18 19:59. Заголовок: SergKis пишет: Код ..
SergKis пишет: цитата: | Код общий чего надо вставлять ? |
| Да я не про то подумал. SergKis пишет: цитата: | resize мне, к примеру совсем не нужен для работы с данными базы и клиента это вполне устраивает. Все размеры идут от фонта _HMG_DefaultFont... устанавливаются извне. |
| Согласен, но хочется сделать изменяемое окно. Или хотя бы попробовать сделать. Т.е. типа такого ? STATIC FUNCTION ResizeTable(oBrw) ... oBrw:bEvents := {|oBrw, nMsg, nWParam, nLParam| MyEvents(oBrw, nMsg, nWParam, nLParam) } ....
|
|
|
|
| |
Пост N: 1409
Зарегистрирован: 20.02.11
|
|
Отправлено: 29.11.18 20:39. Заголовок: SergKis пишет: Лови..
SergKis пишет: цитата: | Ловить их надо скорее в блоке кода тсб |
| Не проверял, но есть сомнения что это сработает когда таскаем за угол парент окна. Проверил по быстрому , клики естественно ловятся только на TSB, парент окно на котором TSB - хоть обкликайся. Значит клики при таскании парента за угол так не поймать
|
|
|
|
| |
Пост N: 1410
Зарегистрирован: 20.02.11
|
|
Отправлено: 30.11.18 11:21. Заголовок: Andrey пишет: Если ..
Andrey пишет: цитата: | Если я вставлю, то код точно работать не будет ! Да и это только у меня будет, а в других версиях потом не будет. Как бы сделать общий код для всех, чтобы Григорий добавил в МиниГуи ? |
| На деле все просто если хотя бы заглянуть в исходник . А в нем при нажатии кнопки устанавливаются переменные _HMG_MouseRow := HIWORD( lParam ) _HMG_MouseCol := LOWORD( lParam ) _HMG_MouseState := 1, 2, 3 - зависит от какую кнопку давим При отпускании _HMG_MouseState := 0 Вот чтобы точно работало - ничего точно вставлять в общий код не надо. Надо в своем проверять _HMG_MouseState
|
|
|
|
| постоянный участник
|
Пост N: 6134
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.11.18 11:57. Заголовок: Haz пишет: Вот чтоб..
Haz пишет: цитата: | Вот чтобы точно работало - ничего точно вставлять в общий код не надо. Надо в своем проверять _HMG_MouseState |
| Понял. СПАСИБО !
|
|
|
|
| постоянный участник
|
Пост N: 6135
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.11.18 12:16. Заголовок: Нет изменения _HMG_M..
Нет изменения _HMG_MouseState в функции ResizeTable(), всегда возвращает 0. Как тогда делать ? STATIC FUNCTION ResizeTable(oBrw) nMouseState := _HMG_MouseState nMouseRow := _HMG_MouseRow nMouseCol := _HMG_MouseCol ? "nMouseState=", nMouseState, nMouseRow, nMouseCol .... nMouseState= 0 410 1252 nMouseState= 0 410 1252 nMouseState= 0 410 1252
|
|
|
|
| |
Пост N: 1411
Зарегистрирован: 20.02.11
|
|
Отправлено: 30.11.18 12:38. Заголовок: Andrey пишет: Нет и..
Andrey пишет: цитата: | Нет изменения _HMG_MouseState в функции ResizeTable(), всегда возвращает 0. Как тогда делать ? |
| Искать косяки , спецом проверил при нажатии и отпускании переменная меняется Проверял так DEFINE TIMER Timer_MTest OF Form_1 INTERVAL 100 ACTION {|| SetProperty( "Form_1", "TITLE", hb_NTOC( M->_HMG_MouseState ) ) }
|
|
|
|
| |
Пост N: 1412
Зарегистрирован: 20.02.11
|
|
Отправлено: 30.11.18 12:44. Заголовок: Andrey пишет: Нет и..
Andrey пишет: цитата: | Нет изменения _HMG_MouseState в функции ResizeTable(), всегда возвращает 0. |
| При таскании за угол - не меняется (НОЛЬ) тогда искать другое решение
|
|
|
Ответов - 75
, стр:
1
2
3
4
All
[только новые]
|
|