From: Itamar M. L. J. L. <ita...@gm...> - 2015-09-26 11:56:32
|
By José Cláudio. Below the codes that will sent to Kresin .. that first I made an example of a MDIChild not execute the block of ON EXIT qdo maximized .... which has alteration / inclusion're marked //<<<<<<<<<<<<<<<<<<<<<<<<<<< //////////////////////////////////////////////////////////////////////////////////////// FW: Adjustments in Hwgui - MdiChild #include "hwgui.ch" Function Main Local oMainWindow INIT WINDOW oMainWindow MAIN MDI TITLE "Example Maximized window does not execute this message(ON EXIT of MdiChild)" ; AT 200,0 SIZE 1000,950 MENU OF oMainWindow MENUITEM "&Exit" ACTION hwg_EndWindow() MENUITEM "&MdiChild" ACTION DlgGet() ENDMENU ACTIVATE WINDOW oMainWindow Return Nil Function DlgGet Local oWchild Local oFont := HFont():Add( "MS Sans Serif",0,-13 ) INIT WINDOW oWchild MDICHILD APPNAME "GetDados" TITLE "GetDados" AT 200,0 SIZE 600,350 FONT oFont ; ON EXIT {||hwg_MsgStop("Maximized window does not execute this message..."),.t.} ; STYLE WS_OVERLAPPEDWINDOW+WS_VISIBLE //WS_CAPTION+WS_SYSMENU+WS_VISIBLE +WS_MINIMIZEBOX+WS_MAXIMIZE+WS_MAXIMIZEBOX //+WS_SIZEBOX+WS_HSCROLL+WS_VSCROLL //WS_OVERLAPPEDWINDOW ACTIVATE WINDOW oWchild return Nil //////////////////////////////////////////////////////////////////////////////////////// Hello Kresin ... just for you to know the desktop I use ... xHarbour / * * $ Id: 10134 ChangeLog 08/09/2015 19: 17: 35Z $ ronpinkas * / Bcc32 6.80 and windows 10 .. / server 2012 r2 I came to study the Hwgui because now more stable .. Sorry if I'm pushy, it is that now I took time to send u my tips ... I noticed that looks like it was set to standard code block: bSetGet of data entry clases in the definition of the parameter eg Eval (: bSetGet, <vari>, <obj>) Regards, Jose Claudio Hello Kresin, as I said before, I went back to study the hwgui, then I think we should standardize certain actions, as in previous e-mail, instead of method :End (), everyone should have :close (), such as data entry we have to have status that if there was alteration,: lchanged ... I'm just giving a hint ... if you have doubts of your application I pass an example ... congratulations,... Regards, Jose Claudio CLASS HComboBox INHERIT HControl CLASS VAR winclass INIT "COMBOBOX" DATA aItems DATA bSetGet DATA xValue INIT 1 DATA bValid INIT { || .T. } DATA bChangeSel DATA nDisplay DATA lText INIT .F. DATA lEdit INIT .F. DATA xOld //<<<<<<<<<<<<<<<<<<<<<<<<<<< DATA lChanged INIT .F. //<<<<<<<<<<<<<<<<<<<<<<<<<<< ......... METHOD Redefine( oWndParent, nId, vari, bSetGet, aItems, oFont, bInit, bSize, bPaint, ; bChange, ctooltip, bGFocus ) CLASS HComboBox ::Super:New( oWndParent, nId, 0, 0, 0, 0, 0, oFont, bInit, bSize, bPaint, ctooltip ) IF ::lText ::xValue := iif( vari == Nil .OR. ValType( vari ) != "C", "", Trim( vari ) ) ELSE ::xValue := iif( vari == Nil .OR. ValType( vari ) != "N", 1, vari ) ENDIF ::bSetGet := bSetGet ::aItems := aItems IF bSetGet != Nil ::bChangeSel := bChange // By Luiz Henrique dos Santos (lui...@gm...) 04/06/2006 IF ::bChangeSel != Nil ::oParent:AddEvent( CBN_SELCHANGE, ::id, { |o, id|__Valid( o:FindControl(id ) ) } ) ENDIF ELSEIF bChange != Nil ::oParent:AddEvent( CBN_SELCHANGE, ::id, bChange ) ENDIF IF bGFocus != Nil//<<<<<<<<<<<<<<<<<<<<<<<<<<< ::bGetFocus := bGFocus//<<<<<<<<<<<<<<<<<<<<<<<<<<< ::oParent:AddEvent( CBN_SETFOCUS, ::id, { |o, id|__When( o:FindControl(id ) ) } )//<<<<<<<<<<<<<<<<<<<<<<<<<<< ENDIF//<<<<<<<<<<<<<<<<<<<<<<<<<<< ::Refresh() // By Luiz Henrique dos Santos RETURN Self METHOD Init() CLASS HComboBox LOCAL i, nHeightBox, nHeightItem IF !::lInit ::Super:Init() IF !Empty( ::aItems ) IF Empty( ::xValue ) IF ::lText ::xValue := iif( ValType( ::aItems[1] ) == "A", ::aItems[1,1], ::aItems[1] ) ELSE ::xValue := 1 ENDIF ENDIF hwg_Sendmessage( ::handle, CB_RESETCONTENT, 0, 0 ) FOR i := 1 TO Len( ::aItems ) hwg_Comboaddstring( ::handle, iif( ValType(::aItems[i] ) == "A", ::aItems[i,1], ::aItems[i] ) ) NEXT IF ::lText IF ::lEdit hwg_Setwindowtext( ::handle,::xValue ) ELSE i := iif( ValType( ::aItems[1] ) == "A", AScan( ::aItems, { |a|a[1] == ::xValue } ), AScan( ::aItems, ::xValue ) ) hwg_Combosetstring( ::handle, i ) ENDIF ELSE hwg_Combosetstring( ::handle, ::xValue ) ENDIF ENDIF IF !Empty( ::nDisplay ) nHeightBox := hwg_Sendmessage( ::handle, CB_GETITEMHEIGHT, - 1, 0 ) nHeightItem := hwg_Sendmessage( ::handle, CB_GETITEMHEIGHT, - 1, 0 ) ::nHeight := nHeightBox + nHeightItem * ( ::nDisplay ) hwg_Movewindow( ::handle, ::nLeft, ::nTop, ::nWidth, ::nHeight ) ENDIF ENDIF ::xOld:=::xValue //<<<<<<<<<<<<<<<<<<<<<<<<<<< RETURN Nil STATIC FUNCTION __Valid( oCtrl ) LOCAL nPos LOCAL lESC // by sauli IF __ObjHasMsg( oCtrl:oParent, "nLastKey" ) // caso o PARENT seja HDIALOG lESC := oCtrl:oParent:nLastKey <> 27 ELSE // caso o PARENT seja HTAB, HPANEL lESC := .T. end // end by sauli IF lESC // "if" by Luiz Henrique dos Santos (lui...@gm...) 04/06/2006 nPos := hwg_Sendmessage( oCtrl:handle, CB_GETCURSEL, 0, 0 ) + 1 IF oCtrl:lEdit oCtrl:xValue := oCtrl:GetText() ELSE oCtrl:xValue := iif( oCtrl:lText, iif( ValType(oCtrl:aItems[nPos] ) == "A", oCtrl:aItems[nPos,1], oCtrl:aItems[nPos] ), nPos ) ENDIF IF oCtrl:bSetGet != Nil Eval( oCtrl:bSetGet, oCtrl:xValue, oCtrl ) ENDIF IF oCtrl:bChangeSel != Nil Eval( oCtrl:bChangeSel, nPos, oCtrl ) ENDIF // By Luiz Henrique dos Santos (lui...@gm...) 03/06/2006 IF oCtrl:bValid != Nil IF ! Eval( oCtrl:bValid, oCtrl ) hwg_Setfocus( oCtrl:handle ) RETURN .F. ENDIF ENDIF ENDIF oCtrl:lChanged := (oCtrl:xOld != oCtrl:xValue) //<<<<<<<<<<<<<<<<<<<<<<<<<<< RETURN .T. STATIC FUNCTION __When( oCtrl ) LOCAL res //oCtrl:Refresh() oCtrl:xOld := oCtrl:xValue //<<<<<<<<<<<<<<<<<<<<<<<<<<< IF oCtrl:bGetFocus != Nil IF oCtrl:bSetGet == Nil res := Eval( oCtrl:bGetFocus, oCtrl:xValue, oCtrl ) ELSE res := Eval( oCtrl:bGetFocus, Eval( oCtrl:bSetGet,, oCtrl ), oCtrl ) IF !res hwg_GetSkip( oCtrl:oParent, oCtrl:handle, 1 ) ENDIF ENDIF RETURN res ENDIF RETURN .T. /////////////////////////////////////////////////////////////// Hello Kresin ... sorry ... I sent previously, one of my incorrect tests ... I made the implementation of: lChanged in Class HDatePicker alterations CLASS HDatePicker INHERIT HControl CLASS VAR winclass INIT "SYSDATETIMEPICK32" DATA bSetGet DATA dOld //<<<<<<<<<<<<<<<<<<<<<<<<<<< DATA lChanged INIT .F. //<<<<<<<<<<<<<<<<<<<<<<<<<<< METHOD Init() CLASS HDatePicker IF !::lInit ::Super:Init() IF Empty( ::dValue ) hwg_Setdatepickernull( ::handle ) ELSE hwg_Setdatepicker( ::handle, ::dValue ) ENDIF ENDIF ::dOld:=::dValue //<<<<<<<<<<<<<<<<<<<<<<<<<<< RETURN Nil STATIC FUNCTION __Change( oCtrl, nMess ) oCtrl:dOld := oCtrl:dValue //<<<<<<<<<<<<<<<<<<<<<<<<<<< IF ( nMess == DTN_DATETIMECHANGE .AND. ; hwg_Sendmessage( oCtrl:handle, DTM_GETMONTHCAL, 0, 0 ) == 0 ) .OR. ; nMess == DTN_CLOSEUP oCtrl:dValue := hwg_Getdatepicker( oCtrl:handle ) IF oCtrl:bSetGet != Nil Eval( oCtrl:bSetGet, oCtrl:dValue, oCtrl ) ENDIF IF oCtrl:bChange != Nil Eval( oCtrl:bChange, oCtrl:dValue, oCtrl ) ENDIF ENDIF RETURN .T. STATIC FUNCTION __Valid( oCtrl ) oCtrl:dValue := hwg_Getdatepicker( oCtrl:handle ) IF oCtrl:bSetGet != Nil Eval( oCtrl:bSetGet, oCtrl:dValue, oCtrl ) ENDIF IF oCtrl:bLostFocus != Nil .AND. !Eval( oCtrl:bLostFocus, oCtrl:dValue, oCtrl ) RETURN .F. ENDIF oCtrl:lChanged := (oCtrl:dOld != oCtrl:dValue) //<<<<<<<<<<<<<<<<<<<<<<<<<<< RETURN .T. Regards, Jose Claudio |