Форум » 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 пишет: Поправьте APP_OOPREPORT для альтернативного задания клавиш Сделал. Благодарю за помощь

SergKis: gfilatov2002 Вспомнил про особенность работы с context menu ( извините, что не сразу ) [pre2] FUNCTION Main() ... :Event( 99, {|ow | ow:Release() } ) // Tsb. Right click - context menu :Event( 90, {|ow | MenuReport(ow) } ) // StatusBar :Event( 91, {|ow | ow:StatusBar:Say('... W A I T ...') } ) ... DEFINE TBROWSE oTabl AT nY, nX ALIAS cAlias WIDTH nW HEIGHT nH CELL ; TOOLTIP 'Right click - context menu' ; COLUMNS {"FIRST", "LAST", "AGE", "STATE", "CITY", "INCOMING", "OUTLAY"} ... :bChange := {|ob| ob:DrawFooters() } :bRClicked := {|p1,p2,p3,ob| p1:=p2:=p3, wPost(90, ob) } ... *-----------------------------------------------------------------------------* FUNCTION _ShowFormContextMenu( cForm, nRow, nCol, lCenter ) *-----------------------------------------------------------------------------* LOCAL xContextMenuParentHandle := 0, hWnd, aRow DEFAULT nRow := -1, nCol := -1, lCenter := .F. If .Not. _IsWindowDefined(cForm) xContextMenuParentHandle := _HMG_xContextMenuParentHandle Else xContextMenuParentHandle := GetFormHandle(cForm ) Endif If xContextMenuParentHandle == 0 MsgMiniGuiError("Context Menu is not defined. Program terminated") EndIf lCenter := lCenter .or. ( nRow == 0 .or. nCol == 0 ) hWnd := GetFormHandle(cForm) If lCenter If nCol == 0 nCol := int( GetWindowWidth (hWnd) / 2 ) EndIf If nRow == 0 nRow := int( GetWindowHeight(hWnd) / 2 ) EndIf ElseIf nRow < 0 .or. nCol < 0 aRow := GetCursorPos() nRow := aRow[1] nCol := aRow[2] EndIf TrackPopupMenu ( _HMG_xContextMenuHandle , nCol , nRow , xContextMenuParentHandle ) RETURN Nil *-----------------------------------------------------------------------------* STATIC FUNC MenuReport( oWnd, aTxt, lPost, nRow, nCol, lCenter, nZeroLen ) *-----------------------------------------------------------------------------* LOCAL cWnd := oWnd:Name LOCAL nItm := 0, cNam, cImg, i LOCAL lDis := .F. LOCAL bAct := {|| nItm := Val(This.Name) } Default nZeroLen := 4, lPost := .T. Default aTxt := { ; 'Column report FIRST', ; 'Column report LAST ', ; 'Column report AGE ', ; 'Column report STATE', ; 'Column report CITY ', ; 'Column report STATE + Left(LAST, 1)', ; 'Column report CITY + Left(LAST, 1) ' ; } DEFINE CONTEXT MENU OF &cWnd For i := 1 To len(aTxt) cNam := StrZero(i, nZeroLen) If i > 9 cImg := Nil Else cImg := 'n' + hb_ntos(i) EndIf _DefineMenuItem( aTxt[ i ], bAct, cNam, cImg, .F., lDis, , , , .F., .F.) NEXT SEPARATOR MENUITEM 'Exit' ACTION NIL END MENU _ShowFormContextMenu(cWnd, nRow, nCol, lCenter ) DEFINE CONTEXT MENU OF &cWnd END MENU DO EVENTS If nItm > 0 .and. lPost oWnd:PostMsg(nItm) EndIf RETURN nItm [/pre2]

gfilatov2002: SergKis пишет: Вспомнил про особенность работы с context menu Спасибо


SergKis: SergKis пишет Вспомнил про особенность работы с context menu Особенность в том, что работая в context menu (думаю с обычным будет так же) MENUITEM ... ACTION wPost() собственные сообщения рабатают, а сообщения прорисовки кнопок ToolBar теряются. В данном примере не снимается с кнопки ToolBar состояние Disable, а Caption 1ой кнопки срабатывает. Т.е. надо выйти из меню и потом работать, что показано в примере.

gfilatov2002: Выпущена новая сборка 18.03 для BCC 5.51 для компиляторов Harbour и xHarbour Базовый дистрибутив-инсталлятор находится по адресу http://hmgextended.com/files/CONTRIB/hmg-18.03-setup.exe Рекомендуется к использованию Выпуск новых сборок опложен на неопределенный период вследствие финансовых и др. проблем Благодарю за Ваше внимание и поддержку

Andrey: Ура ! Наконец то дождались !

Alw Spencer: gfilatov2002 пишет: Выпущена новая сборка 18.03 Спасибо и Приветствую Просьба Есть ли возможность получить сборки для компиляторов MinGW32 и MinGW64? Спасибо.

gfilatov2002: Alw Spencer пишет: Есть ли возможность получить сборки для компиляторов MinGW32 и MinGW64? Да, это возможно на платной основе, я уже подготовил такие сборки для свежего релиза. Заплатите небольшой взнос на развитие Минигуи через сервис PayPal, и я пришлю Вам ссылки для выкачки этих сборок.

Andrey: Andrey пишет: #define CLR_OK RGB( 238, 89,149 ) // оранжевый, как Одноклассники Ошибку допустил. Нужно RGB( 238, 130, 8 )

gfilatov2002: Всем кому это интересно В честь Дня освобождения Одессы, который отмечается сегодня, подготовил 4-ю бету для новой сборки библиотеки со следующим списком изменений [pre2] * Fixed: Problem with a showing of the additional information in the ErrorLog at using of xHarbour compiler (introduced in the build 2.3.9). Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Basic\ShowDetailError) * Fixed: Program crash at the exit from a Preview window in a graph printing module at using of xHarbour compiler. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Basic\Charts_3) * Enhanced: Added the helpful C-level function GetLastError(). Above function returns the error code of the last API function called. Most API functions merely return a number saying that an error occured, but not what kind of error. This function will return a universal error code identifying the type of error that last occured. Note that most functions set the code to 0 (success) if the function completes successfully, erasing the previous error code. Therefore, be sure to check this error code immediately after an error is found. Suggested and contributed by user on the Russian HMG forum. (see demo in folder \samples\Basic\COMMON_DIALOGS) * Modified: The Spinner control supports the similar tooltip for the arrows as well for an edit field. Above behavior is similar to DatePicker control. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Basic\SPINNER) * Modified: The minor optimizations for a MiniGUI core reducing in the some functions: replace the expression hb_default( @<var>, <value> ) with hb_defaultValue( <var>, <value> ). It's useful for two main reasons: 1) we do not damage original parameter value; 2) if parameter is used only once then it's a little bit faster. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: HBPrinter library v.2.44: - Fixed: conflict with xHarbour internal class NUMERIC (nasty bug). Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: HbSQLite3 library: - update for using SQLITE3 version 3.23.0 (from 3.23.0dev). Contributed by Grigory Filatov <gfilatov@inbox.ru> * New: 'Get User Locale Numerics' sample. Based upon a contribution of HMG user Edward. Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Advanced\GetUserLocaleInfo) * Updated: 'Check User Login in the transparent form' sample: - retrieve the image sizes from an application's resource. Requested by Verchenko Andrey <verchenkoag@gmail.com>. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Basic\Login_2) * Updated: 'StatusBar with ProgressBar' sample: - use the function SuppressKeyAndMouseEvents() for blocking of the mouse and keyboard pressing in a loop. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Basic\StatusBar_ProgressBar) * Updated: 'DBF Header Info' sample: - code cleaning for warnings with Harbour switch -w3. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Advanced\dbfHeaderInfo) * Updated: 'Print Pie Graph' sample: updated the data for March 2018. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo.prg in folder \samples\Basic\GraphPrint) * Updated: MAINDEMO (SYNTAX I) sample: - updated a graph printing for compatibility with xHarbour. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see at folder \samples\Basic\MAINDEMO_(SYNTAX_I)) [/pre2] Благодарю за Ваше внимание

Andrey: Ждем ! Новая версия МиниГуи 18.03 Ошибка в методе oBrw:ExcelOle(cXlsFile, ...) !!! Отрезает имя файла, когда задаёшь полный путь и длинное имя файла. Хотя в методе oBrw:Excel2() всё отлично работает... Имя файла делаю так: [pre2] cPath := GetStartUpFolder() + "\" // путь записи файла cMaska := "Test2_ExcelOle" // шаблон файла cXlsFile := cPath + cMaska + "_" + DTOC( DATE() ) + "_" cXlsFile += SUBSTR( CharRepl( ":", TIME(), "-" ), 1, 5 ) //+ ".xls"[/pre2] И почему то пишет в папку Мои документы, а не C:\MiniGUI\SAMPLES\Advanced\Tsb_Brw2xml\Test2_ExcelOle_17.04.2018_09-48 Может это особенность Excel 2003 ? Есть кто может это проверить на другом Excel 2003 или новее ? Григорий, пример отослал на почту ! P.S. Попробовал на Excel 2007 - то же самое, режет имя до "Test2_ExcelOle_17.04"

gfilatov2002: Не удержался и выпустил новую исправленную сборку 18.04 для BCC 5.51 для компиляторов Harbour и xHarbour Базовый дистрибутив-инсталлятор находится по адресу http://hmgextended.com/files/CONTRIB/hmg-18.04-setup.exe Рекомендуется к использованию Благодарю за Ваше внимание и поддержку P.S. В последний момент в эту сборку были включены изменения в библиотеку TSBrowse по просьбе Андрея...

Andrey: gfilatov2002 пишет: P.S. В последний момент в эту сборку были включены изменения в библиотеку TSBrowse по просьбе Андрея... СПАСИБО ! Буду тестировать этот oBrw:ExcelOle() ...

SergKis: gfilatov2002 Поправьте пожалуйста [pre2] h_objmisc.prg *-----------------------------------------------------------------------------* FUNCTION Do_Obj( nHandle, bBlock, p1, p2, p3 ) *-----------------------------------------------------------------------------* LOCAL o IF hmg_IsWindowObject( nHandle ) o := hmg_GetWindowObject( nHandle ) IF ISBLOCK( bBlock ) IF o:IsWindow RETURN Do_WindowEventProcedure ( bBlock, o:Index, o, p1, p2, p3 ) ELSE RETURN Do_ControlEventProcedure ( bBlock, o:Index, o, p1, p2, p3 ) ENDIF ENDIF ENDIF RETURN o Пример APP_OOPREPORT\demo.prg, заменить *-----------------------------------------------------------------------------* FUNC wPost( nEvent, nIndex, xParam ) *-----------------------------------------------------------------------------* LOCAL oWnd If HB_ISOBJECT(nIndex) oWnd := _WindowObj(nIndex:cParentWnd) oWnd:SetProp(nEvent, xParam) oWnd:PostMsg(nEvent) Else DEFAULT nEvent := val( This.Name ) If nEvent > 0 oWnd := (ThisWindow.Object) oWnd:SetProp(nEvent, xParam) oWnd:PostMsg(nEvent, nIndex) EndIf EndIf RETURN Nil *-----------------------------------------------------------------------------* FUNC wSend( nEvent, nIndex, xParam ) *-----------------------------------------------------------------------------* LOCAL oWnd If HB_ISOBJECT(nIndex) oWnd := _WindowObj(nIndex:cParentWnd) oWnd:SetProp(nEvent, xParam) oWnd:SendMsg(nEvent) Else DEFAULT nEvent := val( This.Name ) If nEvent > 0 oWnd := (ThisWindow.Object) oWnd:SetProp(nEvent, xParam) oWnd:SendMsg(nEvent, nIndex) EndIf EndIf RETURN Nil [/pre2] Это для передачи параметров в блок кода события. :Event( 1, {|ow,ky| myEvent(ow, ky) } ) В блоке кода извлекаем параметры Func myEvent( oW, nEvent ) xParam := oW:GetProp(nEvent) ...

gfilatov2002: SergKis пишет: Поправьте пожалуйста Добавил эти корректировки... Благодарю за помощь

gfilatov2002: Всем кому это интересно Подготовил первый RC для новой сборки библиотеки со следующим списком изменений [pre2] * Fixed: Program crash at using of ANIMATERES User Component (introduced in the build 17.11). Problem was reported by Pierpaolo Martinello. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Advanced\AVI_Animation) * New: Added possibility to set/get of the NON CLIENT attributes of windows at runtime. You can get the following properties with the functions: - GetWindowBorderSize(); - GetScrollBarSize(); - GetTitleBarWidth() and GetTitleBarHeight(); - GetMenuBarSize(). You can set these properties with the commands: SET WINDOW BORDER TO <nPixels> SET SCROLLBAR [SIZES] TO <nPixels> SET TITLEBAR [ WIDTH | HEIGHT ] TO <nPixels> SET [STANDARD] MENU [SIZES] TO <nPixels> Warning: Settings of the above attributes will affect on the all opened windows of the external applications also. Please use these possibilities with a caution. Added the new commands to support a font tuning: SET TITLEBAR FONT TO <fontname>, <fontsize> [BOLD] [CHARSET <n>] SET [STANDARD] MENU FONT TO <fname>,<fsize> [BOLD] [CHARSET <n>] SET STATUSBAR FONT TO <fontname>, <fontsize> [BOLD] [CHARSET <n>] SET MESSAGEBOX FONT TO <fontname>, <fontsize> [BOLD] [CHARSET <n>] Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Basic\SETNONCLIENT) * Modified: A minor optimization in the Browse control: - added static function RestoreWorkArea( <Alias> ). Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Basic\DATA_BOUND) * Updated: Internal OOP: improved function Do_Obj(). Suggested and contributed by Sergej Kiselev (see demo in folder \samples\Advanced\APP_OOPREPORT) * Updated: Config file of hbmk2 utility: - obsolete HbOle library is not required for Harbour anymore. It was replaced with using of the hbwin and xhb contrib libraries. Remark: It was a postponed modification. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see minigui.hbc in folder \harbour\bin) * Updated: PScript library source code (see in folder \Source\PageScript). Contribution of Richard Visscher <richard/at/irvis.com> (see demo in folder \samples\Advanced\PageScript and help file PageScript.chm in folder \Doc) * Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG: - New: added method SetKeyEvent() in TSColumn class. Sample code: oBrw:aColumns[nCol]:SetKeyEvent(VK_F2, {|og,vk| ProcessKey(og,vk)}) Suggested and contributed by SergKis. - Updated: minor corrections in the method ExcelOle(). Requested by Verchenko Andrey <verchenkoag@gmail.com>. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Advanced\Tsb_Brw2xml) * Updated: HbSQLite3 library: - update for using SQLITE3 version 3.24.0dev (from 3.23.1). Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: Harbour Compiler 3.2.0dev (SVN 2018-05-11 12:23): * Updated: OpenSSL wrapper for using of the version 1.0.2n. Contributed by Grigory Filatov <gfilatov@inbox.ru> (look at ReadMe.txt in folder \harbour) * Updated: HMGS-IDE v.1.4.3.3 Project Manager and Two-Way Visual Form Designer. Contributed by Grigory Filatov <gfilatov@inbox.ru> (look for what's new at changelog.txt in folder \Ide) * New: 'My Error Function' sample is based upon the Harbour DerError function. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Basic\MyErrorFunc_2) * New: 'Virtual Keyboard' sample. Based upon a contribution of Paulo Toledo. (see in folder \samples\Basic\VIRTUALKBD) * New: 'Process Terminator' sample is based upon the WMI command line 'process <ProcessId> delete'. Contributed by Pierpaolo Martinello <pier.martinello[at]alice.it> (see in folder \samples\Advanced\PROCESS_TERMINATOR) * Updated: 'Calculator' sample: the numerous improvements. Don't miss this very interesting expansion! Contributed by Pierpaolo Martinello <pier.martinello[at]alice.it> (see in folder \samples\Basic\Calc) * Updated: OLE sample: - New: added Excel 3D Chart creation; - Modified: using of win_OleAuto class from hbwin library instead of TOleAuto class from HbOle library. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Basic\OLE) * Updated: 'Bmp To Jpg' sample: - use BosTaurus library for saving of a BMP image to JPEG format instead of an external DLL. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Advanced\BmpToJpg) * Updated: 'Ftp Client' sample based upon the TIP library: - restyling of site Manager with ultimation of code for mask/unmask password; - added the ability to set up the initial folder on a server; - added the ability to enable/disable a log file; - added columns sort feature on a client side; - added backward navigation on a server side. Contributed by Pierpaolo Martinello <pier.martinello[at]alice.it> (see in folder \samples\Advanced\FtpClient) * Updated: 'Print List' samples: fixed a crash at Excel closing. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Basic\print_list) * Updated: The following samples are revised for compatibility with the recent Minigui modifications: - \samples\Basic\CONTACTOS_3; - \samples\Advanced\CONTROL_PANEL; - \samples\Advanced\GregorianCalendar; - \samples\Advanced\ReadXLS; - \samples\Advanced\TSBrowse; - \samples\Applications\Daily; - \samples\Applications\DBFview; - \samples\Applications\MiniGraph. Contributed by Grigory Filatov <gfilatov@inbox.ru> [/pre2] Благодарю за Ваше внимание

SergKis: gfilatov2002 У себя сделал правку (для обхода picture при lMultiLine == .T.)[pre2] METHOD DrawLine( xRow ) CLASS TSBrowse ... If ::lIsArr .and. ( ::lAppendMode .or. ::nAt > Len( ::aArray ) ) uData := "" // append mode for arrays Else uData := Eval( oColumn:bData ) EndIf lMultiLine := Valtype( uData ) == "C" .and. At( Chr( 13 ), uData ) > 0 nVertText := 0 lCheck := ( oColumn:lCheckBox .and. ValType( uData ) == "L" .and. oColumn:lVisible ) ... ElseIf ! lCheck .and. oColumn:lEmptyValToChar .and. Empty( uData ) uData := "" ElseIf Empty( cPicture ) uData := If( Valtype( uData ) != "C", cValToChar( uData ), uData ) ElseIf lMultiLine Else uData := If( uData == NIL, "", Transform( uData, cPicture ) ) EndIf nAlign := If( ValType( nAlign ) == "B", Eval( nAlign, nJ, Self ), nAlign ) ... EndIf // lMultiLine := Valtype( uData ) == "C" .and. At( Chr( 13 ), uData ) > 0 If oColumn:l3DTextCell != Nil ... METHOD DrawSelect( xRow ) CLASS TSBrowse ... lAdjBmp := oColumn:lAdjBmp nAlign := oColumn:nAlign lOpaque := .t. lMulti := .F. If nJ == 1 .and. ! Empty( ::hBmpCursor ) uBmpCell := ::hBmpCursor ... If ::lIsArr .and. ( ::lAppendMode .or. ::nAt > Len( ::aArray ) ) uData := "" // append mode for arrays Else uData := Eval( oColumn:bData ) EndIf lMulti := Valtype( uData ) == "C" .and. At( Chr( 13 ), uData ) > 0 cPicture := If( ValType( oColumn:cPicture ) == "B", Eval( oColumn:cPicture, ::nAt, nJ, Self ), ; oColumn:cPicture ) lCheck := ( oColumn:lCheckBox .and. ValType( uData ) == "L" .and. oColumn:lVisible ) ... ElseIf ! lCheck .and. oColumn:lEmptyValToChar .and. Empty( uData ) uData := "" ElseIf Empty( cPicture ) uData := If( Valtype( uData ) != "C", cValToChar( uData ), uData ) ElseIf lMulti Else uData := If( uData == NIL, "", Transform( uData, cPicture ) ) EndIf EndIf ... Default hBitMap := 0 // lMulti := Valtype( uData ) == "C" .and. At( Chr( 13 ), uData ) > 0 If lCheck ... [/pre2]

SergKis: gfilatov2002 Добавить для получения массивом установленных значений :SetProp[pre2] CLASS TKeyData ... _METHOD GetAll( lAll ) ... METHOD GetAll( lAll ) CLASS TKeyData LOCAL aRet := {} If lAll == Nil; ::Eval({|val,key| AAdd(aRet, { val, key }) }) ElseIf lAll ; ::Eval({|val | AAdd(aRet, val ) }) Else ; ::Eval({|val,key| AAdd(aRet, { key, val }) }) EndIf RETURN aRet ... CLASS TThrData ... _METHOD GetAll( lAll ) ... METHOD GetAll( lAll ) CLASS TThrData LOCAL aRet := {} If lAll == Nil; ::Eval({|val,key| AAdd(aRet, { val, key }) }) ElseIf lAll ; ::Eval({|val | AAdd(aRet, val ) }) Else ; ::Eval({|val,key| AAdd(aRet, { key, val }) }) EndIf RETURN aRet ... CLASS TWndData ... METHOD AllProp( lArray ) INLINE ::oProp:GetAll( lArray ) ... [/pre2] Следующее предложение не так однозначно (в метод ControlAssign cMessage получаем в upper из __GetMessage() )[pre2] CLASS TWndData ... VAR oHand AS OBJECT VAR oNameUpper AS OBJECT EXPORTED: ... METHOD Def( nIndex, cName, nHandle, nParent, cType, cVar ) INLINE ( ; ... ::oName := oKeyData(), ::oHand := oKeyData(), ; ::oNameUpper := oKeyData(), ; ::oProp := oKeyData(), hmg_SetWindowObject( ::nHandle, Self ), ; ... METHOD GetObj( xName ) INLINE iif( HB_ISCHAR( xName ), ::oName:Get( xName ), ; ::oHand:Get( xName ) ) METHOD GetObjByName( cName ) INLINE ::oNameUpper:Get( upper(cName) ) // Destructor METHOD Destroy() INLINE ( ; ... ::oName := iif( HB_ISOBJECT( ::oName ), ::oName:Destroy() , Nil ), ; ::oNameUpper := iif( HB_ISOBJECT( ::oNameUpper ), ::oNameUpper:Destroy() , Nil ), ; ::oHand := iif( HB_ISOBJECT( ::oHand ), ::oHand:Destroy() , Nil ), ; ... #endif ERROR HANDLER ControlAssign ENDCLASS ... METHOD ControlAssign( xValue ) CLASS TWndData LOCAL cMessage, uRet, lError, o cMessage := ALLTRIM( UPPER( __GetMessage() ) ) lError := .T. If PCOUNT() == 0 o := ::GetObjByName( cMessage ) If HB_ISOBJECT(o) uRet := _GetValue( , , o:nIndex ) lError := .F. EndIf ElseIf PCOUNT() == 1 o := ::GetObjByName( SUBSTR( cMessage, 2 ) ) If HB_ISOBJECT(o) _SetValue( , , xValue, o:nIndex ) uRet := _GetValue( , , o:nIndex ) lError := .F. EndIf EndIf If lError uRet := Nil ::MsgNotFound( cMessage ) EndIf RETURN uRet ... CLASS TCnlData INHERIT TWndData ... METHOD Set() INLINE ( iif( HB_ISOBJECT( ::oWin:oName ), ::oWin:oName:Set ( ::cName , Self ), ), ; iif( HB_ISOBJECT( ::oWin:oNameUpper ), ::oWin:oNameUpper:Set( upper(::cName), Self ), ), ; iif( HB_ISOBJECT( ::oWin:oHand ), ::oWin:oHand:Set ( ::nHandle , Self ), ) ) METHOD Del() INLINE ( iif( HB_ISOBJECT( ::oWin:oName ), ::oWin:oName:Del ( ::cName ), ), ; iif( HB_ISOBJECT( ::oWin:oNameUpper ), ::oWin:oNameUpper:Del( upper(::cName) ), ), ; iif( HB_ISOBJECT( ::oWin:oHand ), ::oWin:oHand:Del ( ::nHandle ), ) ) ... тогда это можно использовать так @ 90, 10 LABEL Label_3 WIDTH 100 HEIGHT 20 VALUE '' ; CENTERALIGN VCENTERALIGN TRANSPARENT ... *-----------------------------------------------------------------------------* STATIC FUNCTION SayToWait( oWnd, nEvent ) *-----------------------------------------------------------------------------* LOCAL oTsb := oWnd:GetProp( nEvent ) LOCAL nDay := oTsb:GetValue() LOCAL dDate := CalendarValue() LOCAL hForm, oForm FOR EACH hForm IN _HMG_aFormHandles oForm := _WindowObj( hForm ) If HB_ISOBJECT( oForm ) If left( oForm:Name, 3 ) == '_w_' oForm:SendMsg(93) // timers stop // oForm:GetObj('Label_3'):Value := DtoC(dDate) // _SetValue( 'Label_3', oForm:Name, DtoC(dDate) ) oForm:Label_3 := DtoC(dDate) ? oForm:Name, 'Label_3 =', oForm:Label_3 oForm:SendMsg(91) // timers start EndIf EndIf NEXT RETURN Nil [/pre2]

gfilatov2002: SergKis пишет: для получения массивом установленных значений :SetProp Принято. SergKis пишет: в метод ControlAssign cMessage получаем в upper из __GetMessage() Принято, кроме установки данных в upper Благодарю за помощь

SergKis: gfilatov2002 SergKis пишет обхода picture при lMultiLine == .T. Ситуация возникает, к примеру, если в 2х строчной колонке первая строка 25 байт (краткое наименование), вторая строка 50 байт (адрес). Если Picture короткий (это случается при взятии данных из справочника по ID или по краткому наим. методом LoadFields), то вторая строка через Transform обрезается. Что бы этого избежать приходится уст. Picture Repl('X', Len(<кр.наименование>)+Len(<адрес>)+Len(CRLF), что кажется лишним. Обход Transform(cPicture) при lMulti == .T. все решает



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