Форум » GUI » Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение) » Ответить

Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение)

gfilatov: Начало темы находится здесь, а теперь АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Готовится к опубликованию новая сборка №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: gfilatov2002 Небольшая правка, чтобы не растягивалась колонка SELECTOR [pre2] 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 ... [/pre2]

gfilatov2002: SergKis пишет: Небольшая правка, чтобы не растягивалась колонка SELECTOR OK Для метода :GotoRec() добавил такую правку: [pre2] 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 ... [/pre2]

SergKis: Haz Сделал [pre2] 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 [/pre2] Выделенное красным валит с сообщением 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: SergKis пишет: Выделенное красным валит с сообщением Сергей , валит скорее всего ниже красного, на этом oSheet:Cells( nLine, nCol ):NumberFormat := cTmp Посмотри что в шаблоне . Сообщение об ошибке говорит [pre2] Error WINOLE/1006 Unable to set the NumberFormat property of the Range class (0x800A03EC): Microsoft Excel (DOS Error -2147352567) Args: [1] = C #0.00 [/pre2] точно такой код как ниже ? Не должно быть ошибки , ошибка говорит что cTmp = "#0.00" [pre2] IF "." $ uData cTmp := "#,##0.00" ENDIF [/pre2]

SergKis: Haz пишет валит скорее всего ниже красного, на этом oSheet:Cells( nLine, nCol ):NumberFormat := cTmp Это понятно, указывает номер строки в тексте ошибки, я говорил, что пытается стать формат "#0" или "#,##0.00" оба формата допустимы, как и "#0.00", с xml эти форматы проходят. Может в ячейке какая фигня и на нее ставится NumberFormat ? Для меня темный лес По поводу Selector, он удаляется в начале работы потом восстанавливается

Andrey: Haz пишет: Проблема не в примере , проблема в h_tbrowse.prg. Достаточно в demo.hbp добавить строку Да точно ! Проблема в том что не указана библиотека ! Достаточно в demo.hbp добавить библиотеку [pre2]# paths to the main and extension *.Lib -lminigui -ltsbrowse[/pre2] h_tbrowse.prg добавлять в проект не надо ! А можно как то проверять что нет оли для SBrowse() ? А то проект нормально собираются а функции SBrowse не работают.

Dima: Haz пишет: IF "." $ uData cTmp := "#,##0.00" ENDIF Так видать не совсем корректно и нужно считывать символ разделителя. У меня так NumberFormat:="# ##0"+razdels+"00" Где razdels:=GET_SDECIMAL() А лучше так [pre2] **************************** Func GetActualSeparator(Oxl) return If(Oxl:UseSystemSeparators,{GET_STHOUSAND(),GET_SDECIMAL()},{Oxl:ThousandsSeparator,Oxl:DecimalSeparator}) [/pre2] PS GET_SDECIMAL() есть на форуме

SergKis: Dima пишет GET_SDECIMAL() есть на форуме Использую у себя. У меня дает ",", в коде тоже стоит '0,' cTmp := Replicate( "#", nTmp - 2 ) + '0,' + Replicate( "0", Len( uData ) - nTmp ) а не фурычит, вернул изменения назад, не пользовался Ole и нечего начинать

Dima: SergKis Так и пишу ведь что надо вероятно проверять UseSystemSeparators и в зависимости что вернет , юзать или систем сепаратор или сепаратор Excel

SergKis: Dima В xml беру Excel сепаратор без вариантов и хватает. Без ole переживу (надобность была только для примеров, причем еще недавно они работали), в примере выше, кидал архив, замену на кнопку вместо :ExcelOle() кода форм. простого варианта для hbXlsXml.lib, можно менять на :Excel2(). Этого для примеров мне достаточно. Спасибо

Haz: SergKis пишет: Этого для примеров мне достаточно. Спасибо Поддерживаю. ExcelOle() не востребованный метод. Если нужна черновая выгрузка, то она пишется за полчаса один раз. Для отчётов вообще не подходит , тут XML круче. Можно XlsWriter еще пользовать, там функционал впечатляет, но натыкался на проблемы с окном и вернулся на XML

Haz: Andrey пишет: h_tbrowse.prg добавлять в проект не надо ! h_tbrowse.prg добавил чтоб нумерацию строк в ошибку получить и было на чем смотреть не ломая библиотеку

SergKis: gfilatov2002 Правки в Tsb_Sbrowse_3\demo.prg [pre2] 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 ) ... [/pre2]

gfilatov2002: SergKis пишет: Правки в Tsb_Sbrowse_3\demo.prg Поправил Благодарю за помощь

gfilatov2002: Выложил 1-е обновление сборки 23.02 с учетом последних исправлений и дополнений click here Желаю всем мира и добра

Andrey: gfilatov2002 пишет: Выложил 1-е обновление сборки 23.02 с учетом последних исправлений и дополнений Перешёл на него и пришлось откатиться назад. Функция ISDIRECTORY() - перестала правильно определять директории. Если в пути стоит последний знак "\" то новая функция теперь выдаёт .F. Можно это как то исправить ?

gfilatov2002: Andrey пишет: Можно это как то исправить ? Да, я тоже обратил на это внимание. Дело в том, что функция ISDIRECTORY() включена в Харбор только для совместимости с хHarbour (она берется из библиотеки xhb). Исправить это можно, если записать вверху своего модуля такую строку: [pre2]#xtranslate IsDirectory( <c> ) => hb_DirExists( <c> )[/pre2]

SergKis: gfilatov2002 пишет Исправить это можно, если записать вверху своего модуля такую строку: По мне, лучше просканировать prg файлы и заменить все IsDirectory(...) на hb_DirExists(...), меньше головной боли Или вставлять эту строку глобально в minigui.ch или hmg.ch

gfilatov2002: SergKis пишет: лучше просканировать prg файлы и заменить все IsDirectory(...) Не спорю, что так лучше...

Andrey: Есть ли функция определяющая тип время наподобие: hb_IsLogical, hb_IsDate, hb_IsChar ? Что-то не нашёл в i_pseudofunc.ch



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