Форум » 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

gfilatov2002: SergKis пишет: Немного правок Принимается. Благодарю за помощь

SergKis: gfilatov2002 В продолжение[pre2] CLASS TStbData INHERIT TCnlData ... METHOD Enable ( lEnab ) INLINE ::oTBrowse:lEnabled := iif( HB_ISLOGICAL(lEnab), lEnab, ::oTBrowse:lEnabled ) METHOD Enabled ( lEnab ) INLINE ::oTBrowse:Enabled( lEnab ) METHOD Restore() INLINE ::oTBrowse:Show() METHOD Show() INLINE ::oTBrowse:Show() METHOD Hide() INLINE ::oTBrowse:Hide() METHOD SetFocus() INLINE ::oTBrowse:SetFocus() ... *-----------------------------------------------------------------------------* Function _GetValue ( ControlName, ParentForm , Index ) *-----------------------------------------------------------------------------* ... do case #ifdef _TSBROWSE_ case T == "TBROWSE" oGet := _HMG_aControlIds[ ix ] retval := EVal( oGet:GetColumn( oGet:nCell ):bData ) #endif #ifdef _DBFBROWSE_ ... *-----------------------------------------------------------------------------* Function _SetValue ( ControlName, ParentForm, Value , Index, lSetGet ) *-----------------------------------------------------------------------------* ... do case #ifdef _TSBROWSE_ case T == "TBROWSE" oGet := _HMG_aControlIds[ ix ] EVal( oGet:GetColumn( oGet:nCell ):bData, Value ) #endif #ifdef _DBFBROWSE_ ... [/pre2]

SergKis: PS Не углядел лишний параметр из своей либы (убрать) Function _SetValue ( ControlName, ParentForm, Value , Index, lSetGet )


SergKis: PPS и класс не TStbData, а TTsbData CLASS TTsbData INHERIT TCnlData

gfilatov2002: SergKis пишет: В продолжение Дополнил. Благодарю за помощь

SergKis: Григорий, прошу прощения, пропустил наследованные методы в TTsbata Disable(), Refresh() [pre2] вместо METHOD Enable ( lEnab ) INLINE ::oTBrowse:lEnabled := iif( HB_ISLOGICAL(lEnab), lEnab, ::oTBrowse:lEnabled ) сделать METHOD Enable () INLINE ::oTBrowse:lEnabled := .T. добавить METHOD Disable() INLINE ::oTBrowse:lEnabled := .F. METHOD Refresh( lPaint ) INLINE ::oTBrowse:Refresh(lPaint) [/pre2]

SergKis: gfilatov2002 И еще[pre2] CLASS TWndData ... METHOD Hide() INLINE _HideWindow ( ::cName ) METHOD SetSize( y, x, w, h ) INLINE _SetWindowSizePos( ::cName, y, x, w, h ) в TCnlData есть такой метод в TSBROWSE добавил METHOD GetValue( xCol ) INLINE ( xCol := hb_defaultValue(xCol, ::nCell), ; EVal( ::GetColumn(xCol):bData ) ) METHOD SetValue( xCol, xVal ) INLINE ( xCol := hb_defaultValue(xCol, ::nCell), ; EVal( ::GetColumn(xCol):bData, xVal ) ) надоело писать Eval [/pre2]

SergKis: PS Может методы назвать надо было короче Get и Put, взял по аналогии с _GetValue и _SetValue

Andrey: SergKis пишет: Может методы назвать надо было короче Get и Put, взял по аналогии с _GetValue и _SetValue Лучше GetColumn() и PutColumn(xCol)

gfilatov2002: SergKis пишет: пропустил наследованные методы в TTsbata Disable(), Refresh() Исправил и добавил все предложенные методы. SergKis пишет: Может методы назвать надо было короче Полностью полагаюсь на Ваш вкус в этом вопросе. Благодарю за Ваше внимание

Avf: После перехода с версии 17.11 на 17.12 ( и 18.01 ) изменилось поведение CHECKLABEL ( пример c:\MiniGUI\SAMPLES\BASIC\CheckLabel\ ) @ 200,30 CHECKLABEL Label_1 ; WIDTH 200 HEIGHT 24 ; VALUE 'Check Label_1 standard' ; CHECKED ; FONT 'Arial' SIZE 9 BACKCOLOR YELLOW ; ON MOUSEHOVER Rc_Cursor( "MINIGUI_FINGER" ) ; ONCLICK (MsgInfo(HB_VALTOSTR(Form_Main.Label_1.Value)), lChecked := Form_Main.Label_1.Checked, Form_Main.Label_1.Checked := !lChecked ) ранее выдавало значение Form_Main.Label_1.Value = 'Check Label_1 standard', а теперь Form_Main.Label_1.Value = Form_Main.Label_1.Checked Ну соответственно новое значение Form_Main.Label_1.Value не присваивается.

gfilatov2002: Avf пишет: а теперь Form_Main.Label_1.Value = Form_Main.Label_1.Checked Все верно * Enhanced: CHECKLABEL control supports the optional 'Value' property as synonym for the 'Checked' property. You can set/get 'Value' property at runtime as usually. Added a default action for 'On Click' event: it will switch a value similar to the CheckBox control. Suggested and contributed by Sergej Kiselev. Avf пишет: новое значение Form_Main.Label_1.Value не присваивается Пробуйте ONCLICK (Form_Main.Label_1.Caption:='New Value', lChecked := Form_Main.Label_1.Checked, Form_Main.Label_1.Checked := !lChecked )

Avf: Спасибо, не посмотрел изменения.

SergKis: gfilatov2002 Обнаружил, что GetControlHandle(...) возвращает массив Handle, вернее This.Spinner_Year.Handle, т.е. GetProperty(cForm, 'Spinner_Year', 'Handle')[pre2] Тут сделано так: *-----------------------------------------------------------------------------* FUNC Do_OnCtlInit( i, cVar ) *-----------------------------------------------------------------------------* LOCAL nCtlIndex := i LOCAL cCtlName := _HMG_aControlNames[ i ] LOCAL nHandle := iif( ISARRAY( _HMG_aControlHandles[ i ] ), ; _HMG_aControlHandles[ i ][ 1 ], _HMG_aControlHandles[ i ] ) LOCAL nParent := _HMG_aControlParentHandles[ i ] ... что то, нет ясности, где править GetControlHandle(...) или GetProperty(...) ? [/pre2]

SergKis: PS Это меня заклинило\глюкнуло. Надо знать про массив и где нужно делать руками This.Spinner_Year.Handle[1]

SergKis: gfilatov2002 Возможно, будет интересен пример SET OOP ON с event-ами. http://my-files.ru/ii331e Работа с event-ами позволяет создавать This среду для контролов (для тсб тоже). К примеру события 101, 102 вызываются и из меню 1.1, 1.2 ( This - окно ), а с кнопок Button_1, Button_2 This среда контролов.

gfilatov2002: SergKis пишет: Возможно, будет интересен пример SET OOP ON с event-ами. Да, этот пример будет интересен, как и все Ваши примеры использования ООП в Минигуи Благодарю за внимание

SergKis: gfilatov2002 Лишние скобки надо убрать[pre2] METHOD Eval( Block ) CLASS TKeyData ... IF b; Eval( Block, hb_HValueAt( ::aKey, i ), hb_HKeyAt( ::aKey, i ), i ) ELSEIF l; AAdd( a, { hb_HValueAt( ::aKey, i ) } ) ELSE ; AAdd( a, { hb_HValueAt( ::aKey, i ), hb_HKeyAt( ::aKey, i ), i } ) ... METHOD Eval( Block ) CLASS TThrData ... If ::lMT m := ::SGD( 4, i ) IF b; Eval( Block, m[ 2 ], m[ 1 ], i ) ELSEIF l; AAdd( a, { m[ 2 ] } ) ELSE ; AAdd( a, { m[ 2 ], m[ 1 ], i } ) ENDIF ELSE IF b; Eval( Block, hb_HValueAt( ::aKey, i ), hb_HKeyAt( ::aKey, i ), i ) ELSEIF l; AAdd( a, { hb_HValueAt( ::aKey, i ) } ) ELSE ; AAdd( a, { hb_HValueAt( ::aKey, i ), hb_HKeyAt( ::aKey, i ), i } ) ENDIF ENDIF ...[/pre2]

gfilatov2002: SergKis пишет: Лишние скобки надо убрать Убрал, конечно. Благодарю за помощь

gfilatov2002: Опубликована новая сборка 18.02 для BCC 5.51 для компиляторов Harbour и xHarbour Базовый дистрибутив-инсталлятор находится по адресу http://hmgextended.com/files/CONTRIB/hmg-18.02-setup.exe Имеются в наличии также готовые сборки для следующих пар (Си-компилятор+Харбор): - MinGW 7.2.0 32-bit для Harbour 3.2.0dev; - MinGW 7.2.0 64-bit для Harbour 3.4.0dev; - MS VisualC 2017 32-bit для Harbour 3.2.0dev; - Borland/Embarcadero C++ 7.3 (32-bit) для Harbour 3.2.0dev. ссылки на которые будут доступны по Вашему запросу



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