Автор | Сообщение |
gfilatov
|
| модератор
|
Пост N: 699
Зарегистрирован: 25.05.05
|
|
Отправлено: 29.01.08 13:59. Заголовок: Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение)
Начало темы находится здесь, а теперь АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Готовится к опубликованию новая сборка №48, которая выйдет в конце недели. Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне Кратко, что нового: - исправление обнаруженных ошибок и неточностей кода; - новый класс HEADERIMAGE для Grid и Browse; - свойство Address в Hyperlink может теперь открывать папку или файл на диске; - добавлен NOTABSTOP класс для Browse; - поддержка пользовательских компонентов (заимствована из оффициального релиза); - расширения и исправления в библиотеках TsBrowse и PropGrid; - обновлены сборки Харбор и HMGS-IDE; - новые и обновленные старые примеры (как обычно ).
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
SergKis
|
| постоянный участник
|
Пост N: 4220
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.02.23 16:37. Заголовок: gfilatov2002 Неболь..
gfilatov2002 Небольшая правка, чтобы не растягивалась колонка SELECTOR METHOD AdjColumns( aColumns, nDelta ) CLASS TSBrowse ... FOR i := 1 TO k c := aVisible[ i ] IF i == 1 .and. ::lSelector LOOP ELSEIF i == k ::aColumns[ c ]:nWidth += ( w - s ) ELSE s += n ::aColumns[ c ]:nWidth += n ENDIF NEXT ...
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 2099
Зарегистрирован: 11.02.10
|
|
Отправлено: 16.02.23 17:18. Заголовок: SergKis пишет: Небо..
SergKis пишет: цитата: | Небольшая правка, чтобы не растягивалась колонка SELECTOR |
| OK Для метода :GotoRec() добавил такую правку: ELSEIF ::lIsArr hb_default( @nRowPos, ::nRowPos ) IF nRec > ::nLen nRec := ::nLen ENDIF IF nRec == ::nLen ::GoBottom() ELSEIF nRec == 1 ::GoTop() ELSE ::GoPos( nRec ) ::nAt := nRec ::nRowPos := iif( nRowPos > ::nRowCount(), ::nRowCount(), nRowPos ) ::lHitTop := ::lHitBottom := .F. ENDIF ::Refresh( ::nRowCount() < ::nLen ) IF ::bChange != NIL Eval( ::bChange, Self, 0 ) ENDIF SysRefresh() ENDIF ...
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 4221
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.02.23 17:24. Заголовок: Haz Сделал FOR..
Haz Сделал FOR nCol := 1 TO Len( ::aSuperHead ) nVar := 0 //nVar := iif( lSelector, 1, 0 ) попал в др. место ниже cTmp := "#0" ; nTmp := 0 IF "." $ uData //IF ( nTmp := At( ".", uData ) ) > 0 cTmp := "#,##0.00" // cTmp := Replicate( "#", nTmp - 2 ) + '0,' + Replicate( "0", Len( uData ) - nTmp ) ENDIF Выделенное красным валит с сообщением цитата: | Error WINOLE/1006 Unable to set the NumberFormat property of the Range class (0x800A03EC): Microsoft Excel (DOS Error -2147352567) Args: [1] = C #0.00 Called from TSBROWSE:EXCELOLE(6639) ... |
|
|
|
|
Haz
|
| |
Пост N: 1882
Зарегистрирован: 20.02.11
|
|
Отправлено: 16.02.23 18:15. Заголовок: SergKis пишет: Выде..
SergKis пишет: цитата: | Выделенное красным валит с сообщением |
| Сергей , валит скорее всего ниже красного, на этом oSheet:Cells( nLine, nCol ):NumberFormat := cTmp Посмотри что в шаблоне . Сообщение об ошибке говорит Error WINOLE/1006 Unable to set the NumberFormat property of the Range class (0x800A03EC): Microsoft Excel (DOS Error -2147352567) Args: [1] = C #0.00 точно такой код как ниже ? Не должно быть ошибки , ошибка говорит что cTmp = "#0.00" IF "." $ uData cTmp := "#,##0.00" ENDIF
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 4222
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.02.23 18:40. Заголовок: Haz пишет валит скор..
Haz пишет цитата: | валит скорее всего ниже красного, на этом oSheet:Cells( nLine, nCol ):NumberFormat := cTmp |
| Это понятно, указывает номер строки в тексте ошибки, я говорил, что пытается стать формат "#0" или "#,##0.00" оба формата допустимы, как и "#0.00", с xml эти форматы проходят. Может в ячейке какая фигня и на нее ставится NumberFormat ? Для меня темный лес По поводу Selector, он удаляется в начале работы потом восстанавливается
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 7296
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.02.23 18:45. Заголовок: Haz пишет: Проблема..
Haz пишет: цитата: | Проблема не в примере , проблема в h_tbrowse.prg. Достаточно в demo.hbp добавить строку |
| Да точно ! Проблема в том что не указана библиотека ! Достаточно в demo.hbp добавить библиотеку # paths to the main and extension *.Lib -lminigui -ltsbrowse h_tbrowse.prg добавлять в проект не надо ! А можно как то проверять что нет оли для SBrowse() ? А то проект нормально собираются а функции SBrowse не работают.
|
|
|
Dima
|
| |
Пост N: 7745
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.02.23 18:53. Заголовок: Haz пишет: IF "..
Haz пишет: цитата: | IF "." $ uData cTmp := "#,##0.00" ENDIF |
| Так видать не совсем корректно и нужно считывать символ разделителя. У меня так NumberFormat:="# ##0"+razdels+"00" Где razdels:=GET_SDECIMAL() А лучше так **************************** Func GetActualSeparator(Oxl) return If(Oxl:UseSystemSeparators,{GET_STHOUSAND(),GET_SDECIMAL()},{Oxl:ThousandsSeparator,Oxl:DecimalSeparator}) PS GET_SDECIMAL() есть на форуме
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 4223
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.02.23 19:18. Заголовок: Dima пишет GET_SDECI..
Dima пишет цитата: | GET_SDECIMAL() есть на форуме |
| Использую у себя. У меня дает ",", в коде тоже стоит '0,' cTmp := Replicate( "#", nTmp - 2 ) + '0,' + Replicate( "0", Len( uData ) - nTmp ) а не фурычит, вернул изменения назад, не пользовался Ole и нечего начинать
|
|
|
Dima
|
| |
Пост N: 7746
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.02.23 19:25. Заголовок: SergKis Так и пишу ..
SergKis Так и пишу ведь что надо вероятно проверять UseSystemSeparators и в зависимости что вернет , юзать или систем сепаратор или сепаратор Excel
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 4224
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.02.23 19:53. Заголовок: Dima В xml беру Exc..
Dima В xml беру Excel сепаратор без вариантов и хватает. Без ole переживу (надобность была только для примеров, причем еще недавно они работали), в примере выше, кидал архив, замену на кнопку вместо :ExcelOle() кода форм. простого варианта для hbXlsXml.lib, можно менять на :Excel2(). Этого для примеров мне достаточно. Спасибо
|
|
|
Haz
|
| |
Пост N: 1883
Зарегистрирован: 20.02.11
|
|
Отправлено: 16.02.23 20:29. Заголовок: SergKis пишет: Этог..
SergKis пишет: цитата: | Этого для примеров мне достаточно. Спасибо |
| Поддерживаю. ExcelOle() не востребованный метод. Если нужна черновая выгрузка, то она пишется за полчаса один раз. Для отчётов вообще не подходит , тут XML круче. Можно XlsWriter еще пользовать, там функционал впечатляет, но натыкался на проблемы с окном и вернулся на XML
|
|
|
|
Haz
|
| |
Пост N: 1884
Зарегистрирован: 20.02.11
|
|
Отправлено: 16.02.23 20:37. Заголовок: Andrey пишет: h_tbr..
Andrey пишет: цитата: | h_tbrowse.prg добавлять в проект не надо ! |
|
h_tbrowse.prg добавил чтоб нумерацию строк в ошибку получить и было на чем смотреть не ломая библиотеку
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 4227
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.02.23 21:25. Заголовок: gfilatov2002 Правки..
gfilatov2002 Правки в Tsb_Sbrowse_3\demo.prg Скрытый текст
FUNCTION SBrowse_Viewer( uTsb, nW, nH, cTitul, lNumber, aFont, lModal, lCenter ) ... DEFAULT oTsb:lEmptyValToChar := .T. IF ! lAlias .and. Empty(oTsb:aArray) MsgStop("SBrowse_Viewer :"+CRLF+CRLF+"Alias or array not defined !", "ERROR") RETURN Nil ENDIF ... ob:nHeightCell += 5 IF hb_IsNumeric(oTsb:nSupHdFore) .and. hb_IsNumeric(oTsb:nSupHdBack) .and. hb_IsNumeric(oTsb:nSupHdHeight) DEFAULT oTsb:cSupHdCapt := GetProperty(ob:cParentWnd, "Title") ADD SUPER HEADER TO ob FROM 1 TO ob:nColCount() TITLE oTsb:cSupHdCapt ; HEIGHT oTsb:nSupHdHeight COLOR oTsb:nSupHdFore,oTsb:nSupHdBack HORZ DT_CENTER ENDIF ... ob:SetColor( {12}, { {|c,n,b| c := b:Cargo, iif( b:nCell == n, c:nClr12_1, c:nClr12_2 )} } ) // CLR_SELEB ENDIF IF nColNo > 0 .and. hb_IsNumeric(oTsb:nSupHdFore) .and. ; hb_IsNumeric(oTsb:nSupHdBack) .and. ; hb_IsNumeric(oTsb:nSupHdHeight) nCol := Len(ob:aColumns) ; nI := Len( ob:aSuperHead ) IF nCol > nI ; ob:aSuperHead[ nI ][2] := nCol ENDIF ENDIF ob:SetNoHoles() ob:SetFocus() ENDIF Return oTsb:lCellBrw } DEFAULT oTsb:bAfter := {|ob| // после END TSBROWSE выполняется Local nW, nL nW := This.oBrw.ClientWidth nL := ob:GetAllColsWidth() - 1 IF nL > nW ob:lAdjColumn := .T. ob:lNoHScroll := .F. ob:lMoreFields := ( ob:nColCount() > 30 ) ELSE ob:AdjColumns() ENDIF ob:Refresh() Return Nil } uAlias := iif( hb_IsChar(uAlias), uAlias, oTsb:aArray ) ...
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 2100
Зарегистрирован: 11.02.10
|
|
Отправлено: 19.02.23 12:40. Заголовок: SergKis пишет: Прав..
SergKis пишет: цитата: | Правки в Tsb_Sbrowse_3\demo.prg |
| Поправил Благодарю за помощь
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 2103
Зарегистрирован: 11.02.10
|
|
Отправлено: 22.02.23 12:28. Заголовок: Всем кому это интересно
Выложил 1-е обновление сборки 23.02 с учетом последних исправлений и дополнений click here Желаю всем мира и добра
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 7304
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.02.23 20:14. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Выложил 1-е обновление сборки 23.02 с учетом последних исправлений и дополнений |
| Перешёл на него и пришлось откатиться назад. Функция ISDIRECTORY() - перестала правильно определять директории. Если в пути стоит последний знак "\" то новая функция теперь выдаёт .F. Можно это как то исправить ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 2104
Зарегистрирован: 11.02.10
|
|
Отправлено: 26.02.23 21:37. Заголовок: Andrey пишет: Можно..
Andrey пишет: цитата: | Можно это как то исправить ? |
| Да, я тоже обратил на это внимание. Дело в том, что функция ISDIRECTORY() включена в Харбор только для совместимости с хHarbour (она берется из библиотеки xhb). Исправить это можно, если записать вверху своего модуля такую строку: цитата: | #xtranslate IsDirectory( <c> ) => hb_DirExists( <c> ) |
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 4233
Зарегистрирован: 17.02.12
|
|
Отправлено: 26.02.23 22:44. Заголовок: gfilatov2002 пишет И..
gfilatov2002 пишет цитата: | Исправить это можно, если записать вверху своего модуля такую строку: |
| По мне, лучше просканировать prg файлы и заменить все IsDirectory(...) на hb_DirExists(...), меньше головной боли Или вставлять эту строку глобально в minigui.ch или hmg.ch
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 2105
Зарегистрирован: 11.02.10
|
|
Отправлено: 26.02.23 22:52. Заголовок: SergKis пишет: лучш..
SergKis пишет: цитата: | лучше просканировать prg файлы и заменить все IsDirectory(...) |
| Не спорю, что так лучше...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 7305
Зарегистрирован: 12.09.06
|
|
Отправлено: 27.02.23 02:46. Заголовок: Есть ли функция опре..
Есть ли функция определяющая тип время наподобие: hb_IsLogical, hb_IsDate, hb_IsChar ? Что-то не нашёл в i_pseudofunc.ch
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|