Автор | Сообщение |
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
[только новые]
|
|
gfilatov2002
|
| moderator
|
Пост N: 1994
Зарегистрирован: 11.02.10
|
|
Отправлено: 08.01.22 19:26. Заголовок: SergKis пишет: попр..
SergKis пишет: Принято Немного отформатировал, убрал в блоках кода неиспользуемое присвоение Благодарю за помощь SergKis пишет: OK
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 4032
Зарегистрирован: 17.02.12
|
|
Отправлено: 08.01.22 19:39. Заголовок: PS Пример тот же, но..
PS Пример тот же, но с добавкой подключения блока кода для SBrowse_Record(...) для информации Скрытый текст
/* * MINIGUI - Harbour Win32 GUI library Demo * */ #define _HMG_OUTLOG #include "hmg.ch" #include "tsbrowse.ch" REQUEST DBFCDX, DBFFPT Function Main() LOCAL cFont := "Arial" LOCAL nSize := 12 LOCAL bSetUp, lNoMain, nW, nH, oDlu, bSet, bRec SET CODEPAGE TO RUSSIAN SET LANGUAGE TO RUSSIAN RddSetDefault("DBFCDX") //SET OOP ON SET EPOCH TO 2000 SET DATE TO GERMAN SET CENTURY ON SET AUTOPEN OFF SET DELETED OFF SET NAVIGATION EXTENDED SET DEFAULT ICON TO "HMG_ICO" // фонт по default cFont := "DejaVu Sans Mono" nSize := 16 SET FONT TO cFont, nSize DEFINE FONT Normal FONTNAME cFont SIZE nSize DEFINE FONT Bold FONTNAME cFont SIZE nSize BOLD IF ( lNoMain := Empty( _HMG_MainHandle ) ) SET WINDOW MAIN OFF ENDIF bSet := {|ob,um| Local oc, fn IF Empty(um) // before END TBROWSE ELSE // after END TBROWSE fn := GetFontHandle("Bold") FOR EACH oc IN ob:aColumns IF oc:cName == "SELECTOR" ; LOOP ENDIF oc:hFontHead := fn IF oc:cName == "ORDKEYNO" oc:hFont := fn oc:hFontFoot := fn ENDIF NEXT ob:SetNoHoles() ob:SetFocus() ENDIF Return .T. } //bSet := {|| .T. } bRec := {|| .F. } // или задавать как bSet с параметрами bSetUp := { bSet, , bRec } USE ( "CUSTOMER" ) ALIAS CUST NEW SHARED oDlu := oDlu4Font( _HMG_DefaultFontSize ) nW := Sys.ClientWidth nH := oDlu:H1 * ( fCount() + 3 ) + 5 nH := iif( nH > Sys.ClientHeight, Sys.ClientHeight, nH ) nH := { Sys.ClientHeight, nH } sBrowse( Alias(), "DEMO. Test new SBrowse", bSetUp, , nW, nH, , .T., .T. ) IF lNoMain SET WINDOW MAIN ON ENDIF RETURN NIL
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1995
Зарегистрирован: 11.02.10
|
|
Отправлено: 10.01.22 11:44. Заголовок: Всем кому это интересно ;-)
Подготовил третий релиз-кандидат для новой сборки 22.01 Кратко, что нового: Скрытый текст
* Fixed DATEPICKER control: 'Value' property returns TimeStamp type if the FORMATSTRING property was defined (introduced in the build 21.09). * Added the function nStrToNum( cNumericVal, [lEuropean] ) --> nVal * Added the function uCharToVal( cText, [cType] ) --> uVal. It is an inverse function to the function cValToChar(). * The improved function cValToChar() preserves the full accuracy of the number value with the internal function cNumToChar(). It does not depend on the SET DECIMALS TO <n> setting now. * The DO MESSAGE LOOP command supports the optional EXIT [ON EXCEPTION] clause (default is false). * The useful function GetPixelColor() was moved to MiniGUI core. * Updated the TSBrowse, RddLeto and SQLite3 libraries. * Added the new interesting samples and updated some examples.
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 4034
Зарегистрирован: 17.02.12
|
|
Отправлено: 17.01.22 16:51. Заголовок: gfilatov2002 Добавь..
gfilatov2002 Добавьте строки FUNCTION _TBrowse( oParam, uAlias, cBrw, nY, nX, nW, nH ) ... IF HB_ISBLOCK( bEnd ) ; EVal( bEnd, oBrw, oParam ) ENDIF IF HB_ISARRAY( oParam:aEvents ) FOR EACH aTmp IN oParam:aEvents (This.Object):Event( aTmp[1], aTmp[2] ) NEXT ENDIF DO EVENTS RETURN oBrw Тогда можно делать WITH OBJECT oTsb :aEvents := {} AADD( :aEvents, { 3, {|ow,ky,ob| Local cAls ob := iif( Empty(ob), ow:Cargo:oBrw, ob ) cAls := ob:cAlias IF ob:nLen > 0 IF (cAls)->(RLock()) IF (cAls)->(Deleted()) (cAls)->(dbRecall()) ELSE (cAls)->(dbDelete()) ENDIF (cAls)->(dbUnlock()) ENDIF //ob:DeleteRow(.F., .F.) ob:SetFocus() ob:DrawSelect() DO EVENTS ENDIF Return Nil } } ) ... END WITH
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1996
Зарегистрирован: 11.02.10
|
|
Отправлено: 17.01.22 17:15. Заголовок: SergKis пишет: Доба..
SergKis пишет: OK
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1997
Зарегистрирован: 11.02.10
|
|
Отправлено: 21.01.22 11:02. Заголовок: Всем кому это интересно
Завершена подготовка новой сборки 22.01, которая будет опубликована на следующей неделе. Искренне благодарю Сергея Киселева и Андрея Верченко за помощь при подготовке этой сборки
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 4035
Зарегистрирован: 17.02.12
|
|
Отправлено: 23.01.22 13:44. Заголовок: gfilatov2002 предло..
gfilatov2002 предложение CLASS TSBrowse FROM TControl ... DATA lYesNo AS LOGICAL INIT .F. // .T. - text _HMG_aABMLangLabel[ 20\21 ] ... METHOD DrawLine( xRow, lDrawCell ) CLASS TSBrowse ... ELSEIF Empty( cPicture ) .OR. lMultiLine //uData := iif( ValType( uData ) != "C", cValToChar( uData ), uData ) IF ValType( uData ) != "C" IF ValType( uData ) == "L" .and. ::lYesNo uData := _HMG_aABMLangLabel[ iif( uData, 20, 21 ) ] ELSE uData := cValToChar( uData ) ENDIF ENDIF ELSE ... METHOD DrawSelect( xRow, lDrawCell ) CLASS TSBrowse ... ELSEIF Empty( cPicture ) .OR. lMulti //uData := iif( ValType( uData ) != "C", cValToChar( uData ), uData ) IF ValType( uData ) != "C" IF ValType( uData ) == "L" .and. ::lYesNo uData := _HMG_aABMLangLabel[ iif( uData, 20, 21 ) ] ELSE uData := cValToChar( uData ) ENDIF ENDIF ELSE ... тогда вместо F\T будут тексты из _HMG_aABMLangLabel[ 20\21 ], т.е. Yes\No или от языка Да\Нет ... В примере с SBrowse, например, делаем так Скрытый текст
/* * MINIGUI - Harbour Win32 GUI library Demo * */ #define _HMG_OUTLOG #include "hmg.ch" #include "tsbrowse.ch" REQUEST DBFCDX, DBFFPT Function Main() LOCAL cFont := "Arial" LOCAL nSize := 12 LOCAL bSetUp, lNoMain, nW, nH, oDlu, bSet, bRec SET CODEPAGE TO RUSSIAN SET LANGUAGE TO RUSSIAN RddSetDefault("DBFCDX") //SET OOP ON SET EPOCH TO 2000 SET DATE TO GERMAN SET CENTURY ON SET AUTOPEN OFF SET DELETED OFF SET NAVIGATION EXTENDED SET DEFAULT ICON TO "HMG_ICO" // фонт по default cFont := "DejaVu Sans Mono" nSize := 18 SET FONT TO cFont, nSize DEFINE FONT Normal FONTNAME cFont SIZE nSize DEFINE FONT Bold FONTNAME cFont SIZE nSize BOLD IF ( lNoMain := Empty( _HMG_MainHandle ) ) SET WINDOW MAIN OFF ENDIF bSet := {|ob,um| Local oc, fn IF Empty(um) // before END TBROWSE ELSE // after END TBROWSE fn := GetFontHandle("Bold") FOR EACH oc IN ob:aColumns IF oc:cName == "SELECTOR" ; LOOP ENDIF oc:hFontHead := fn IF oc:cName == "ORDKEYNO" oc:hFont := fn oc:hFontFoot := fn ENDIF NEXT ob:SetNoHoles() ob:SetFocus() ENDIF Return .T. } bRec := {|ob,um| Local oc, fn IF Empty(um) // before END TBROWSE ob:lYesNo := .T. ELSE // after END TBROWSE fn := GetFontHandle("Bold") FOR EACH oc IN ob:aColumns IF oc:cName == "SELECTOR" ; LOOP ENDIF oc:hFontHead := fn NEXT ob:SetNoHoles() ob:GoRight() DO EVENTS ob:SetFocus() ENDIF Return .T. } //bSet := {|| .T. } //bRec := {|| .F. } bSetUp := { bSet, , bRec } USE ( "CUSTOMER" ) ALIAS CUST NEW SHARED oDlu := oDlu4Font( _HMG_DefaultFontSize ) nW := Sys.ClientWidth nH := oDlu:H1 * ( fCount() + 3 ) + 5 nH := iif( nH > Sys.ClientHeight, Sys.ClientHeight, nH ) nH := { Sys.ClientHeight, nH } sBrowse( Alias(), "DEMO. Test new SBrowse", bSetUp, , nW, nH, , .T., .T. ) IF lNoMain SET WINDOW MAIN ON ENDIF RETURN NIL
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 4036
Зарегистрирован: 17.02.12
|
|
Отправлено: 23.01.22 15:07. Заголовок: PS Можно сделать чер..
PS Можно сделать через массив текстов в классе, т.е. DATA aYesNo AS ARRAY INIT { _HMG_aABMLangLabel[20], _HMG_aABMLangLabel[21] } Тогда можно ставить свой текст для вывода в методах uData := ::aYesNo[ iif( uData, 1, 2 ) ] но может это избыточно
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1998
Зарегистрирован: 11.02.10
|
|
Отправлено: 23.01.22 18:25. Заголовок: SergKis пишет: сдел..
SergKis пишет: цитата: | сделать через массив текстов в классе |
| Да, этот вариант понравился больше. Тогда можно и не изменять пример - изменения для логических полей подтягиваются автоматически Благодарю за предложение
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 4037
Зарегистрирован: 17.02.12
|
|
Отправлено: 23.01.22 22:42. Заголовок: gfilatov2002 пишет т..
gfilatov2002 пишет цитата: | тот вариант понравился больше |
| Тогда надо еще правку внести METHOD Edit( uVar, nCell, nKey, nKeyFlags, cPicture, bValid, nClrFore, nClrBack ) CLASS TSBrowse ... ELSEIF ( cType == "L" .AND. lLogicDrop ) .OR. oCol:lComboBox ... nHeight := Max( 10, Min( 10, Len( aGet ) ) ) * ::nHeightCell ELSE IF ::lYesNo aGet := { ::aYesNo[ 1 ], ::aYesNo[ 2 ] } ELSE aGet := { ::aMsg[ 1 ], ::aMsg[ 2 ] } ENDIF IF nKey == VK_RETURN uValue := iif( uValue, 1, 2 ) ELSE uValue := Max( 1, AScan( aGet, Upper( Chr( nKey ) ) ) ) ENDIF nHeight := ::nHeightCell * 4 // 1.54 ENDIF ... В примере так можно делать bRec := {|ob,um| Local oc, fn IF Empty(um) // before END TBROWSE ob:lYesNo := .T. ob:aYesNo[1] := "Вкл." ob:aYesNo[2] := "Выкл." ELSE // after END TBROWSE fn := GetFontHandle("Bold") FOR EACH oc IN ob:aColumns IF oc:cName == "SELECTOR" ; LOOP ENDIF oc:hFontHead := fn NEXT ob:SetNoHoles() ob:GoRight() DO EVENTS ob:SetFocus() ENDIF Return .T. } ...
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1999
Зарегистрирован: 11.02.10
|
|
Отправлено: 24.01.22 11:05. Заголовок: SergKis пишет: aGet..
SergKis пишет: цитата: | aGet := { ::aMsg[ 1 ], ::aMsg[ 2 ] } |
| Благодарю за подсказку Убрал новую переменную :aYesNo и использовал вместо нее уже готовый массив :aMsg. Введение новой переменной :lYesNo посчитал излишним также, отображение элементов вышеназванного массива для логических полей можно всегда изменить, переопределив 1-е и 2-е значение этого массива.
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 4038
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.01.22 11:42. Заголовок: gfilatov2002 пишет В..
gfilatov2002 пишет цитата: | Введение новой переменной :lYesNo посчитал излишним также, отображение элементов вышеназванного массива для логических полей можно всегда изменить, переопределив 1-е и 2-е значение этого массива. |
| Не очень понял. ::aMsg[1], ::aMsg[2] к отображению в ::DrawSelect() и :DrawLine() не имеет отношения, там cValToChar(uData), т.е. F\T в таблице видим. ::aMsg[1], ::aMsg[2] возникают для ::Edit(...) с cType == "L" .AND. lLogicDrop в TComboBox(). Соединить на одинаковый текст для вывода в таблице и TComboBox() на карточке надо, наверное, подключив :aMsg вместо :aYesNo. :lYesNo нужна, в таком случае, только для сохранения старого варианта.
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 2000
Зарегистрирован: 11.02.10
|
|
Отправлено: 24.01.22 12:16. Заголовок: SergKis пишет: подк..
SergKis пишет: цитата: | подключив :aMsg вместо :aYesNo |
| Именно так и сделал SergKis пишет: цитата: | :lYesNo нужна, в таком случае, только для сохранения старого варианта |
| Такая совместимость не требуется, на мой взгляд Использование Yes\No вместо T\F на карточке представляется вполне логичным
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 4039
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.01.22 16:51. Заголовок: gfilatov2002 Еще не..
gfilatov2002 Еще небольшие правки по SBrowse IF /*! Empty( lNumber ) .or.*/ oBrw:nColumn( "ORDKEYNO", .T. ) > 0 oBrw:GetColumn( "SELECTOR" ):nClrBack := nClr oBrw:GetColumn( "ORDKEYNO" ):nClrHeadBack := nClr oBrw:GetColumn( "ORDKEYNO" ):nClrFocuBack := oBrw:nClrPane ENDIF ... nY := Len( oBrw:aColumns ) oBrw:aColumns[ nY - 1 ]:nWidth += 50 oBrw:aColumns[ nY - 1 ]:cName := "KEY" oBrw:aColumns[ nY - 1 ]:lEdit := .F. oBrw:aColumns[ nY ]:lEdit := .F. oBrw:aColumns[ nY ]:cName := "VALUE" ... IF HB_ISOBJECT( oBrw:Cargo ) .and. oBrw:ClassName == "TSBROWSE" .and. oBrw:Cargo:lIsDbf oBrw:Cargo:lRecLockArea := .T. oCol := oBrw:GetColumn("VALUE") //aColumns[3] oCol:lEdit := .T. ... Тогда пример с карточкой может быть такой Скрытый текст
/* * MINIGUI - Harbour Win32 GUI library Demo * */ #define _HMG_OUTLOG #include "hmg.ch" #include "tsbrowse.ch" REQUEST DBFCDX, DBFFPT Function Main() LOCAL cFont := "Arial" LOCAL nSize := 12 LOCAL bSetUp, lNoMain, nW, nH, oDlu, bSet, bRec SET CODEPAGE TO RUSSIAN SET LANGUAGE TO RUSSIAN RddSetDefault("DBFCDX") //SET OOP ON SET EPOCH TO 2000 SET DATE TO GERMAN SET CENTURY ON SET AUTOPEN OFF SET DELETED OFF SET NAVIGATION EXTENDED SET DEFAULT ICON TO "HMG_ICO" // фонт по default cFont := "DejaVu Sans Mono" nSize := 18 SET FONT TO cFont, nSize DEFINE FONT Normal FONTNAME cFont SIZE nSize DEFINE FONT Bold FONTNAME cFont SIZE nSize BOLD IF ( lNoMain := Empty( _HMG_MainHandle ) ) SET WINDOW MAIN OFF ENDIF bSet := {|ob,um| Local oc, fn IF Empty(um) // before END TBROWSE ELSE // after END TBROWSE fn := GetFontHandle("Bold") FOR EACH oc IN ob:aColumns IF oc:cName == "SELECTOR" ; LOOP ENDIF oc:hFontHead := fn IF oc:cName == "ORDKEYNO" oc:hFont := fn oc:hFontFoot := fn ENDIF NEXT ob:SetNoHoles() ob:SetFocus() ENDIF Return .T. } bRec := {|ob,um| Local oc, fn IF Empty(um) // before END TBROWSE ob:aMsg[1] := "Вкл." ob:aMsg[2] := "Выкл." ob:InsColNumber(60, 1, "ORDKEYNO") ob:lFooting := ob:lDrawFooters := .T. ob:nHeightFoot := ob:nHeightCell ELSE // after END TBROWSE fn := GetFontHandle("Bold") FOR EACH oc IN ob:aColumns IF oc:cName == "SELECTOR" ; LOOP ELSEIF oc:cName == "ORDKEYNO" oc:hFont := fn oc:hFontFoot := fn oc:nAlign := DT_CENTER ENDIF oc:hFontHead := fn NEXT ob:nFreeze := ob:nColumn("ORDKEYNO") ob:SetNoHoles() ob:GoRight() DO EVENTS ob:SetFocus() ENDIF Return .T. } //bSet := {|| .T. } //bRec := {|| .F. } // или задавать как bSet с параметрами bSetUp := { bSet, , bRec } USE ( "CUSTOMER" ) ALIAS CUST NEW SHARED oDlu := oDlu4Font( _HMG_DefaultFontSize ) nW := Sys.ClientWidth nH := oDlu:H1 * ( fCount() + 4 ) + 5 nH := iif( nH > Sys.ClientHeight, Sys.ClientHeight, nH ) nH := { Sys.ClientHeight, nH } sBrowse( Alias(), "DEMO. Test new SBrowse", bSetUp, , nW, nH, , .T., .T. ) IF lNoMain SET WINDOW MAIN ON ENDIF RETURN NIL
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 2001
Зарегистрирован: 11.02.10
|
|
Отправлено: 24.01.22 17:12. Заголовок: SergKis пишет: Еще ..
SergKis пишет: OK
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 2002
Зарегистрирован: 11.02.10
|
|
Отправлено: 25.01.22 10:44. Заголовок: Выложил январскую AN..
|
|
|
Dima
|
| |
Пост N: 7553
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.01.22 15:33. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Выложил январскую ANSI сборку 22.01 с учетом всех последних изменений по адресу |
| * Updated: '2 TBrowse Demo' sample. Contributed by Sergej Kiselev (see demo2.prg in folder \samples\Advanced\Tsb_2tsb) А так и должно быть когда ставим курсор на какую то строку то все значения в ней по всем полям показаны белым по белому ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 4040
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.01.22 16:06. Заголовок: Dima пишет А так и д..
Dima пишет цитата: | А так и должно быть когда ставим курсор на какую то строку то все значения в ней по всем полям показаны белым по белому ? |
| Положил на ftp картинку+prg+exe demo2.prg смотри все ok!, собрал только что. Добавил в Title версию hmg
|
|
|
Dima
|
| |
Пост N: 7555
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.01.22 16:35. Заголовок: SergKis я тебе тоже..
SergKis я тебе тоже сложил картинку уже из собранного тобой модуля , ни чего не изменилось
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 4041
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.01.22 17:46. Заголовок: Dima Глянь еще вари..
Dima Глянь еще вариант положил. Сделал выделенное цветом, вместо GetSysColor( COLOR_WINDOWTEXT ) oTsb1:aColor := { ; { CLR_FOCUSB, {|c,n,b| c := n, iif( b:nCell == n, -CLR_HRED, -RGB( 128, 225, 225 ) ) } }, ; { CLR_SELEF , CLR_BLACK }, ; { CLR_SELEB , {|c,n,b| c := n, iif( b:nCell == n, -CLR_BLUE, -RGB( 128, 225, 225 ) ) } } ; }
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|