Автор | Сообщение |
gfilatov
|
| модератор
|
Пост N: 699
Зарегистрирован: 25.05.05
|
|
Отправлено: 29.01.08 13:59. Заголовок: Новая версия Расширенного релиза библиотеки MiniGUI (часть V) (продолжение)
Начало темы находится здесь, а теперь АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Готовится к опубликованию новая сборка №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
|
| moderator
|
Пост N: 781
Зарегистрирован: 11.02.10
|
|
Отправлено: 17.07.15 16:47. Заголовок: Haz пишет: Пример с..
Haz пишет: цитата: | Пример собран на библиотеке |
| Благодарю за пример - работает отлично! Я его уже отформатировал и включил в новую сборку
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4386
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.07.15 17:20. Заголовок: Haz пишет: Пример с..
Haz пишет: цитата: | Пример собран на библиотеке с учетом всех предложенных изменений |
| Пример КЛАССНЫЙ !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4387
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.07.15 19:21. Заголовок: gfilatov2002 пишет: ..
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
|
| |
Пост N: 5139
Зарегистрирован: 17.05.05
|
|
Отправлено: 17.07.15 20:50. Заголовок: Andrey пишет: Навер..
Andrey пишет: цитата: | Наверно ОЧЕНЬ нужно бы поставить комментарии для: |
| А ты похоже не понял , про себя же написал ? Мне понятно , хотя я на Минигуи без году неделя. Has на моей памяти раз 5 указывал тебе , смотри сырец Раз тебе лень , сделаю за тебя....... Скрытый текст 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
| Это только по логическим данным , остальное там же ... в сырце и нет смысла дублировать сюда.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4388
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.07.15 00:36. Заголовок: Dima пишет: Раз теб..
Dima пишет: цитата: | Раз тебе лень , сделаю за тебя |
| Дима, я понял. Просто другие новички не поймут. В своих примерах я стараюсь комментировать что мне было непонятно. Так как Григорий уже добавил этот пример к себе, то мои комментарии к этому примеру уже не пойдут.
|
|
|
Haz
|
| |
Пост N: 616
Зарегистрирован: 20.02.11
|
|
Отправлено: 21.07.15 11:09. Заголовок: gfilatov2002 пишет: ..
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
|
| moderator
|
Пост N: 782
Зарегистрирован: 11.02.10
|
|
Отправлено: 21.07.15 11:34. Заголовок: Haz пишет: если не ..
Haz пишет: цитата: | если не поздно/ не сложно , то еще два места дополнить |
| Сделаю, конечно
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 766
Зарегистрирован: 17.02.12
|
|
Отправлено: 21.07.15 11:51. Заголовок: Haz пишет:uField := ..
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
|
| постоянный участник
|
Пост N: 767
Зарегистрирован: 17.02.12
|
|
Отправлено: 21.07.15 11:58. Заголовок: PS. правильней RETUR..
PS. правильней RETURN MAX( AScan( oBrw:aColumns, {|oCol| UPPER(oCol:cName) == UPPER( xName ) } ), nDefCol )
|
|
|
Haz
|
| |
Пост N: 618
Зарегистрирован: 20.02.11
|
|
Отправлено: 21.07.15 12:20. Заголовок: gfilatov2002 пишет: ..
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
|
| постоянный участник
|
Пост N: 768
Зарегистрирован: 17.02.12
|
|
Отправлено: 21.07.15 12:41. Заголовок: SergKis пишет:добави..
SergKis пишет: цитата: | добавить METHOD nColumn(xName, nDefCol) |
| Добавка для таких действий IF oBrw:nColumn("NAME1", 0) > 0 // есть группа колонок ELSE // нет группы колонок, добавим ... ENDIF вместо проверок через ascan
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 783
Зарегистрирован: 11.02.10
|
|
Отправлено: 21.07.15 15:10. Заголовок: Haz пишет: Правильн..
Haz пишет: цитата: | Правильно будет так ATail( ::aColumns ):cName := (::cAlias) -> ( FieldName( nE )) |
| Благодарю за поправку! Haz пишет: цитата: | Метод ::HideColumn - аналогично |
| Сделал
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 784
Зарегистрирован: 11.02.10
|
|
Отправлено: 22.07.15 10:48. Заголовок: Новый релиз библиоте..
|
|
|
Dima
|
| |
Пост N: 5147
Зарегистрирован: 17.05.05
|
|
Отправлено: 22.07.15 13:20. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Прошу отписаиться тех, кто скачает И ИСПОЛЬЗУЕТ в работе данную сборку |
| Использую в своих тестах. Все нормально ! Спасибо за работу
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 769
Зарегистрирован: 17.02.12
|
|
Отправлено: 22.07.15 14:16. Заголовок: gfilatov2002 Начал..
gfilatov2002 Начал переносить в свой проект и обратил внимание: В добавленном куске 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.
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 785
Зарегистрирован: 11.02.10
|
|
Отправлено: 22.07.15 16:26. Заголовок: SergKis пишет: в вы..
SergKis пишет: цитата: | в вызове хртелось бы уточнения, чем вызывали |
| Добавил цитата: | Eval( ::bLDblClick, Nil, nKey, nFlags ) |
| SergKis пишет: цитата: | имеем рассогласование вызова по параметрам |
| Да, верно. Но мы же смешали здесь мышку с клавиатурой Вообще, хочу этот кусок заключить в #ifdef __EXT_SELECTION__ ... #endif т.е. код используется теми, кому он реально нужен...
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 770
Зарегистрирован: 17.02.12
|
|
Отправлено: 22.07.15 16:57. Заголовок: gfilatov2002 пишет:Д..
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
|
| постоянный участник
|
Пост N: 771
Зарегистрирован: 17.02.12
|
|
Отправлено: 22.07.15 17:25. Заголовок: gfilatov2002 пишет:В..
gfilatov2002 пишет: цитата: | Вообще, хочу этот кусок заключить в #ifdef __EXT_SELECTION__ ... #endif т.е. код используется теми, кому он реально нужен... |
| на мой взгляд это лишнее. Можно поступить проще для Tsb: 1- завести DATA массив назначения клавиш 2- метод установки клавиш и блока кода в массив (аналогия set key в clipper) 3- метод добычи блока из массива установки 4- дефаультный метод (ф-ия) устанавливаемый в п. 1 в bUserKeyDown при использовании данной методики пример (на функциях) кидал Dime (перенес из своего проекта Tsb) и где то у меня есть. Если это интересно ? эта метода не затрагивает нынешнюю технологию работы с KeyDown
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4393
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.07.15 04:26. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Прошу отписаиться тех, кто скачает И ИСПОЛЬЗУЕТ в работе данную сборку |
| Перешёл, и облом... С цветами белиберда получается - пока нашёл у LABEL и TAB и DRAW LINE. Подробности отправил в письме.
|
|
|
Haz
|
| |
Пост N: 619
Зарегистрирован: 20.02.11
|
|
Отправлено: 23.07.15 15:20. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Прошу отписаиться тех, кто скачает И ИСПОЛЬЗУЕТ в работе данную сборку |
| Григорий, пересобрал крупный проект, глюков не заметил
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|