Автор | Сообщение |
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: 1264
Зарегистрирован: 11.02.10
|
|
Отправлено: 24.03.18 20:17. Заголовок: SergKis пишет: Попр..
SergKis пишет: цитата: | Поправьте APP_OOPREPORT для альтернативного задания клавиш |
| Сделал. Благодарю за помощь
| |
|
SergKis
|
| постоянный участник
|
Пост N: 1799
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.03.18 12:24. Заголовок: gfilatov2002 Вспомн..
gfilatov2002 Вспомнил про особенность работы с context menu ( извините, что не сразу ) Скрытый текст
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
|
| |
|
gfilatov2002
|
| moderator
|
Пост N: 1265
Зарегистрирован: 11.02.10
|
|
Отправлено: 25.03.18 12:56. Заголовок: SergKis пишет: Вспо..
SergKis пишет: цитата: | Вспомнил про особенность работы с context menu |
| Спасибо
| |
|
SergKis
|
| постоянный участник
|
Пост N: 1800
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.03.18 13:41. Заголовок: SergKis пишет Вспомн..
SergKis пишет цитата: | Вспомнил про особенность работы с context menu |
| Особенность в том, что работая в context menu (думаю с обычным будет так же) MENUITEM ... ACTION wPost() собственные сообщения рабатают, а сообщения прорисовки кнопок ToolBar теряются. В данном примере не снимается с кнопки ToolBar состояние Disable, а Caption 1ой кнопки срабатывает. Т.е. надо выйти из меню и потом работать, что показано в примере.
| |
|
gfilatov2002
|
| moderator
|
Пост N: 1268
Зарегистрирован: 11.02.10
|
|
Отправлено: 28.03.18 09:36. Заголовок: Выпущена новая сборк..
Выпущена новая сборка 18.03 для BCC 5.51 для компиляторов Harbour и xHarbour Базовый дистрибутив-инсталлятор находится по адресу http://hmgextended.com/files/CONTRIB/hmg-18.03-setup.exe Рекомендуется к использованию Выпуск новых сборок опложен на неопределенный период вследствие финансовых и др. проблем Благодарю за Ваше внимание и поддержку
| |
|
Andrey
|
| постоянный участник
|
Пост N: 5789
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.03.18 10:33. Заголовок: Ура ! Наконец то дож..
Ура ! Наконец то дождались !
| |
|
Alw Spencer
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 31.03.18 22:03. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Выпущена новая сборка 18.03 |
| Спасибо и Приветствую Просьба Есть ли возможность получить сборки для компиляторов MinGW32 и MinGW64? Спасибо.
| |
|
gfilatov2002
|
| moderator
|
Пост N: 1271
Зарегистрирован: 11.02.10
|
|
Отправлено: 31.03.18 22:39. Заголовок: Alw Spencer пишет: ..
Alw Spencer пишет: цитата: | Есть ли возможность получить сборки для компиляторов MinGW32 и MinGW64? |
| Да, это возможно на платной основе, я уже подготовил такие сборки для свежего релиза. Заплатите небольшой взнос на развитие Минигуи через сервис PayPal, и я пришлю Вам ссылки для выкачки этих сборок.
| |
|
Andrey
|
| постоянный участник
|
Пост N: 5805
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.04.18 23:08. Заголовок: Andrey пишет: #defi..
Andrey пишет: цитата: | #define CLR_OK RGB( 238, 89,149 ) // оранжевый, как Одноклассники |
| Ошибку допустил. Нужно RGB( 238, 130, 8 )
| |
|
gfilatov2002
|
| moderator
|
Пост N: 1274
Зарегистрирован: 11.02.10
|
|
Отправлено: 10.04.18 11:00. Заголовок: Всем кому это интере..
Всем кому это интересно В честь Дня освобождения Одессы, который отмечается сегодня, подготовил 4-ю бету для новой сборки библиотеки со следующим списком изменений Скрытый текст
* 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))
| Благодарю за Ваше внимание
| |
|
Andrey
|
| постоянный участник
|
Пост N: 5818
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.04.18 10:39. Заголовок: Ждем ! :sm36: Нов..
Ждем ! Новая версия МиниГуи 18.03 Ошибка в методе oBrw:ExcelOle(cXlsFile, ...) !!! Отрезает имя файла, когда задаёшь полный путь и длинное имя файла. Хотя в методе oBrw:Excel2() всё отлично работает... Имя файла делаю так: cPath := GetStartUpFolder() + "\" // путь записи файла cMaska := "Test2_ExcelOle" // шаблон файла cXlsFile := cPath + cMaska + "_" + DTOC( DATE() ) + "_" cXlsFile += SUBSTR( CharRepl( ":", TIME(), "-" ), 1, 5 ) //+ ".xls" И почему то пишет в папку Мои документы, а не 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
|
| moderator
|
Пост N: 1275
Зарегистрирован: 11.02.10
|
|
Отправлено: 18.04.18 10:45. Заголовок: Не удержался и выпус..
Не удержался и выпустил новую исправленную сборку 18.04 для BCC 5.51 для компиляторов Harbour и xHarbour Базовый дистрибутив-инсталлятор находится по адресу http://hmgextended.com/files/CONTRIB/hmg-18.04-setup.exe Рекомендуется к использованию Благодарю за Ваше внимание и поддержку P.S. В последний момент в эту сборку были включены изменения в библиотеку TSBrowse по просьбе Андрея...
| |
|
Andrey
|
| постоянный участник
|
Пост N: 5820
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.04.18 18:06. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | P.S. В последний момент в эту сборку были включены изменения в библиотеку TSBrowse по просьбе Андрея... |
| СПАСИБО ! Буду тестировать этот oBrw:ExcelOle() ...
| |
|
SergKis
|
| постоянный участник
|
Пост N: 1819
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.05.18 20:35. Заголовок: gfilatov2002 Поправ..
gfilatov2002 Поправьте пожалуйста 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 Это для передачи параметров в блок кода события. :Event( 1, {|ow,ky| myEvent(ow, ky) } ) В блоке кода извлекаем параметры Func myEvent( oW, nEvent ) xParam := oW:GetProp(nEvent) ...
| |
|
gfilatov2002
|
| moderator
|
Пост N: 1278
Зарегистрирован: 11.02.10
|
|
Отправлено: 16.05.18 20:57. Заголовок: SergKis пишет: Попр..
SergKis пишет: Добавил эти корректировки... Благодарю за помощь
| |
|
gfilatov2002
|
| moderator
|
Пост N: 1280
Зарегистрирован: 11.02.10
|
|
Отправлено: 24.05.18 11:54. Заголовок: Всем кому это интере..
Всем кому это интересно Подготовил первый RC для новой сборки библиотеки со следующим списком изменений Скрытый текст
* 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>
| Благодарю за Ваше внимание
| |
|
SergKis
|
| постоянный участник
|
Пост N: 1824
Зарегистрирован: 17.02.12
|
|
Отправлено: 27.05.18 10:05. Заголовок: gfilatov2002 У себя..
gfilatov2002 У себя сделал правку (для обхода picture при lMultiLine == .T.) 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 ...
| |
|
SergKis
|
| постоянный участник
|
Пост N: 1834
Зарегистрирован: 17.02.12
|
|
Отправлено: 03.06.18 11:44. Заголовок: gfilatov2002 Добави..
gfilatov2002 Добавить для получения массивом установленных значений :SetProp 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 ) ... Следующее предложение не так однозначно (в метод ControlAssign cMessage получаем в upper из __GetMessage() ) 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
| |
|
gfilatov2002
|
| moderator
|
Пост N: 1281
Зарегистрирован: 11.02.10
|
|
Отправлено: 03.06.18 19:54. Заголовок: SergKis пишет: для ..
SergKis пишет: цитата: | для получения массивом установленных значений :SetProp |
| Принято. SergKis пишет: цитата: | в метод ControlAssign cMessage получаем в upper из __GetMessage() |
| Принято, кроме установки данных в upper Благодарю за помощь
| |
|
SergKis
|
| постоянный участник
|
Пост N: 1835
Зарегистрирован: 17.02.12
|
|
Отправлено: 03.06.18 20:32. Заголовок: gfilatov2002 SergKi..
gfilatov2002 SergKis пишет цитата: | обхода picture при lMultiLine == .T. |
| Ситуация возникает, к примеру, если в 2х строчной колонке первая строка 25 байт (краткое наименование), вторая строка 50 байт (адрес). Если Picture короткий (это случается при взятии данных из справочника по ID или по краткому наим. методом LoadFields), то вторая строка через Transform обрезается. Что бы этого избежать приходится уст. Picture Repl('X', Len(<кр.наименование>)+Len(<адрес>)+Len(CRLF), что кажется лишним. Обход Transform(cPicture) при lMulti == .T. все решает
| |
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
|