On-line: tnsr2, гостей 3. Всего: 4 [подробнее..]
АвторСообщение
Vlad04
постоянный участник


Пост N: 420
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 19.12.13 18:16. Заголовок: TsBrowse в Минигуи (продолжение)


TsBrows определяется в виде строки ПАРМЕТРОВ объекта и их значений
К примеру

 цитата:

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


Здесь я собрал параметры из разных tBrows
Можно или нет и какие парметры заменить
выражением ( и каким) ?
oBrw2:....
oBrw2:....



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


Haz
администратор




Пост N: 1200
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 22.02.18 14:35. Заголовок: Andrey пишет: Можно..


Andrey пишет:

 цитата:
Можно как нибудь убрать/починить этот формат для METHOD Excel2() ?


или полностью переделывать , то есть все предустановки выносить из Excel2() и назначать до экспорта ( у меня для этого служит XMLSetDefault() и переопределения перед экспортом) или навсегда вшивать этот ( никому не нужный формат ) в исходник Excel2(). Сам формат можно подсмотреть у меня в выгрузке.


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




Пост N: 5737
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.02.18 15:45. Заголовок: Haz пишет: или навс..


Haz пишет:

 цитата:
или навсегда вшивать этот ( никому не нужный формат ) в исходник Excel2().


Хотя бы так или сделать определение этого формата до вызова Excel2(), как ты сделал у себя:
   XmlSetDefault( oBrw ) 
// Можно значения по умолчанию переопределять
oBrw:aColumns[6]:XML_Format := "00\:00\:00"
oBrw:aColumns[9]:XML_Format := "0.00_ ;[Red]\-0.00\ "

Brw2Xml(oBrw, "TEST.XML", .T.,, aTitle) // экспорт в Excel
XmlReSetDefault( oBrw )

А лучше наверное в исходнике дать этот формат и небольшое описание, типа для назначения своих форматов.

Можно название твоей функции поменять на Excel3Xml() ?

И ещё вопрос:
      For nCol := 1 To Len( oBrw:aColumns ) 
uData := Eval( oBrw:aColumns[ nCol ]:bData )
cType := ValType( uData )

можно добавить сюда сразу:
 
nBackColor := oBrw:aColumns[ nCol ]:nClrBack
oStyle:bgColor( '#' + NToC(nBackColor, 16) ) // Excel > 2003

Или так не пойдёт, потому что цвета Tsbrowsa состоят из блок-кода ?


Спасибо: 0 
Профиль
Haz
администратор




Пост N: 1201
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 22.02.18 17:51. Заголовок: Andrey пишет: сдела..


Andrey пишет:

 цитата:
сделать определение этого формата до вызова Excel2(), как ты сделал у себя:


Это потребует переделки метода, лучше выносить наружу, т.к форматов в Excel гораздо больше чем в харбур и могут они быть любые

Andrey пишет:

 цитата:
Можно название твоей функции поменять на Excel3Xml()


Называй как хочешь )

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




Пост N: 1767
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.02.18 18:18. Заголовок: Andrey пишет Или так..


Andrey пишет
 цитата:
Или так не пойдёт, потому что цвета Tsbrowsa состоят из блок-кода ?


Сделай обработку блока кода
 
nBackColor := oBrw:aColumns[ nCol ]:nClrBack
If Valtype( nBackColor ) == "B"
Eval( nBackColor, oBrw:nAt, nCol, oBrw )
EndIf

oStyle:bgColor( '#' + NToC(nBackColor, 16) ) // Excel > 2003


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




Пост N: 1768
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.02.18 18:22. Заголовок: PS сори, пропустил п..


PS
сори, пропустил пока набирал (маленький экран)
nBackColor := Eval( nBackColor, oBrw:nAt, nCol, oBrw )


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




Пост N: 5738
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.02.18 19:11. Заголовок: SergKis пишет: Сдел..


SergKis пишет:

 цитата:
Сделай обработку блока кода



Сделал. Цвета не появляются ! Хотя коды цвета правильные, совпадают с CLR_HGRAY
Вот код:
 
For nCol := 1 To Len( oBrw:aColumns )
uData := Eval( oBrw:aColumns[ nCol ]:bData )
cType := ValType( uData )

nBackColor := oBrw:aColumns[ nCol ]:nClrBack
If Valtype( nBackColor ) == "B"
nBackColor := Eval( nBackColor, oBrw:nAt, nCol, oBrw )
EndIf
//? nLine, nCol, nBackColor, "== 12632256", CLR_HGRAY
oStyle:bgColor( '#' + NToC(nBackColor, 16) )

switch cType

Наверное ещё что-то нужно сделать, чтобы применить цвет к этой ячейке ?


Спасибо: 0 
Профиль
Haz
администратор




Пост N: 1202
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 22.02.18 20:10. Заголовок: Andrey пишет: Навер..


Andrey пишет:

 цитата:
Наверное ещё что-то нужно сделать, чтобы применить цвет к этой ячейке ?


Стиль нужно определить заранее. С блоками скорее в два прохода придётся. Сначала анализируем весь бровс на возможные форматы по цвету, шрифту и пр. На основе анализа формируем все эти форматы, а потом, при выводе бровса в зависимости от результата блока выбираем нужный формат.
Excel читает XML построчно. К момену вывода ячейки формат должен быть определен
Из примера куска кода не ясно где он расположен в тексте
Ps почитал выше, тут не сработает. Тут идёт вывод и форматы уже определены ранее.
Андрей, ты зациклен на воспроизводстве внешнего вида бровса. Либо заранее опрелить цвет которам ты будешь рисовать. Либо взять цвет из каждой ячейки при первомпроходе, сформитовать форматы запомнив координаты. А при выводе брать по координатам.
Я же сторонник того, что копия бровса в Excel никому не нужна. Достаточно вывести данные в читаемом и оформленном виде, для маньков путь анализа бровса.
Другим способом можно назвать условное ворматирование Excel, но там тоже все не само появится, и нужно как минимум знать как написать условный формат.

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




Пост N: 5739
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.02.18 21:01. Заголовок: Haz пишет: Из приме..


Haz пишет:

 цитата:
Из примера куска кода не ясно где он расположен в тексте


Вот код:
   While  nLine <= nLen 
oSheet:cellHeight( nRow, 1, oBrw:nHeightCell / 1.3 )

For nCol := 1 To Len( oBrw:aColumns )
uData := Eval( oBrw:aColumns[ nCol ]:bData )
cType := ValType( uData )

nBackColor := oBrw:aColumns[ nCol ]:nClrBack
If Valtype( nBackColor ) == "B"
nBackColor := Eval( nBackColor, oBrw:nAt, nCol, oBrw )
EndIf
//? nLine, nCol, nBackColor, "== 12632256"
oStyle:bgColor( '#' + NToC(nBackColor, 16) )

switch cType

Haz пишет:

 цитата:
Я же сторонник того, что копия бровса в Excel никому не нужна. Достаточно вывести данные в читаемом и оформленном виде, для маньков путь анализа бровса.


Согласен, просто хотелось бы иметь просто пример как это делается (оформление цветами).
В качестве примера и сделал меню для повтора цветов:
 
MENUITEM 'color table white ' ACTION nTsbColor := 1 FONT Font1
MENUITEM 'color table gray ' ACTION nTsbColor := 2 FONT Font1
MENUITEM 'color of the table "ruler"' ACTION nTsbColor := 3 FONT Font1
MENUITEM 'color of the table "columns"' ACTION nTsbColor := 4 FONT Font1
MENUITEM 'color of the table "chess"' ACTION nTsbColor := 5 FONT Font1

Вот я решил сделать цвета в xml и не могу с ходу. Для этого нужно разбираться.
А что за пример в котором не показано как можно сделать !
И не маньяк я, а хочу иметь в качестве примера - как нужно правильно делать, а не методом тыка работает/не работает.
Т.е. отдельно написать: // секция для цветового оформления таблицы.
Шапку, суперхидер и подвал как заполнять цветом уже понятно, осталось только саму таблицу покрасить.

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 1203
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 22.02.18 21:14. Заголовок: Andrey пишет: Вот я..


Andrey пишет:

 цитата:
Вот я решил сделать цвета в xml и не могу с ходу. Для этого нужно разбираться.


Определить стиль перед выводом заранее. При выводе указать каким стилем. Ты же пытаешься во время вывода ячеек бровса сунуть цвет непонятно какому стилю. Это как раскраски, хочу фигурку закрасить желтым, беру жёлтый фломастер каторый уже заранее преготовлен. Я же не просто так говорил про варианты :
1 выбирать заранее определенные стили - условные цвета вывода
2 попытаться при прогоне по бровсу сформировать все комбинации цвет, шрифт, рамка, выравнивание. Опрелить их как стили с привязкой к координатам ячейки и при выводе бровса брать эти стили
3 тоже что и 2 но использовать условное форматирование.
Мне не сложно еще раз повторить, что Excel читает XML сверху вниз и слева направо. То есть сначала раскладываем фломастеры и их уже не меняем. Потом рисуем тем что разложили. Реализация динамической раскраски начинается с вопроса, а какие фломастеры потребуются.

Ну уж если совсем по простому
То обрати внимание что цвет шапки и подвала задаётся в соответствуюших местах кода под коментарием ОПРЕДЕЛЯЕМ СТИЛИ ШАПКИ и ОПРЕДЕЛЯЕМ СТИЛИ ПОДВАЛА.
Там же есть и комментарий ОПРЕДЕЛЯЕМ СТИЛИ КОЛОНОК, вот туда свой цвет и пихай. И учти каждый стиль одного цвета, нужен другой цвет - определяй новый стиль.


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




Пост N: 5742
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.03.18 13:34. Заголовок: Haz пишет: На самом..


Haz пишет:

 цитата:
На самом деле если бы была нормальная спецификация пл BIFF2(4) , то выгрузка Excel2() довольно легко дополняется. Видел только англоязычную где то, да и с примерами по BIFF очень скудно.



Пример MiniGUI\SAMPLES\Advanced\Tsb_Brw2xml из последней версии МиниГуии - классный получился !
Спасибо Haz !
Экспорт для Excel2() для нескольких строк - то что нужно ! Даже наверное шрифты можно не уменьшать.
Но да ладно, пускай остаются в качестве примера, как можно делать.
Единственно что не хватает в экспорте для Excel2() рамок в ячейках таблицы.
В шапке и подвале таблицы рамки есть, а на ячейках нет !
Можно это как то подправить ?

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 1204
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 02.03.18 10:58. Заголовок: Andrey пишет: Единс..


Andrey пишет:

 цитата:
Единственно что не хватает в экспорте для Excel2() рамок в ячейках таблицы.
В шапке и подвале таблицы рамки есть, а на ячейках нет !
Можно это как то подправить ?



А самому хотя бы посмотреть что мешает ?
Function BiffRec( nOpCode, uData, nRow, nCol, lBorder, nAlign, nPic, nFont )


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




Пост N: 5774
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.03.18 22:36. Заголовок: Прикрутил к этому же..


Прикрутил к этому же проекту ещё один экспорт, через ОЛЮ !
1) Для одной строки всё прекрасно работает, для многострочных строк нет !
2) Как задать титул перед шапкой определённым фонтом (также, как для нового oBrw:Excel2() ) ?
Как бы исправить исходники ?
Проект вот тут - https://cloud.mail.ru/public/JNeH/xGmMBvmVD

Почему не работает в методе oBrw:ExcelOle( cXlsFile, ....) следующее назначение ?
   lSave := .T. 
cPath := GetStartUpFolder() + "\" // путь записи файла
cMaska := "A14_ДолгСальдо" // шаблон файла
cXlsFile := cPath + cMaska + "_" + DTOC( DATE() ) + "_"
cXlsFile += SUBSTR( CharRepl( ":", TIME(), "-" ), 1, 5 ) + ".xls"

Обрезает до A14_ДОЛГСАЛЬДО_12.03.2018_23-18


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




Пост N: 5777
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.03.18 14:10. Заголовок: Andrey пишет: Почем..


Andrey пишет:

 цитата:
Почему не работает в методе oBrw:ExcelOle( cXlsFile, ....) следующее назначение ?

lSave := .T.
cPath := GetStartUpFolder() + "\" // путь записи файла
cMaska := "A14_ДолгСальдо" // шаблон файла
cXlsFile := cPath + cMaska + "_" + DTOC( DATE() ) + "_"
cXlsFile += SUBSTR( CharRepl( ":", TIME(), "-" ), 1, 5 ) + ".xls"

Обрезает до A14_ДОЛГСАЛЬДО_12.03.2018_23-18



Убрал в модуле h_tbrowse.prg строку 4809:
   If ! Empty( cXlsFile ) 
//cXlsFile := AllTrim( StrTran( Upper( cXlsFile ), ".XLS" ) ) поставил //
EndIf

Перестало обрезать ! И убрался только верхний регистр ! То что нужно !
Григорий, убери пожалуйста в исходниках эту строку. Или замени её как нужно, для следующих версий МиниГуи !
Заранее спасибо !


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




Пост N: 5782
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.03.18 19:36. Заголовок: oBrw:ExcelOle( cX..


   oBrw:ExcelOle( cXlsFile, lActivate, hProgress, cTitle, hFont, lSave, bExtern, aColSel, bPrintRow ) 
cXlsFile // имя файла
lActivate := .T. // открыть Excel
hProgress := nil // хенд для ProgressBar
lSave := .T. // сохранить файл
bExtern := nil // ?
aColSel := nil // ?
bPrintRow := nil // ?

Подскажите пожалуйста, что за параметры (за что отвечают) ?

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




Пост N: 5783
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.03.18 10:36. Заголовок: SergKis пишет: Пред..


SergKis пишет:

 цитата:
Предлагаю новый метод для tsb, для растяжки нескольких колонок до размера тсб по ширине.
.....
Использование при ширине tsb > ширины колонок
:AdjColumns() - все колонки
:AdjColumns({"NAME", "SUMMA"}) - указанные колонки по cName
:AdjColumns({3, 4, 5}) - указанные колонки по номеру



А нормально будет работать ?
Я при включении предыдущего метода на примере Tsb_Config.prg
   oBrw:nAdjColumn  := 2    // stretch column 2 to fill the voids in the right Tbrowse

имел хороший баг при изменении ширины окна ! Григорий помог его решить через:
   // repartition column 2 (1 + 1 -SELECTOR) - otherwise buggy  
oBrw:bInit := {|| oBrw:SetColSize( 2, nWidthFirstColumn )}
....
//////////////////////////////////////////////////////////////////
FUNCTION ResizeBrowse()
....
Eval(oBrw:bInit) // read the second column of the table
...


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




Пост N: 1787
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.03.18 10:52. Заголовок: Andrey пишет А норма..


Andrey пишет
 цитата:
А нормально будет работать ?
Я при включении предыдущего метода на примере Tsb_Config.prg
oBrw:nAdjColumn := 2


SergKis пишет
 цитата:
Использование при ширине tsb > ширины колонок


т.е. ты вызываешь метод так (др. вариантов не предполагал пока)
 
:AdjColumns({3, 4, 5}) // или :AdjColumns()

END TBROWSE

oRpt:SetNoHoles()

возможно при увеличении окна и размера тсб, тоже сработает, если вызвать.
Можешь пробовать libу кинул

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




Пост N: 5784
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.03.18 18:04. Заголовок: SergKis пишет: Може..


SergKis пишет:

 цитата:
Можешь пробовать libу кинул



Классно ! Работает !
Но, если использовать
 oBrw:HideColumns( {10} ,.t.)   // скрыть колонки 

То последняя колонка становится слишком широкой !
Т.е. наверное не учитываются скрытые колонки ?
А так очень понравился этот метод !

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




Пост N: 1794
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.03.18 18:55. Заголовок: Andrey пишет То посл..


Andrey пишет
 цитата:
То последняя колонка становится слишком широкой !


Есть такая бяка. Надо правки делать
 
METHOD AdjColumns( aColumns, nDelta ) CLASS TSBrowse
...
LOCAL nVisible := 0, aVisible := {}
...
AEval( ::aColumns, {|oc| nVisible += iif( oc:lVisible, oc:nWidth, 0 ) })
AEval( aCol , {|nc| iif( obr:aColumns[ nc ]:lVisible, AAdd(aVisible, nc), Nil ) })

k := Len(aVisible)

...
For i := 1 To k
c := aVisible[ i ]

...

вроде работает, погоняй еще, либу кинул

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




Пост N: 5785
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.03.18 19:31. Заголовок: SergKis пишет: врод..


SergKis пишет:

 цитата:
вроде работает, погоняй еще, либу кинул


Погонял... Не работает...
Свой пример кинул.

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




Пост N: 1795
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.03.18 20:01. Заголовок: Andrey пишет Погонял..


Andrey пишет
 цитата:
Погонял... Не работает...


SergKis пишет
 цитата:
:AdjColumns({3, 4, 5}) // или :AdjColumns()

END TBROWSE


а у тебя
 
:lLockFreeze := .T. // избегать прорисовки курсора на замороженных столбцах

:AdjColumns() // растяжка колонок до размера тсб по ширине

...
:GetColumn("Name_8"):lEdit := .T.

:HideColumns( {10} ,.t.) // скрыть колонки

TsbColor( oBrw ) // задание цветов таблицы
...
т.е. сначала разместили по ширине колонки, потом скрыли. ЗАМЕЧАТЕЛЬНО
Убрал в самый низ
...
:AdjColumns() // растяжка колонок до размера тсб по ширине

END WITH // oBrw объект снят
сработало как надо.



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