Форум » 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 пишет: почему не проходит REQUEST HB_LANG_LVWIN Попробуйте использовать REQUEST HB_LANG_LV

SergKis: gfilatov2002 пишет REQUEST HB_LANG_LV Спасибо , собралось Нашел еще REQUEST HB_CODEPAGE_LVWIN это что ? Как то запутали все, бум разбирать, пробовать, бум

SergKis: gfilatov2002 С языками получилось в тсб все как надо Пример с 4-мя кодировками (Edit работает по ним) тут https://TransFiles.ru/yp6ui Языковые тексты из prg идут на ура (как должно быть при utf8) Спасибо за unicode версию


SergKis: PS REQUEST HB_LANG_LV Это Dos коировка REQUEST HB_CODEPAGE_LVWIN Это 1257 кодировка, которая нужна и в примере задействовал, все ok!

SergKis: gfilatov2002 Не могу найти (уже глаза сломал), где ::lDontChange становится .T. Делаю в примере (:lEdit := .T. все колонки и в показ добавил колонку MARRIED)[pre2] :lNoKeyChar := .T. // надо ставить иначе, lEdit := .T. по нажатию вкл. getbox на корркетировку :UserKeys(VK_1, {|ob| MsgBox( "Test " + ob:GetColumn(ob:nCell):cName + CRLF, ob:cParentWnd ) } ) :bLDblClick := {|up1,up2,nfl,ob| up1:=up2:=nfl, ob:PostMsg(WM_KEYDOWN, VK_RETURN, 0)} :UserKeys(VK_RETURN, {|ob| IF ob:GetColumn(ob:nCell):cName == "STREET" _wPost(111, ob:cParentWnd, ob) ELSEIF ob:GetColumn(ob:nCell):lCheckBox //cName == "MARRIED" ob:PostMsg( WM_KEYDOWN, VK_SPACE, 0 ) ; DO EVENTS ELSE _wPost(110, ob:cParentWnd, ob) ENDIF RETURN Nil } ) В :HandleEvent() попадаем сюда, выделено METHOD HandleEvent( nMsg, nWParam, nLParam ) CLASS TSBrowse ... ELSEIF nMsg == WM_CHAR .AND. ::lEditing RETURN 0 ELSEIF nMsg == WM_CHAR RETURN ::KeyChar( nWParam, nLParam ) ELSEIF nMsg == WM_KEYDOWN .AND. ::lDontChange RETURN 0 ELSEIF nMsg == WM_KEYDOWN RETURN ::KeyDown( nWParam, nLParam ) ... и отрубаются назначенные клавиши Enter, Spase, dblClick [/pre2] Может, свежим взглядом глянете ?

SergKis: PS Причем, отключаются только (фокус курсор установлен) на колонке логической MARRIED, на других все назначения клавиш и dblclick работают

SergKis: PS2 Пока писал, понял, дело не в ::lDontChange (но где она становится .T., все равно, интересно), а в :lNoKeyChar := .T.. По ней откл. метод ::KeyChar(), а в нем ::Edit() для логической колонки. Установленные события срабатывают, не работает ob:PostMsg( WM_KEYDOWN, VK_SPACE, 0 ), т.к. отключен ::KeyChar(). Тут что то надо ..., подумать

SergKis: SergKis пишет Тут что то надо ..., подумать "Все уже украдено придумано до нас" [pre2] :UserKeys(VK_RETURN, {|ob| IF ob:GetColumn(ob:nCell):cName == "STREET" _wPost(111, ob:cParentWnd, ob) ELSEIF ob:GetColumn(ob:nCell):lCheckBox //cName == "MARRIED" ob:PostEdit(!ob:GetValue(ob:nCell), ob:nCell) ELSE _wPost(110, ob:cParentWnd, ob) ENDIF RETURN Nil } ) [/pre2]

SergKis: SergKis пишет Тут что то надо ..., подумать Похоже надо, т.к. на самой колонке с :lCheckBox == .T. не работает LDblClick, не выходит на MsgBox() а клавиши работают, т.е. имеем[pre2] // :lEdit := .T. на всех колонках :lNoKeyChar := .T. :UserKeys(VK_1, {|ob,lo| MsgBox( "Test " + ob:GetColumn(ob:nCell):cName + CRLF, ob:cParentWnd ) }) :bLDblClick := {|up1,up2,nfl,ob| up1:=up2:=nfl, MsgBox(":bLDblClick press", "INFO"), ; ob:PostMsg( WM_KEYDOWN, VK_RETURN, 0 ) } :UserKeys(VK_RETURN, {|ob| IF ob:GetColumn(ob:nCell):lCheckBox //cName == "MARRIED" ob:PostEdit(!ob:GetValue(ob:nCell), ob:nCell) RETURN Nil // завершить работу метода :KeyDown(), вкл. поле на корректировку ENDIF RETURN .T. // продолжить работу метода :KeyDown() } ) [/pre2]

SergKis: PS Не туда дописал [pre2] RETURN Nil // завершить работу метода :KeyDown(), вкл. поле на корректировку ENDIF RETURN .T. // продолжить работу метода :KeyDown(), вкл. поле на корректировку [/pre2]

SergKis: SergKis пишет // :lEdit := .T. на всех колонках :lNoKeyChar := .T. Может я рвусь в открытую дверь ? И есть способ отключить метод :KeyChar() для выключения авто корректировки в GetBox при нажатии букв, цифр. Пытаюсь понять некоторые моменты, отличающиеся в работе тек. версии hmg и своей раб. версией, т.к. при нажатии букв, цифр вкл. другие режимы работы.

SergKis: gfilatov2002 Можно чуток поправить [pre2] FUNCTION _GetStatusItemWidth( hWnd, nItem ) ... RETURN iif( !Empty(nItem), aItemWidth [nItem], aItemWidth ) h_objects.prg CLASS TStbData INHERIT TCnlData ... METHOD Width ( nItem, nWidth ) INLINE iif( HB_ISNUMERIC( nWidth ) .AND. nWidth > 0, ; _SetStatusWidth ( ::oWin:cName, hb_defaultValue( nItem, 1 ), nWidth ), ; _GetStatusItemWidth( ::oWin:nHandle, nItem ) ) [/pre2]

SergKis: Еще[pre2] METHOD KeyChar( nKey, nFlags ) CLASS TSBrowse LOCAL cComp, lProcess, cTypeCol LOCAL ix LOCAL lNoKeyChar := ::lNoKeyChar DEFAULT ::nUserKey := nKey cTypeCol := iif( ::nLen == 0, "U", ValType( ::bDataEval( ::aColumns[ ::nCell ] ) ) ) // Modificado por Carlos IF cTypeCol == "L" .AND. ::aColumns[ ::nCell ]:lCheckBox .AND. nKey == VK_SPACE lNoKeyChar := .F. ENDIF IF ::nUserKey == 255 .OR. ! ::lEnabled .OR. lNoKeyChar // from KeyDown() method RETURN 0 ENDIF IF ::lAppendMode RETURN 0 ENDIF ::lNoPaint := .F. //cTypeCol := iif( ::nLen == 0, "U", ValType( ::bDataEval( ::aColumns[ ::nCell ] ) ) ) // Modificado por Carlos IF Upper( ::aMsg[ 1 ] ) == "YES" [/pre2] тогда решается edit логического поля при ::lNoKeyChar := .T.

gfilatov2002: SergKis пишет: поправить OK SergKis пишет: решается edit логического поля при ::lNoKeyChar := .T. Принято с благодарностью P.S. Обновил unicode сборку с учетом всех последних изменений, в т.ч. обновил компилятор Harbour

gfilatov2002: Выложил 1-е обновление сборки 21,03 с учетом всех последних изменений по адресу http://hmgextended.com/files/CONTRIB/hmg-21.03-setup.exe Что нового: * New: Implementation of UNICODE support in the MiniGUI core libraries: - updated the Harbour TGet class; - updated the GETBOX control; - updated the TSBrowse library. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG: - correction of using the variable :lNoKeyChar with the logical fields in the method KeyChar(). Contributed by SergKis * Updated: HbSQLite3 library: - update for using SQLITE3 version 3.35.4 (from 3.35.3). Contributed by Grigory Filatov <gfilatov@inbox.ru>. * Updated: Harbour Compiler 3.2.0dev (SVN 2021-03-31 20:37): * Updated: PostGreSQL library source code (see in folder \Source\HbPgSql). Contributed by Grigory Filatov <gfilatov@inbox.ru> (look at ReadMe.txt in folder \harbour) * Updated: 'Test application' sample. - updated C-code for unicode support. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Basic\TEST_APPLICATION) * Updated: 'Using OOP events for creation of the reports' sample: - updated database for unicode compatibility. Contributed by Sergej Kiselev (see in folder \samples\Advanced\APP_OOPREPORT)

SergKis: gfilatov2002 Пример BASIC\Firebird работает в unicode версии, RU1251, LV1257 (LVWIN) поддерживает. Buid [pre2] Compile.bat ..\..\..\BATCH\hbmk2.bat demo.hbp demo.hbp # Keys compile #-prgflag=-w2 -es1 # Enable multi/single-thread Harbour VM -mt # Incremental-compilation mode -inc # folder where are all * .obj -workdir=OBJ # Name EXE-module -odemo # to list all * .prg demo.prg # project Resources #demo.rc # paths to the main and extension *.Lib -lminigui -ltsbrowse -lhbodbc.lib -lodbc32.lib [/pre2] Demo.prg (UTF8 с BOM) [pre2] /* * * Access a firebird database through ODBC * * Based on ODBC_2 sample included in MiniGui Extended distribution * Hugo Rozas M. * HMG Extended v1.9.98 * */ #define _HMG_OUTLOG #include 'hmg.ch' #include "miniprint.ch" REQUEST HB_CODEPAGE_UTF8 REQUEST HB_CODEPAGE_RU1251 REQUEST HB_LANG_DEWIN REQUEST HB_CODEPAGE_LVWIN REQUEST DBFCDX MEMVAR TitlePrint static oConnection *-------------------------------------------------------------------------------- FUNCTION Main() SET CODEPAGE TO UNICODE RddSetDefault("DBFCDX") SET CENTURY ON SET DATE GERMAN SET DELETED ON SET EXCLUSIVE ON SET EPOCH TO 2000 SET AUTOPEN ON SET EXACT ON SET SOFTSEEK ON SET NAVIGATION EXTENDED SET FONT TO "Arial", 11 //Set navigation extended oConnection = todbc():new('DRIVER=Firebird/InterBase(r) driver;UID=SYSDBA;PWD=masterkey;DBNAME=EMPLOYEE.FDB;') oConnection:Open() define window form1; at 0,0 width 400 height 400 title 'Demo Odbc/Firebird'; Main; on init ( adjust(), load_data(1) ); on maximize ( adjust() ); on size ( adjust() ); on release ( oConnection:Destroy() ); font 'ms sans serif' size 8 @ 0, 0 button btn1 caption '&Add' width 55 height 20 action events_(1) @ 0, 60 button btn2 caption '&Edit' width 55 height 20 action events_(2) @ 0,120 button btn3 caption '&Delete' width 55 height 20 action events_(3) @ 0,180 button btn4 caption '&Print' width 55 height 20 action Print_List() @ 0,240 button btn5 caption '&Reload' width 55 height 20 action load_data(1) @ 0,300 button btn6 caption '&Quit' width 55 height 20 action form1.release define grid grid1 row 22 col 5 width 300 height 300 headers {'Id','First Name','Last Name','Salary'} widths { 50, 80,110,115 } justify {BROWSE_JTFY_RIGHT,BROWSE_JTFY_LEFT,BROWSE_JTFY_LEFT,BROWSE_JTFY_RIGHT} on dblclick events_(2) on change form1.statusbar.item(1) := "Register "+; ltrim(str(form1.grid1.value))+" of "+alltrim(str(form1.grid1.itemcount)) columncontrols { ; {'TEXTBOX','NUMERIC'} , ; {'TEXTBOX','CHARACTER'}, ; {'TEXTBOX','CHARACTER'}, ; {'TEXTBOX','NUMERIC'} ; } end grid define statusbar statusitem "Register " date end statusbar end window form1.center activate window form1 return *-------------------------------------------------------------------------------- procedure load_data(n) local i, oc form1.grid1.Deleteallitems oConnection:Setsql('SELECT * FROM Employee ORDER BY Emp_No') if !oConnection:Open() msgstop("Can't connect to database") else for i= 1 to len( oConnection:aRecordset ) form1.grid1.additem( oConnection:aRecordset[ i ] ) next form1.grid1.value := n end oConnection:Close() form1.grid1.setfocus return *-------------------------------------------------------------------------------- procedure events_(n) local cL_Name := "",cSalary := "",cF_Name := "", cID := "", Str do case case n == 1 .or. n == 2 if n = 2 cID := form1.grid1.cell( form1.grid1.value, 1 ) cF_Name := form1.grid1.cell( form1.grid1.value, 2 ) cL_Name := form1.grid1.cell( form1.grid1.value, 3 ) cSalary := form1.grid1.cell( form1.grid1.value, 4 ) end define window form1a; at 0,0 width 270 height 220; title iif(n = 2,'Edit','Add'); modal; font 'ms sans serif' size 8 @ 10, 10 label label1 width 60 height 20 value 'ID' RIGHTALIGN @ 40, 10 label label2 width 60 height 20 value 'First Name' RIGHTALIGN @ 70, 10 label label3 width 60 height 20 value 'Last Name' RIGHTALIGN @ 100,10 label label4 width 60 height 20 value 'Salary' RIGHTALIGN @ 10,80 textbox text1 width 40 height 20 value cID READONLY NUMERIC INPUTMASK '99999' NOTABSTOP @ 40,80 textbox text2 width 100 height 20 value cF_Name MaxLength 15 @ 70,80 textbox text3 width 170 height 20 value cL_Name MaxLength 25 @ 100,80 textbox text4 width 90 height 20 value cSalary NUMERIC INPUTMASK '9999999999.99' @ 150,60 button button1 caption '&Save' action save_data( n ) width 80 height 20 @ 150,150 button button2 caption '&Close' action form1a.release width 80 height 20 on key escape action form1a.button2.onclick end window form1a.center activate window form1a case n == 3 Str := "DELETE FROM Employee WHERE Emp_No="+str(form1.grid1.cell(form1.grid1.value,1)) if msgyesno('Delete this register? '+hb_osnewline()+form1.grid1.cell(form1.grid1.value,2),'Confirm') oConnection:Setsql( Str ) if !oConnection:Open() msgstop("Can't delete the register") else n := form1.grid1.value form1.grid1.deleteitem( n ) form1.grid1.value := iif(n > 1, n-1, 1) form1.statusbar.item(1) := "Register "+; ltrim(str(form1.grid1.value))+" of "+alltrim(str(form1.grid1.itemcount)) end oConnection:Close() form1.grid1.setfocus end endcase Form1.Grid1.SetFocus() return *-------------------------------------------------------------------------------- procedure save_data(n) *-------------------------------------------------------------------------------- local Str, cID if n = 1 If ( form1a.text1.value = 0 ) cID := "null" else cID := "'"+Alltrim(Str(form1a.text1.value))+"'" end Str := "INSERT INTO Employee (EMP_NO,FIRST_NAME,LAST_NAME,SALARY) VALUES ("+cID+; ",'"+form1a.text2.value+; "','"+form1a.text3.value+; "','"+Alltrim(Str(form1a.text4.value))+; "')" //msgstop( Str ) else cID := "'"+Alltrim(Str(form1a.text1.value))+"'" Str := "UPDATE Employee SET FIRST_NAME='"+form1a.text2.value+"',"+; " LAST_NAME='"+form1a.text3.value + "'," + ; " SALARY='" + Str(form1a.text4.value) + "'" + ; " WHERE Emp_No=" + cID //msgstop( Str ) end oConnection:Setsql( Str ) if !oConnection:Open() msgstop("Can't update Employee table") end oConnection:Close() if n == 1 load_data( form1.grid1.itemcount+1 ) else form1.grid1.cell( form1.grid1.value, 1 ) := form1a.text1.value form1.grid1.cell( form1.grid1.value, 2 ) := form1a.text2.value form1.grid1.cell( form1.grid1.value, 3 ) := form1a.text3.value form1.grid1.cell( form1.grid1.value, 4 ) := form1a.text4.value end form1.statusbar.item(1) := "Register "+; ltrim(str(form1.grid1.value))+" de "+alltrim(str(form1.grid1.itemcount)) form1a.release return *-------------------------------------------------------------------------------- procedure adjust() *-------------------------------------------------------------------------------- form1.grid1.width := form1.width - 20 form1.grid1.height:= ( form1.height- form1.grid1.row ) - 60 return *-------------------------------------------------------------------------------- procedure Print_List() *-------------------------------------------------------------------------------- Local nomimp, PAG, LIN, I Local cL_Name,cSalary,cF_Name,cID Private TitlePrint := "Employee List" nomimp := GetPrinter() SELECT PRINTER nomimp ORIENTATION PRINTER_ORIENT_PORTRAIT PREVIEW START PRINTDOC NAME TitlePrint START PRINTPAGE PAG:=0 LIN:=0 FOR I := 1 TO form1.grid1.ItemCount cID := form1.grid1.Cell( I, 1 ) cF_Name := form1.grid1.Cell( I, 2 ) cL_Name := form1.grid1.Cell( I, 3 ) cSalary := form1.grid1.Cell( I, 4 ) IF LIN>=260 .OR. PAG=0 IF PAG<>0 @ LIN+5,105 PRINT "Continue on Page: "+LTRIM(STR(PAG+1)) CENTER END PRINTPAGE START PRINTPAGE ENDIF PAG++ @ 20,20 PRINT "Business Name" @ 20,190 PRINT "Page: "+LTRIM(STR(PAG)) RIGHT @ 25,20 PRINT DATE() @ 25,105 PRINT "Name of Business" CENTER @ 35,105 PRINT TitlePrint FONT "ft18" CENTER LIN:=55 @ LIN+4,20 PRINT LINE TO LIN+4,130 @ LIN,27 PRINT "ID" RIGHT @ LIN,40 PRINT "First Name" @ LIN,70 PRINT "Last Name" @ LIN,125 PRINT "Salary" RIGHT LIN:=LIN+5 ENDIF @ LIN,27 PRINT cID RIGHT @ LIN,40 PRINT cF_Name @ LIN,70 PRINT cL_Name @ LIN,125 PRINT TRANSFORM( cSalary , "9,999,999,999.99" ) RIGHT LIN:=LIN+5 NEXT I END PRINTPAGE END PRINTDOC return [/pre2]

gfilatov2002: SergKis пишет: Пример BASIC\Firebird работает в unicode версии Ok Благодарю за подтверждение

gfilatov2002: Выложил 2-е обновление сборки 21.03 с учетом всех последних исправлений по адресу http://hmgextended.com/files/CONTRIB/hmg-21.03-setup.exe Что нового: [pre2] * Fixed: ON SIZE event is triggered to early in the Modal window with the defined menu. Bug was reported by Theo Pluijm <trmpluym/at/gmail.com>. Based upon a contribution of HMG user Edward. Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru> * Modified: Adaptation of the MiniGUI core for compatibility with the latest Harbour compiler version 3.0.0 (SVN 2011-07-17 19:15): - the updated header include\i_pseudofunc.ch; - added translate directives for missed Harbour 3.2 functions; - Vista's TaskDialog implementation was blocked due to the incompatibility with Harbour 3.0. Contributed by Grigory Filatov <gfilatov@inbox.ru>. * Updated: Implementation of UNICODE support in the MiniGUI core: - fixed problem with the returned items value in ListBox, ComboBox and GET ini file command. Bug was reported by Allan De Sa. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: Harbour Compiler 3.2.0dev (SVN 2021-04-10 23:32): * Updated: PostGreSQL library source code (see in folder \Source\HbPgSql). Contributed by Grigory Filatov <gfilatov@inbox.ru> (look at ReadMe.txt in folder \harbour) * New: 'ButtonEx and Snap Control' sample: added the function Snap2Ctrl(). Contributed by Pierpaolo Martinello <pier.martinello[at]alice.it> (see demo3.prg in folder \samples\Basic\BUTTON_1) [/pre2] Также подготовил MinGW сборки с использованием свежей версии 10.3 (вышла 8 апреля 2021 г.)

Andrey: Поставил, полёт нормальный !

gfilatov2002: Завершена подготовка 3-го обновления сборки 21.03, которое выйдет послезавтра. Что нового: * New: The OwnerDraw Menu style supported the following optional command: - SET MENUTHEME [ DEFAULT | XP | 2000 | DARK | USER <aMenu> ] [ OF <form> ] Based on using of the function HMG_SetMenuTheme(). Contributed by Grigory Filatov <gfilatov@inbox.ru> (see menudemo2.prg in folder \samples\Basic\Menu) * Updated: Synchronized Extended HMG for compatibility with Official HMG: - added the useful functions (and appropriate properties) below: - TreeItemGetParentValue(); - TreeItemSetNodeFlag(). Based upon a contribution of Claudio Soto <srvet@adinet.com.uy>. Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Basic\TreeMenu_3) * Updated: Implementation of UNICODE support in the MiniGUI core: - fixed problem with the TIMEPICKER format string. Bug was reported by Allan De Sa. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: HbSQLite3 library: - update for using SQLITE3 version 3.35.5 (from 3.35.4). Contributed by Grigory Filatov <gfilatov@inbox.ru>. * Updated: Harbour Compiler 3.2.0dev (SVN 2021-04-14 22:25). Contributed by Grigory Filatov <gfilatov@inbox.ru> (look at ReadMe.txt in folder \harbour) * New: 'Save/Load Tree Structure in the JSON format' sample. Based upon a contribution of HMG user Edward. Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Basic\TreeMenu_3) * Updated: 'Simple PDF Class' sample: - updated for using of the recent PDF Class version. Based upon a contribution of Jose Quintas. Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Advanced\HaruPDF_2) Ваши комментарии приветствуются...



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