Форум » GUI » TsBrowse в Минигуи (продолжение) » Ответить

TsBrowse в Минигуи (продолжение)

Vlad04: TsBrows определяется в виде строки ПАРМЕТРОВ объекта и их значений К примеру [quote] DEFINE TBROWSE oBrw2 ; AT 60,450 ; ALIAS cAlias ; OF Form1 ; WIDTH 330 ; HEIGHT 340 ; FONT "Verdana" ; SIZE 9 ; ON DBLCLICK CopyRec(); ON GOTFOCUS fModelo_Hab(2) ; AUTOFILTER ; CELLED EDIT; VALUE nRec; GRID [/quote] Здесь я собрал параметры из разных tBrows Можно или нет и какие парметры заменить выражением ( и каким) ? oBrw2:.... oBrw2:....

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

Vlad04: А есть примеры многострочных бровсов ? Вариантов может быть несколько: в одной строке - Поле 1 - Поле 2 или - Часть1(Поле 1) - Часть2(Поле 1)

SergKis: Vlad04 пишет А есть примеры многострочных бровсов ? сделать пример не сложно Tsb_array_2 demo.prg[pre2] STATIC FUNCTION CreateDatos() ... FOR i := 1 TO k aDatos[ i ] := { " ", ; // 1 i, ; // 2 ntoc( i ) + CRLF + "_123", ; // 3 Date() + i, ; // 4 ... [/pre2]

Haz: SergKis пишет: А есть примеры многострочных бровсов ? В примерах есть только вариант с широкими строками , где в ячейке может быть многострочный текст. Такой вариант удобно использовать в виде календарика с событиями , привычно смотрится и можно каждую ячейку развернуть в окно с подробным описанием. Все остальные случаи многострочного бровса можно поделить условно на 2 вида : 1) когда заранее готовятся многострочные данные для скармливания бровсу , это может быть подготовка массива, временной базы или результат SQL запроса к таблице. Получаем многострочность в однострочном бровсе. 2) когда под задачу пишется свой Skipper() и FieldWblock(). Этот путь не простой , но проходимый. Я использую вариант 1 , нет желания и времени возиться с 2 PS дополню вариант 1 предпочтителен еще и тем что позволяет фильтровать ( срывать подразделы )


Vlad04: Haz В примерах есть только вариант с широкими строками , где в ячейке может быть многострочный текст. Такой вариант удобно использовать в виде календарика с событиями , привычно смотрится и можно каждую ячейку развернуть в окно с подробным описанием. О каких примерах конкретно идёт речь ?

Haz: Vlad04 пишет: О каких примерах конкретно идёт речь ? О базовом примере MiniGUI\SAMPLES\Advanced\TsBrowse\demo.exe Menu -> Samples on Windows -> Sample 4 -> колонка Address

Andrey: Всем привет. Использую многострочный Tsbrowse (из 2х строк). Всё работает отлично. При экспорте в Эксель высота строк ставиться почему то как одна строка. И приходиться твблицу в Экселе вручную высоту править... Убийственная работа. Нельзя там в исходниках исправить высоту ячеек, сделать её зависимой от высоты таблицы ячеек ?

Vlad04: в Эксель высота строк ставиться почему то как одна строка. А у Эксель для данного столбца нельзя ли установить свойство - ПЕРЕНОСИТЬ ПО СЛОВАМ. Тогда Эксель будет сам высоту строк править

Andrey: Vlad04 пишет: А у Эксель для данного столбца нельзя ли установить свойство Я там исходник глянул .... и ничего не понял...

Haz: Andrey пишет: Я там исходник глянул .... и ничего не понял... Надо внимательнее глядеть . Вся запись в методе ::Excel2() идет в так называемом двоичном формате BIFF. Этот формат был основным форматом Excel до 2007 года. Дальше используется Open XML , а BIFF поддерживается только с целью совместимости. Именно с форматом BIFF связаны все ограничения Excel до 2007 года ( одно из них это 65535 строк , но есть много других) Так вот про внимательность, Excel в методе заполняется в цикле через вызов BiffRec( opCode , ... ), где этот самый opCode - константа Excel по кодам операций ( в инете ссылок полно ). В самой функции BiffRec() отсутствует обработка кода 8 ( код операции ROWHEIGHT ) и 37 ( код операции DEF_ROWHEIGHT). Видимо автору метода она была не нужна. Но это не мешает ее туда добавить самостоятельно. Функция живет в TSColumn.prg и ее содержимое понятно без каких либо тайных знаний. PS Подарок тем , кому лень искать константы: http://www.purebasic.fr/english/viewtopic.php?p=267584 PPS Добавлю свое мнение, которое может не совпадать со мнгоми форумчанами. Формат BIFF считаю устаревшим, и не уверен что его следует развивать библиотеке. В 2007 микрософт формально его похоронил перейдя на xml. В исходнках harbour есть что то типа xlsxml. Пишу с мобильного и точно не помню. Уверен xml более перспективен как экспорт данных, т. к. микрософт теперь его использует в основе движка. И вот в xml готов поучаствовать. Тестовые примеры выгрузки в Excel из harbour у меня идут отлично и по скорости и по оформлению. Прикрутить класс к Tsbrowse, например как :Excel3() считаю вопросом времени (свободного времени)

Haz: И в новое сообщение тоже PPS Добавлю свое мнение, которое может не совпадать со мнгоми форумчанами. Формат BIFF считаю устаревшим, и не уверен что его следует развивать библиотеке. В 2007 микрософт формально его похоронил перейдя на xml. В исходнках harbour есть что то типа xlsxml. Пишу с мобильного и точно не помню. Уверен xml более перспективен как экспорт данных, т. к. микрософт теперь его использует в основе движка. И вот в xml готов поучаствовать. Тестовые примеры выгрузки в Excel из harbour у меня идут отлично и по скорости и по оформлению. Прикрутить класс к Tsbrowse, например как :Excel3() считаю вопросом времени (свободного времени)

Andrey: Haz пишет: Но это не мешает ее туда добавить самостоятельно. [pre2]* ============================================================================ * FUNCTION BiffRec() Version 9.0 Nov/01/2009 * Excel BIFF record wrappers (Biff2) * ============================================================================ Function BiffRec( nOpCode, uData, nRow, nCol, lBorder, nAlign, nPic, nFont ) ....[/pre2] Блин, да это только для шаманов ....

Haz: Andrey пишет: Блин, да это только для шаманов Шаманом себя не считаю, но проблем не вижу. В понед гляну с компа. И прочитай мое последнее сообщение по поводу BIFF

Andrey: Haz пишет: И вот в xml готов поучаствовать. Тестовые примеры выгрузки в Excel из harbour у меня идут отлично и по скорости и по оформлению. Прикрутить класс к Tsbrowse, например как :Excel3() считаю вопросом времени (свободного времени) Очень хочется иметь этот новый класс в исходниках. Я так же готов поучаствовать в тестировании и настройке этого класса, по мере своей квалификации.

Vlad04: Haz Тестовые примеры выгрузки в Excel из harbour у меня идут отлично Это не OLE и Excel 2007 и выше? Тогда может в начале с примерами ознакомить ? Выгрузка в Tsbrows частный случай.

Vlad04: из Tsbrows

Haz: Vlad04 пишет: Это не OLE и Excel 2007 и выше? Тогда может в начале с примерами ознакомить ? Выгрузка в Tsbrows частный случай. Это не OLE, до 2007 микрософт отстегивал стороннему разработчику за использование xml позже написал свою компоненту. Поддержка xml была и до 2007. Примеры все в исходниках харбура. Знакомся на здоровье, все в свободном доступе. Ссылки на исходники есть в разделе Harbour на этом форуме

Dima: Andrey пишет: Я так же готов поучаствовать в тестировании и настройке этого класса, по мере своей квалификации. +1 Потестю на древнем Excel 2003

Haz: Dima пишет: Потестю на древнем Excel 2003 Так ты уже потестил)

Dima: Haz пишет: Так ты уже потестил) Это было не с Минигуи

Haz: Andrey пишет: Блин, да это только для шаманов .... Глянул с компа. Какие шаманы ??? примитив в 4 строки кода Чтоб ::Excel2 был зависим от высоты строк бровса нужно всего - то 1) перейти по ссылке которую я давал и найти там установку высоты строки по умолчанию увидеть там код команды, ее длину и прочитать про размерность единицы высоты [pre2] DEFHEIGHT.DEF_ROWHEIGHT_RECORD DEFHEIGHT\opcode = 37 DEFHEIGHT\length = 2 [/pre2] 2) Открыть исходник BiffRec() и после команды 36 ( ну чтоб попорядку ) вставить нашу 37 [pre2] Case nOpCode == 37 // DEF_ROWHEIGHT_RECORD record Default nCol := nRow cHead := I2Bin( 37 ) + ; // opCode I2Bin( 2 ) // body length cBody := I2BIN( uData ) [/pre2] 3) Открыть исходник Excel2() и задать высоту строк по умолчанию по высоте строки бровса ( про размерность по ссылке конечно прочитали - поэтому *20, но мне точнее показалось на 15 ) [pre2] FWrite( nHandle, BiffRec( 66, GetACP() ) ) FWrite( nHandle, BiffRec( 12 ) ) FWrite( nHandle, BiffRec( 13 ) ) FWrite( nHandle, BiffRec( 37 , ::nHeightCell * 20) ) [/pre2] PS Кто тут увидел шаманов



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