On-line: SergKis, гостей 1. Всего: 2 [подробнее..]
АвторСообщение
модератор




Пост N: 699
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 29.01.08 13:59. Заголовок: Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение)


Начало темы находится здесь, а теперь

АНОНС * АНОНС * АНОНС * АНОНС * АНОНС

Готовится к опубликованию новая сборка №48, которая выйдет в конце недели.
Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне

Кратко, что нового:

- исправление обнаруженных ошибок и неточностей кода;
- новый класс HEADERIMAGE для Grid и Browse;
- свойство Address в Hyperlink может теперь открывать папку или файл на диске;
- добавлен NOTABSTOP класс для Browse;
- поддержка пользовательских компонентов (заимствована из оффициального релиза);
- расширения и исправления в библиотеках TsBrowse и PropGrid;
- обновлены сборки Харбор и HMGS-IDE;
- новые и обновленные старые примеры (как обычно ).




--
Улыбайся - завтра будет хуже!
Спасибо: 5 
ПрофильЦитата Ответить
Ответов - 137 , стр: 1 2 3 4 5 6 7 All [только новые]


постоянный участник




Пост N: 6644
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.05.20 14:43. Заголовок: И вот эту ошибку тож..


И вот эту ошибку тоже бы убрать:
Error BASE/2017 Argument error: AEVAL Args: [1] = U [2] = B {|| ... }
--------------------------------- Stack Trace ---------------------------------
Called from AEVAL(0)
Called from MAIN(53) in module: demo5.prg


Делаю так:
aHead := NIL 
?v aHead


Пускай NIL возвращает, а то прога валится.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 3160
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.05.20 14:57. Заголовок: Можно так поправить ..


Можно так поправить i_ini.ch
 
#command ?a [<arr>] => If( <arr> == NIL, , aEval( <arr>, { |xv, ne| _LogFile( (ne==1), ne, xv ), _LogFile() } ) )
#command ?v [<arr>] => If( <arr> == NIL, , aEval( <arr>, { |xv, ne| _LogFile( (ne==1), ne, iif( Valtype(xv) == "A", hb_valtoexp(xv), xv ) ), _LogFile() } ) )


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




Пост N: 6645
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.05.20 15:13. Заголовок: SergKis пишет: Можн..


SergKis пишет:

 цитата:
Можно так поправить i_ini.ch


Поправил, теперь ошибки нет и результата в _MsgLog.txt нет.
Будешь гадать почему нет
    ?v aHead


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 3161
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.05.20 15:34. Заголовок: Andrey пишет теперь ..


Andrey пишет
 цитата:
теперь ошибки нет и результата в _MsgLog.txt нет.


Так применяй правильно
? "aSize =", aSize
?v aSize
Ошибки нет и занятого места тоже в лог файле
aSize = NIL

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




Пост N: 6646
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.05.20 16:13. Заголовок: SergKis пишет: Так ..


SergKis пишет:

 цитата:
Так применяй правильно


Понял !

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 3164
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 04.05.20 11:08. Заголовок: gfilatov2002 Может ..


gfilatov2002
Может чуток подправим ?
 
METHOD LoadFields( lEditable, aColSel, cAlsSel, aNameSel, aHeadSel ) CLASS TSBrowse
...
Local cTmp, cHead, hFontH
...
hFont := iif( ::hFont != Nil, ::hFont, 0 )
hFontH := iif( ::hFontHead != Nil, ::hFontHead, ::hFont )

If cType == "C"
...
nSize := Max( GetTextWidth( 0, Replicate( "B", Len( cHeading )+1 ), hFontH ), nSize )
nSize += iif( ! Empty( cOrder ), 14, 0 )

ElseIf ValType( ::aColSizes ) == "A" .and. ! Empty( ::aColSizes ) .and. n <= Len( ::aColSizes )
...


Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1691
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 04.05.20 12:27. Заголовок: SergKis пишет: чуто..


SergKis пишет:

 цитата:
чуток подправим


Поправил, конечно.
Благодарю за помощь

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 3167
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 04.05.20 21:09. Заголовок: gfilatov2002 Предло..


gfilatov2002
Предложение по ENUMERATOR для нумерации только видимых колонок.
:lEnum := .F. меняет цвет, align. Словом не подошел.
Простое решение при :lEnum := .T.
 
METHOD DrawHeaders( lFooters ) CLASS TSBrowse
...
Local nDeltaLen, uTmp
...
IF ::lDrawSpecHd
...
if ::lEnum
cHeading := hb_ntos( nJ - iif( ::lSelector, 1, 0 ) )
IF ! empty( oColumn:cSpcHeading )
uTmp := iif( Valtype( oColumn:cSpcHeading ) == "B", Eval( oColumn:cSpcHeading, nJ, Self ), oColumn:cSpcHeading )
IF HB_ISNUMERIC ( uTmp ) ; cHeading := hb_ntos( uTmp )
ELSEIF HB_ISCHAR( uTmp ) ; cHeading := uTmp
ENDIF
ENDIF

if nI == nBegin .and. ::lSelector .or. nI == nLastCol
cHeading := ""
endif
else
...

Применение
...
mySetTsb( oBrw )
myColorTsb( oBrw ) // цвета на таблицу
myColorTsbElect( oBrw ) // цвета избранные
myDbfDelColTsb( oBrw )
myEnumTsb( oBrw )
mySet2Tsb( oBrw )

:bOnEscape := {|ob| DoMethod(ob:cParentWnd, "Release") } // выход по ESC

END TBROWSE ON END {|ob| ob:SetNoHoles(), ob:SetFocus() }
...
STATIC FUNCTION myEnumTsb( oBrw )
LOCAL oCol, nCnt := 0

FOR EACH oCol IN oBrw:aColumns
oCol:cSpcHeading := NIL
IF oCol:lVisible
oCol:cSpcHeading := hb_ntos( ++nCnt )
ENDIF
NEXT

RETURN NIL
...

Т.е. если убрать
myDbfDelColTsb( oBrw )
// myEnumTsb( oBrw )
mySet2Tsb( oBrw )
будет первоначальный алгоритм
При отработке ф-ии будет нумерация только видимых колонок
У Андрея есть пример, если что ...

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1692
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 04.05.20 21:30. Заголовок: SergKis пишет: Пред..


SergKis пишет:

 цитата:
Предложение по ENUMERATOR для нумерации только видимых колонок.


Принято, конечно.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 3168
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.05.20 12:35. Заголовок: gfilatov2002 Сделал..


gfilatov2002
Сделал изменения в TsBrowse (изменения в прилагаемом файле h_tbrowse.prg) Скрытый текст

Суть изменений получить все данные, которые получаются в :DrawLine() и :DrawSelect() для передачи
в ф-ю TSDrawCell(...) рисования строки. Не стал сокращать список параметров для класса TSBcell оставил все параметры.
Применение (в примерах прилагаются, нажатие кнопки F8 формирует _MsgLog.txt) такое
 
STATIC FUNCTION my0( oBrw )
LOCAL nAt, nCol, oCol, oCel
WITH OBJECT oBrw
:GoTop()
:DrawSelect()
? "-", :lDrawLine, :nRowPos, :aColumns[2]:oCell, :aDrawCols
:lDrawLine := .F.
:GoTop()
:DrawSelect()
? "#", :lDrawLine, :nRowPos, :aColumns[2]:oCell, :aDrawCols
:DrawLine()

FOR nAt := 1 TO :nLen
? nAt, :aColumns[2]:oCell
FOR nCol := 1 TO :nColCount()
oCol := :aColumns[ nCol ]
oCel := oCol:oCell
? ".", oCol:lVisible, nCol, oCel:nStartCol, oCol:cName, oCel:nAlign, oCel:nClrFore, oCel:nClrBack, oCel:uData
NEXT
:GoDown()
NEXT
?
:lDrawLine := .T.
:Reset()
END WITH

RETURN Nil

Запуск
demo5.exe // работа с массивом
demo5.exe * // работа с emploee.dbf
demo7.exe // работа с AbonItogo.dbf (файл и раскраска от Андрея)

Должно облегчить работу с Excel, наверное
PS
В h_tbrowse.prg есть изменения связанные с отступами слева, справа, которые мы обсуждали с Игорем в теме "Курсы ЦБ на дату"
это prg моей версии. В примере demo5 есть установка :nCellMarginLR := 1
Примеры и h_tbrowse.prg тут https://TransFiles.ru/eicsv

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1549
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 06.05.20 12:41. Заголовок: Эти изменения отключ..


Эти изменения отключают или включают прорисовку?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 3169
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.05.20 12:44. Заголовок: Отключают, т.е. при ..


Отключают, т.е. при :lDrawLine == .F. нет вывода на экран

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 3170
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.05.20 12:48. Заголовок: PS :aDrawCols - это ..


PS
:aDrawCols - это массив номеров колонок, которые на рисовались окне, формируется массив в :DrawLine()

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 3171
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.05.20 12:50. Заголовок: PSформируется массив..


PS
 цитата:
формируется массив в :DrawLine()


Пальцы на автомате, набрали, надо не :DrawLine(), а DrawSelect()

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1550
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 06.05.20 12:56. Заголовок: Если практическое ис..


Если практическое использование - пробежаться по бровсу не тратя время на экранный вывод, то в случае с dbf можно проще
 
nRec := (oBrw:cAlias)->(RecNo())
while !(oBrw:cAlias)->( Eof())
for n := 1 To Len( oBrw:aColumns )
Eval( oBrw:aColumns[n]:bData)
end
(oBrw:cAlias)->(dbSkip(1))
end
(oBrw:cAlias)->(dbGoTo(nRec))


пробежимся по всем строкам и столбцам и прописовки не будет

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 3172
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.05.20 13:13. Заголовок: Haz пишет пробежимся..


Haz пишет
 цитата:
пробежимся по всем строкам и столбцам и прописовки не будет


В таком варианте
1. Eval( oBrw:aColumns[n]:bData) не учитывает oBrw:aColumns[n]:bValue и особенно :bDecode, использую широко, т.е. надо Brw:GetValue( n ) или oBrw:bDataEval(oCol ,[xVal], nCol)
2. нет цветов фона и текста в такой реализации (получаются из блоков кода от значения данных в cell), для Excel это может быть важно
3. для массива и dbf надо писать разный код
Можно, конечно писать, повторив часть кода из метода :DrawLine(), как сейчас и делали.
В моем предложении все данные на ячейку в TSBcell объкте по адресу oBrw:aColumns[ n ]:oCell, т.е. надо используем, нет то как раньше

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1551
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 06.05.20 13:51. Заголовок: SergKis пишет: В мо..


SergKis пишет:

 цитата:
В моем предложении все данные на ячейку в TSBcell объкте по адресу oBrw:aColumns[ n ]:oCell, т.е. надо используем, нет то как раньше


Сергей , да я не против твоей доработки. В простых задачах она пригодиться. Я же в проектах не смогу ее использовать по следующим причинам.
1. Редко когда использую простой бровс, как правило есть несколько подчиненных обновляемых по bChange (есть и bOnDraw ) и тупить прогон по бровсу будет не из-за прорисовки
Можно отключать bChange при прогоне, а потом включать , но зачем ( см п 3 )
2. Выгрузку в Excel через OLE не делаю совсем т.к. много отчетов объемных более 1000 строк и 50 и более колонок и через олю на отчеты тратится неприемлемое время
Все отчеты только через XMLXLS . по скорости 20 минут это оля и 15 секунд xml
Цвета и текст задаю заранее для xml
3. Как уже писал ранее ,при помощи Андрею в его TSB_экспортах - считаю такие экспорты (средствами бровса) красивыми, но бесперспективными с точки зрения временных затрат
Бровс умеет работать только с текущей записью , зачем мне тормозной перебор если я могу взять весь массив данных сразу и делать с ним что хочу (aEval, dbEval, SQLExecute() и пр) .


В целом , для демонстрашки экспорта доработка хорошая, практически не знаю зачем

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1693
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 06.05.20 14:17. Заголовок: SergKis пишет: Сдел..


SergKis пишет:

 цитата:
Сделал изменения в TsBrowse (изменения в прилагаемом файле h_tbrowse.prg)


Обязательно проанализирую и включу эти изменения в новую сборку (с учетом Вашего мнения и мнения Игоря, как главных разработчиков дополнений к TSBrowse).
Благодарю за Вашу помощь

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 3173
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.05.20 14:19. Заголовок: Haz пишет практическ..


Haz пишет
 цитата:
практически не знаю зачем


Согласен, много случаев, особенно старых кодов, где это не применить, да и не нужно.
А вывести в Excel таблицу (широкую, но простую), с цветными колонками, для которой печати нет (морока организации листов в разрезе горизонтали) есть передача в Excel и если захотят, будут распечатки делать из него. Условие сохранение цветности.
С применением hbxmlxls.lib чтобы передать цветность это тоже пригодится.

 цитата:
Бровс умеет работать только с текущей записью , зачем мне тормозной перебор


Можно не перебирать, а выполнить :DrawLine( , .F. ) и для тек. записи будет в колонках oCol:oCell заполнен

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1552
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 06.05.20 14:32. Заголовок: SergKis пишет: Можн..


SergKis пишет:

 цитата:
Можно не перебирать, а выполнить :DrawLine( , .F. ) и для тек. записи будет в колонках oCol:oCell заполнен



Как дальнейшее развитие oCell имеет смысл

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 137 , стр: 1 2 3 4 5 6 7 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 328
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет