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

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

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

gfilatov2002: Haz пишет: Пример собран на библиотеке Благодарю за пример - работает отлично! Я его уже отформатировал и включил в новую сборку

Andrey: Haz пишет: Пример собран на библиотеке с учетом всех предложенных изменений Пример КЛАССНЫЙ !

Andrey: gfilatov2002 пишет: Я его уже отформатировал и включил в новую сборку Наверно ОЧЕНЬ нужно бы поставить комментарии для: oBrw:SetArray( aDatos,.t. ) oBrw:nWheelLines := 1 oBrw:nClrLine := COLOR_GRID oBrw:lNoChangeOrd := TRUE oBrw:lCellBrw := TRUE oBrw:lNoVScroll := TRUE oBrw:hBrush := CreateSolidBrush( 242, 245, 204 ) Не все же разбираются ...


Dima: Andrey пишет: Наверно ОЧЕНЬ нужно бы поставить комментарии для: А ты похоже не понял , про себя же написал ? Мне понятно , хотя я на Минигуи без году неделя. Has на моей памяти раз 5 указывал тебе , смотри сырец Раз тебе лень , сделаю за тебя....... [pre2] DATA l2007 AS LOGICAL INIT .F. //V90 // new look DATA l3DLook AS LOGICAL INIT .F. READONLY // internally control state of ::Look3D() in "Phantom" column DATA lHitTop, lHitBottom, lCaptured, lMChange // browsing flags DATA lAppendMode AS LOGICAL INIT .F. READONLY // automatic append flag DATA lAutoCol //V90 // automatic columns generation from AUTOCOLS clause DATA lAutoEdit AS LOGICAL INIT .F. // activates continuous edition mode DATA lAutoSkip AS LOGICAL INIT .F. // compatibility with TCBrowse DATA lCanAppend AS LOGICAL INIT .F. READONLY // activates auto append mode DATA lCanDelete AS LOGICAL INIT .F. HIDDEN // activates delete capability DATA lCanSelect AS LOGICAL INIT .F. // activates select mode DATA lCellBrw // celled browse flag DATA lCellStyle AS LOGICAL INIT .F. // compatibility with TCBrowse DATA lChanged AS LOGICAL INIT .F. // field has changed indicator DATA lClipMore AS LOGICAL INIT .F. // ClipMore RDD DATA lColDrag AS LOGICAL // dragging feature DATA lConfirm AS LOGICAL INIT .T. HIDDEN // ask for user confirm to delete a row DATA lDescend AS LOGICAL INIT .F. // descending indexes DATA lDestroy // flag to destroy bitmap created for selected records DATA lDontChange //V90 // avoids user to change line with mouse or keyboard DATA lDrawHeaders AS LOGICAL INIT .T. // condition for headers drawing DATA lDrawFooters // condition for footers drawing DATA lEditable AS LOGICAL // editabe cells in automatic columns creation DATA lEditing AS LOGICAL INIT .F. READONLY // to avoid lost focus at editing time DATA lDrawSuperHd AS LOGICAL INIT .F. // condition for SuperHeader drawing DATA lDrawSpecHd AS LOGICAL INIT .F. // condition for SpecHeader drawing DATA lEditingHd AS LOGICAL INIT .F. READONLY // to avoid lost focus at editing time SpecHd DATA lEditableHd AS LOGICAL INIT .F. // activates edition mode of SpecHd on init DATA lFilterMode AS LOGICAL INIT .F. READONLY // index based filters with NTX RDD DATA lAutoSearch AS LOGICAL INIT .F. READONLY // condition for SuperHeader as AutoSearch DATA lAutoFilter AS LOGICAL INIT .F. READONLY // condition for SuperHeader as AutoFilter DATA lHasChgSpec AS LOGICAL INIT .F. // SpecHeader data has changed flag for further actions DATA lFirstFocus HIDDEN // controls some actions on init DATA lFirstPaint // controls some actions on init DATA lFixCaret AS LOGICAL // TSGet fix caret at editing time DATA lFooting AS LOGICAL // indicates footers can be drawn DATA lNoPaint // to avoid unnecessary painting DATA lGrasp AS LOGICAL INIT .F. READONLY // used by drag & drop feature DATA lHasChanged AS LOGICAL INIT .F. // browsed data has changed flag for further actions DATA lHasFocus AS LOGICAL INIT .F. // focused flag DATA lIconView AS LOGICAL INIT .F. // compatibility with TCBrowse DATA lInitGoTop //V90 // go to top on init, default = .T. DATA lIsArr // browsing an array DATA lIsDbf AS LOGICAL INIT .F. READONLY // browsed object is a database DATA lIsTxt // browsing a text file DATA lLineDrag AS LOGICAL // TSBrowse dragging feature DATA lLockFreeze AS LOGICAL // avoids cursor positioning on frozen columns DATA lMoveCols AS LOGICAL // Choose between moving or exchanging columns (::moveColumn() or ::exchange()) DATA lNoChangeOrd AS LOGICAL // avoids changing active order by double clicking on headers DATA lNoExit AS LOGICAL INIT .F. // prevents edit exit with arrow keys DATA lNoGrayBar AS LOGICAL // don't show inactive cursor DATA lNoHScroll AS LOGICAL // disables horizontal scroll bar DATA lNoLiteBar AS LOGICAL // no cursor DATA lNoMoveCols AS LOGICAL // avoids resize or move columns by the user DATA lNoPopup AS LOGICAL INIT .T. //V90 // avoids popup menu when right click the column's header DATA lPopupActiv AS LOGICAL INIT .F. //V90 // defined popup menu when right click the column's header DATA lPopupUser AS LOGICAL INIT .F. //New // activates user defined popup menu DATA lNoResetPos AS LOGICAL // prevents to reset record position on gotfocus DATA lNoVScroll AS LOGICAL // disables vertical scroll bar DATA lLogicDrop AS LOGICAL // compatibility with TCBrowse DATA lPageMode AS LOGICAL INIT .F. // paging mode flag DATA lPainted AS LOGICAL // controls some actions on init DATA lRePaint AS LOGICAL // bypass paint if false DATA lPostEdit // to detect postediting DATA lUndo AS LOGICAL INIT .F. // used by RButtonDown method DATA lUpdated AS LOGICAL INIT .F. // replaces lEditCol return value DATA lUpperSeek AS LOGICAL INIT .T. // controls if char expresions are seek in uppercase or not DATA lSeek AS LOGICAL INIT .T. // activates TSBrowse seeking feature DATA lSelector AS LOGICAL INIT .F. //V90 // automatic first column with pointer bitmap DATA lTransparent //V90 // flag for transparent browses DATA lEnabled AS LOGICAL INIT .T. // enable/disable TSBrowse for displaying data //JP 1.55 DATA lPickerMode AS LOGICAL INIT .T. // enable/disable DatePicker Mode in inplace Editing //MWS Sep 20/07 DATA lPhantArrRow AS LOGICAL INIT .F. // Flag for initial empty row in array DATA lEnum AS LOGICAL INIT .F. // activates SpecHeader as Enumerator [/pre2] Это только по логическим данным , остальное там же ... в сырце и нет смысла дублировать сюда.

Andrey: Dima пишет: Раз тебе лень , сделаю за тебя Дима, я понял. Просто другие новички не поймут. В своих примерах я стараюсь комментировать что мне было непонятно. Так как Григорий уже добавил этот пример к себе, то мои комментарии к этому примеру уже не пойдут.

Haz: gfilatov2002 пишет: Я его уже отформатировал и включил в новую сборку Григорий если не поздно/ не сложно , то еще два места дополнить которые ссылаются на номер колонки 1 Первой строкой в метод SetData() CLASS TSBROWSE добавить nColumn := IF( Valtype( nColumn) == "C", ::nColumn( nColumn ), nColumn ) 2 Первой строкой в функцию ComboWBlock CLASS TSCOLUMN добавить nCol := IF( Valtype( nCol) == "C", oBrw:nColumn( nCol ), nCol ) и далее по коду после else условия if oBrw:lIsDbf перед If aData == Nil вставить Else // editing an array uField is the array element number uField := IF( Valtype( uField ) == "C", oBrw:nColumn( uField ), uField ) If aData == Nil ЗЫ: можно конечно и не править , но при обращении по имени код получается громоздкий oBrw:SetData( oBrw:nColumn("TEXT") , ComboWBlock( oBrw, oBrw:nColumn("TEXT") , oBrw:nColumn("TEXT") , aCombo ) ) вместо oBrw:SetData( "TEXT" , ComboWBlock( oBrw, "TEXT" , "TEXT" , aCombo ) ) если чего еще выловлю - позже скину

gfilatov2002: Haz пишет: если не поздно/ не сложно , то еще два места дополнить Сделаю, конечно

SergKis: Haz пишет:uField := IF( Valtype( uField ) == "C", oBrw:nColumn( uField ), uField ) что бы везде не писать проверку на valtype == C, может ее спрятать в саму nColumn и добавить METHOD nColumn(xName, nDefCol) DEFAULT nDefCol := 1 IF valtype(xName) == 'N' RETURN iif( xName > 0 .and. xName <= Len( ::aColumns ), xName, nDefCol) ENDIF RETURN MAX( AScan( oBrw:aColumns, {|oCol| UPPER(oCol:cName) == UPPER( cName ) } ), nDefCol )

SergKis: PS. правильней RETURN MAX( AScan( oBrw:aColumns, {|oCol| UPPER(oCol:cName) == UPPER( xName ) } ), nDefCol )

Haz: gfilatov2002 пишет: Сделаю, конечно Григорий, еще поправочки Метод ::HideColumn - аналогично первой строкой nColumn := IF( Valtype( nColumn) == "C", ::nColumn( nColumn ), nColumn ) или как предлагает Сергей - саму проверку == "С" спрятать в метод ::nColumn() т.к. таких проверок становится больше Ранее предлагалось вот это изменение метода LoadFilds() TSBROWSE для автоматического назначения имен колонок по имени поля добавить в метод строку ATail( ::aColumns ):cName := FieldName( nE ) Погонял поплотнее - работает только если находимся в текущем алиасе. Правильно будет так ATail( ::aColumns ):cName := (::cAlias) -> ( FieldName( nE )) в коде метода ::LoadFields место этой правки логично сразу после похожего кода который там уже есть ATail( ::aColumns ):cData := ::cAlias + "->" + FieldName( nE ) PS: сижу не спеша старый проект переписываю под символьные имена колонок , визуально код становится значительно читабильнее

SergKis: SergKis пишет:добавить METHOD nColumn(xName, nDefCol) Добавка для таких действий IF oBrw:nColumn("NAME1", 0) > 0 // есть группа колонок ELSE // нет группы колонок, добавим ... ENDIF вместо проверок через ascan

gfilatov2002: Haz пишет: Правильно будет так ATail( ::aColumns ):cName := (::cAlias) -> ( FieldName( nE )) Благодарю за поправку! Haz пишет: Метод ::HideColumn - аналогично Сделал

gfilatov2002: Новый релиз библиотеки для компилятора BCC выложил, как и обещал, на официальном сайте библиотеки по адресу: http://hmgextended.com/files/CONTRIB/hmg-2.4.9-setup.zip Также доступна полная сборка для компилятора MinGW по адресу: http://hmgextended.com/files/CONTRIB/hmg249-mingw.exe и компактный архив для свежей версии компилятора xHarbour http://hmgextended.com/files/CONTRIB/xhmg249_xhb10129.zip Прошу отписаиться тех, кто скачает И ИСПОЛЬЗУЕТ в работе данную сборку Благодарю за внимание

Dima: gfilatov2002 пишет: Прошу отписаиться тех, кто скачает И ИСПОЛЬЗУЕТ в работе данную сборку Использую в своих тестах. Все нормально ! Спасибо за работу

SergKis: gfilatov2002 [pre2] Начал переносить в свой проект и обратил внимание: В добавленном куске KeyDown Case !::lCellbrw .and. ( nKey == VK_RETURN .or. nKey == VK_SPACE ) .and. ::bLDblClick != Nil // 14.07.2015 Eval( ::bLDblClick ) в вызове хртелось бы уточнения, чем вызывали VK_RETURN или VK_SPACE В METHOD LDblClick( nRowPix, nColPix, nKeyFlags ) имеем выполнение ... ElseIf ::bLDblClick != Nil Eval( ::bLDblClick, uPar1, uPar2, nKeyFlags ) EndIf ... If ::bLDblClick != Nil .and. ::aActions == Nil Eval( ::bLDblClick, uPar1, uPar2, nKeyFlags ) Else имеем рассогласование вызова по параметрам Просканировал h_tbrowse.prg CLASS TSBrowse на Eval( оказалось в некоторых местах Self передается в блок кода, во многих нет. Может есть смысл скорректировать Eval-ы, добавив self. [/pre2]

gfilatov2002: SergKis пишет: в вызове хртелось бы уточнения, чем вызывали Добавил Eval( ::bLDblClick, Nil, nKey, nFlags ) SergKis пишет: имеем рассогласование вызова по параметрам Да, верно. Но мы же смешали здесь мышку с клавиатурой Вообще, хочу этот кусок заключить в #ifdef __EXT_SELECTION__ ... #endif т.е. код используется теми, кому он реально нужен...

SergKis: gfilatov2002 пишет:Добавил Но мы же смешали здесь мышку с клавиатурой мыша вызывает ::LDblClick(...), здесь клава и добавки Eval( ::bLDblClick, Nil, nKey, nFlags ) на мой взгляд достаточно. А различить, что вызывало, надо в случае, если на DblClick и Return повешен вызов, а на space снять\поставить галочку или ничего. А как насчет Self в eval(...) последним параметром к существующим ? Eval( ::bLDblClick, Nil, nKey, nFlags, Self ) if nValue > 0 .AND. nValue <= Eval(::bLogicLen, Self) // JP 1.59 Eval(::bGoToPos, nValue, Self) endif и так далее

SergKis: gfilatov2002 пишет:Вообще, хочу этот кусок заключить в #ifdef __EXT_SELECTION__ ... #endif т.е. код используется теми, кому он реально нужен... на мой взгляд это лишнее. Можно поступить проще для Tsb: 1- завести DATA массив назначения клавиш 2- метод установки клавиш и блока кода в массив (аналогия set key в clipper) 3- метод добычи блока из массива установки 4- дефаультный метод (ф-ия) устанавливаемый в п. 1 в bUserKeyDown при использовании данной методики пример (на функциях) кидал Dime (перенес из своего проекта Tsb) и где то у меня есть. Если это интересно ? эта метода не затрагивает нынешнюю технологию работы с KeyDown

Andrey: gfilatov2002 пишет: Прошу отписаиться тех, кто скачает И ИСПОЛЬЗУЕТ в работе данную сборку Перешёл, и облом... С цветами белиберда получается - пока нашёл у LABEL и TAB и DRAW LINE. Подробности отправил в письме.

Haz: gfilatov2002 пишет: Прошу отписаиться тех, кто скачает И ИСПОЛЬЗУЕТ в работе данную сборку Григорий, пересобрал крупный проект, глюков не заметил



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