Buenos dias a todos.
En el foro en ingles, leí un post donde alguien desarrolló algo para poder redimensionar una ventana MDI (tMdiFrame) con estilo POPUP.
¿alguien tiene localizado ese post?
Llevo horas buscandolo y no lo encuentro
Gracias
JESUS MARIN wrote:Me contesto yo mismo.
oWnd:bLClicked = { | nRow, nCol | ...... } // activa la acción al pulsar boton izquierdo
oWnd:bMMoved = { | nRow, nCol | ...... } // controla movimiento del raton
oWnd:bLButtonUp = { | nRow, nCol | ........ } // al soltar o dejar de pulsar boton izquierdo
Saludos
Jesús Marín
Valencia (España)
// C:\FWH..\SAMPLES\CORVENT2.PRG
#include "FiveWin.ch"
#define CLR_MSPURPLE RGB( 128, 57, 123 )
#define CLR_MSRED RGB( 232, 17, 35 )
#define CLR_MSGRAY RGB( 229, 229, 229 )
#define CLR_MSLIGHTGRAY RGB( 243, 243, 243 )
#define TME_LEAVE 2
#define _nClrPaneRB CLR_MSPURPLE
#define _nClrBoxOutRB CLR_MSLIGHTGRAY
#define _nClrBoxInRB CLR_MSLIGHTGRAY
#define _nClrBoxSelOut CLR_MSLIGHTGRAY
#define _aGradRB { { 1, CLR_MSLIGHTGRAY, CLR_MSLIGHTGRAY } }
#define _aGradHighRB { { 1, CLR_MSLIGHTGRAY, CLR_MSLIGHTGRAY } }
#define _aGradOverRB { { 1, CLR_MSLIGHTGRAY, CLR_MSLIGHTGRAY } }
function Main()
local oWnd, nRowPos, nColPos, oBtnClose, oBtnMax, oBtnMin, lDrag := .F.
local oRb
DEFINE WINDOW oWnd STYLE WS_POPUP COLOR CLR_BLACK, CLR_MSPURPLE
oWnd:SetSize( 1000, 500 )
oWnd:Shadow()
oWnd:Center()
oWnd:bLClicked = { | nRow, nCol | If( nRow < 25, ( oWnd:Capture(), nRowPos := nRow, nColPos := nCol, lDrag := .T. ),) }
oWnd:bMMoved = { | nRow, nCol | TrackMouseEvent( oWnd:hWnd, TME_LEAVE ),;
If( lDrag .and. ! IsZoomed( oWnd:hWnd ) .and. IsOverWnd( oWnd:hWnd, nRow, nCol ),;
oWnd:Move( oWnd:nTop + nRow - nRowPos, oWnd:nLeft + nCol - nColPos,,, .T. ),) }
oWnd:bLButtonUp = { || ReleaseCapture(), lDrag := .F. }
oWnd:bMLeave = { || lDrag := .F. }
@ 1, oWnd:nWidth - 46 BTNBMP oBtnClose BITMAP "../bitmaps/16x16/closew.bmp" ;
FLAT NOBORDER NOROUND ACTION oWnd:End() SIZE 45, 29 ;
COLOR CLR_BLACK, CLR_MSPURPLE
@ 1, oWnd:nWidth - 92 BTNBMP oBtnMax BITMAP "../bitmaps/16x16/max.bmp" ;
FLAT NOBORDER NOROUND ACTION If( ! IsZoomed( oWnd:hWnd ), oWnd:Maximize(), oWnd:Restore() ) SIZE 45, 29 ;
COLOR CLR_BLACK, CLR_MSPURPLE
@ 1, oWnd:nWidth - 138 BTNBMP oBtnMin BITMAP "../bitmaps/16x16/min.bmp" ;
FLAT NOBORDER NOROUND ACTION If( ! IsIconic( oWnd:hWnd ), oWnd:Iconize(), oWnd:Restore() ) SIZE 45, 29 ;
COLOR CLR_BLACK, CLR_MSPURPLE
oBtnClose:bMMoved = { || oBtnClose:SetColor( CLR_BLACK, If( oBtnClose:lMOver, CLR_MSRED, oWnd:nClrPane ) ) }
oBtnMax:bMMoved = { || oBtnMax:SetColor( CLR_BLACK, If( oBtnMax:lMOver, CLR_MSGRAY, oWnd:nClrPane ) ) }
oBtnMin:bMMoved = { || oBtnMin:SetColor( CLR_BLACK, If( oBtnMin:lMOver, CLR_MSGRAY, oWnd:nClrPane ) ) }
oWnd:bResized = { || oBtnClose:Move( 1, oWnd:nWidth - 46 ), oBtnMax:Move( 1, oWnd:nWidth - 92 ),;
oBtnMin:Move( 1, oWnd:nWidth - 138 ), oRb:nWidth := oWnd:nWidth }
oRb = TRibbonBar():New( oWnd,,,,, 120, 40, _nClrPaneRB, _nClrBoxOutRB, _nClrBoxInRB,,;
_nClrBoxSelOut, _aGradRB,, _aGradHighRB, _aGradOverRB,,,,,.T.)
oWnd:oTop = nil
oRb:nTop = 30
oRb:nWidth = oWnd:nWidth
oRb:SetStyles( .F., .T. )
oRb:nClrPaneRB = CLR_MSPURPLE
oRb:hSeparation = 4
oRb:aGradFld = {|nOpt| iif( nOpt == oRb:nStart, { { 1, CLR_MSLIGHTGRAY, CLR_MSLIGHTGRAY } },;
{ { 1, CLR_MSLIGHTGRAY, CLR_MSLIGHTGRAY } } ) }
oRb:Default()
AFill( oRb:aClrTabTxt, { | oSelf, nPrompt | If( nPrompt == oSelf:nOption, CLR_BLACK,;
If( oRb:nOverPrompt( ScreenToClient( oRb:hWnd, GetCursorPos() )[ 1 ],;
ScreenToClient( oRb:hWnd, GetCursorPos() )[ 2 ] ) == nPrompt, CLR_HRED, CLR_WHITE ) ) } )
oRb:AddGroup( 185, "First", 1 )
oRb:AddGroup( 185, "Second", 1 )
oRb:AddGroup( 185, "Third", 1 )
ACTIVATE WINDOW oWnd
return nil
// FIN / END
// C:\FWH..\SAMPLES\CORVENT1.PRG
#include "FiveWin.ch"
#define CLR_MSPURPLE RGB( 0, 120, 215 )
#define CLR_MSRED RGB( 232, 17, 35 )
#define CLR_MSGRAY RGB( 229, 229, 229 )
#define TME_LEAVE 2
Static oWnd, oFontMenu, oFont
function Main()
local nRowPos, nColPos, oBtnClose, oBtnMax, oBtnMin, lDrag := .F., lRResize := .F., lBResize := .F.
LOCAL cFont := "Tahoma"
LOCAL cFontH := -14
DEFINE FONT oFontMenu NAME cFont SIZE 0, cFontH WEIGHT 300
DEFINE FONT oFont NAME cFont SIZE 0, cFontH - 2 // WEIGHT 300
DEFINE WINDOW oWnd STYLE WS_POPUP COLOR CLR_BLACK, CLR_MSPURPLE MDI ;
MENU MyMenu()
//oWnd:SetSize( 500, 300 )
//oWnd:Center()
oWnd:Shadow()
/*
oWnd:bPainted = { || oWnd:Say( 8, 30, "Caption Color", CLR_RED, CLR_MSPURPLE, oWnd:oFont, .T., .T. ) }
oWnd:bLClicked = { | nRow, nCol | If( nRow < 25, ( oWnd:Capture(), nRowPos := nRow, nColPos := nCol, lDrag := .T. ),),;
If( nRow > 25 .and. nCol > oWnd:nWidth - 25, ( oWnd:Capture(), nRowPos := nRow, nColPos := nCol, lRResize := .T. ),),;
If( nRow > 25 .and. nRow > oWnd:nHeight - 25, ( oWnd:Capture(), nRowPos := nRow, nColPos := nCol, lBResize := .T. ),) }
oWnd:bMMoved = { | nRow, nCol | TrackMouseEvent( oWnd:hWnd, TME_LEAVE ),;
If( lDrag .and. ! IsZoomed( oWnd:hWnd ) .and. IsOverWnd( oWnd:hWnd, nRow, nCol ),;
oWnd:Move( oWnd:nTop + nRow - nRowPos, oWnd:nLeft + nCol - nColPos,,, .T. ),),;
If( lRResize .and. ! IsZoomed( oWnd:hWnd ) .and. IsOverWnd( oWnd:hWnd, nRow, nCol ),;
( oWnd:SetSize( oWnd:nWidth + nCol - nColPos, oWnd:nHeight, .T. ), nColPos := nCol ),),;
If( lBResize .and. ! IsZoomed( oWnd:hWnd ) .and. IsOverWnd( oWnd:hWnd, nRow, nCol ),;
( oWnd:SetSize( oWnd:nWidth, oWnd:nHeight + nRow - nRowPos, .T. ), nRowPos := nRow ),) }
oWnd:bLButtonUp = { || ReleaseCapture(), lDrag := .F., lRResize := .F., lBResize := .F. }
oWnd:bMLeave = { || lDrag := .F. }
// @ 1, oWnd:nWidth - 46 BTNBMP oBtnClose BITMAP "../bitmaps/16x16/exit.bmp" ;
@ 1, oWnd:nWidth - 46 BTNBMP oBtnClose BITMAP "../bitmaps/16x16/closew.bmp" ;
FLAT NOBORDER NOROUND ACTION oWnd:End() SIZE 45, 29 ;
COLOR CLR_BLACK, CLR_MSPURPLE
@ 1, oWnd:nWidth - 92 BTNBMP oBtnMax BITMAP "../bitmaps/16x16/max.bmp" ;
FLAT NOBORDER NOROUND ACTION If( ! IsZoomed( oWnd:hWnd ), oWnd:Maximize(), oWnd:Restore() ) SIZE 45, 29 ;
COLOR CLR_BLACK, CLR_MSPURPLE
@ 1, oWnd:nWidth - 138 BTNBMP oBtnMin BITMAP "../bitmaps/16x16/min.bmp" ;
FLAT NOBORDER NOROUND ACTION If( ! IsIconic( oWnd:hWnd ), oWnd:Iconize(), oWnd:Restore() ) SIZE 45, 29 ;
COLOR CLR_BLACK, CLR_MSPURPLE
oBtnClose:bMMoved = { || oBtnClose:SetColor( CLR_BLACK, If( oBtnClose:lMOver, CLR_MSRED, oWnd:nClrPane ) ) }
oBtnMax:bMMoved = { || oBtnMax:SetColor( CLR_BLACK, If( oBtnMax:lMOver, CLR_MSGRAY, oWnd:nClrPane ) ) }
oBtnMin:bMMoved = { || oBtnMin:SetColor( CLR_BLACK, If( oBtnMin:lMOver, CLR_MSGRAY, oWnd:nClrPane ) ) }
oWnd:bResized = { || oBtnClose:Move( 1, oWnd:nWidth - 46 ), oBtnMax:Move( 1, oWnd:nWidth - 92 ),;
oBtnMin:Move( 1, oWnd:nWidth - 138 ) }
*/
ACTIVATE WINDOW oWnd MAXIMIZED
return nil
Function MyMenu()
local oMenu
// MENU oMenu HEIGHT -4.8 COLORMENU CLR_BLUE, CLR_WHITE ;
MENU oMenu HEIGHT -4.8 COLORMENU CLR_BLACK, CLR_MSPURPLE ;
FONT oFontMenu // NOBORDER // 2013
MENUITEM "&Archivos"
MENU
MENUITEM "&Clientes" // ACTION Clientes(user)
MENUITEM "&Proveedores" // ACTION Proveed()
MENUITEM "&Stocks" // ACTION Stock()
MENUITEM "&Componentes" // ACTION iStock()
MENUITEM "&Cuentas Corrientes por Cliente" // ACTION CtacteT()
MENUITEM "&Vendedores" // ACTION Vendedor()
MENUITEM "&Comprobantes Emitidos" // ACTION Facremit()
MENUITEM "&Cobranzas" // ACTION Vfacrem()
MENUITEM "&Recibos" // ACTION Recibo1()
MENUITEM "&Transporte" // ACTION Tra()
MENUITEM "&Generar Etiquetas Precios y Cod. Barr." // ACTION mainprub()
MENUITEM "&Generar Etiquetas Precios y Cod. Barr." // ACTION pruebax()
ENDMENU
MENUITEM "&Ventas"
MENU
MENUITEM oemtoansi("&Facturaci¢n") // Action (xtipo:= "factura",GRID())
MENUITEM oemtoansi("&Facturaci¢n PRUEBA") // Action (xtipo:= "factura",SBARRAY())
MENUITEM oemtoansi("&Remitos") // Action ( xtipo:= "remito",RGRID())
MENUITEM oemtoansi("&Pedidos") // Action (xtipo:= "pedido",PGRID())
ENDMENU
MENUITEM "&Compras"
MENU
MENUITEM oemtoansi("&Compras") // Action cGRID()
MENUITEM oemtoansi("&Consultas Compras x Proveedores Facturas") // Action ( compras() )
MENUITEM oemtoansi("&Consultas Compras x Proveedores Totales ") // Action ( comprasp() )
MENUITEM oemtoansi("&Cuentas Corrientes Proveedores") // Action ( CTACTET1() )
ENDMENU
MENUITEM "Caja"
MENU
MENUITEM "&Caja" // ACTION Caja()
MENUITEM "Tarjetas de &credito" // ACTION TARJETA()
ENDMENU
MENUITEM "Cheques"
MENU
MENUITEM "C&heques" // ACTION CHEQUE()
MENUITEM "Vencimietos de C&heques" // ACTION cCHEck()
ENDMENU
MENUITEM "Bancos"
MENU
MENUITEM "&Cuentas " // ACTION CUENTAS()
MENUITEM "&Movimientos Bancarios " // ACTION Movban()
MENUITEM "&Cuentas/Saldos " // ACTION Salban()
MENUITEM "&Importar desde Excel " // action (rBancosS(),impoexcel1c())
ENDMENU
MENUITEM "&Libros IVA"
MENU
MENUITEM "&IVA Ventas" // ACTION livav()
MENUITEM "&Exportar a Regimen Informacion Ventas Comprobantes" // ACTION CITIVC()
MENUITEM "&Exportar a Regimen Informacion Ventas Alicuotas" // ACTION CITIVCA()
MENUITEM oemtoansi("&IVA Compras") // Action livac()
MENUITEM "&Exportar a Regimen Informacion Compras Comprobantes" // ACTION CITICC()
MENUITEM "&Exportar a Regimen Informacion Compras Alicuotas" // ACTION CITICCA()
ENDMENU
MENUITEM "&Informes y Estadisticas"
MENU
MENUITEM "&Ventas Diarias y Mensuales" // action Vdym()
*MENUITEM "&Ventas Diarias y Mensuales por horario" // *action Vdymh()
MENUITEM "&Ventas Diarias y Mensuales Por Rubro" // action Vdym2()
MENUITEM "&Ventas Diarias y Mensuales Por Vendedor" // action Vdymv()
MENUITEM "&Presupuestos / Pedidos Diarios y Mensuales Por Cliente detallada" // action Vdyp()
MENUITEM "&Presupuestos / Pedidos diarios y mensuales" // action Vdymp()
MENUITEM "&Listado de Precios 1 " // action (repLPRE(),lstoc())
MENUITEM "&Listado de Precios 2 " // action (repLPRE(),lstoc1())
MENUITEM "&Listado de Precios 3 " // action (repLPRE(),lstoc2())
MENUITEM "&Listado de Precios 4 " // action (repLPRE(),lstoc3())
ENDMENU
MENUITEM OEMTOANSI("Configuraci¢n")
MENU
MENUITEM "&Empresa" // ACTION empresa()
MENUITEM "&Back Up de Archivos" // ACTION czip()
MENUITEM "&Restaurar Archivos" // ACTION dzip()
MENUITEM "&Numeracion de Comprobantes" // ACTION talonar()
MENUITEM "&Rubros" // ACTION Rubro()
MENUITEM "&Rubros Compras" // ACTION Rubroc()
MENUITEM "&Cotizacion Monedas" // ACTION Cotiz()
MENUITEM "&Usuarios" // ACTION User()
MENUITEM "&Reorganizacion de archivos" // ACTION Indexa()
MENUITEM "&Modificacion de Codigo Stock" // ACTION Mstock()
MENUITEM "&Texto" // ACTION clausula()
MENUITEM "&Datos Conexion" // ACTION Dconex()
MENUITEM "&Aumento de Precios" // ACTION Aumento()
ENDMENU
MENUITEM "&Salir" ACTION ( oWnd:End() )
MENUITEM ""
MENUITEM ""
MENUITEM ""
MENUITEM ""
MENUITEM ""
MENUITEM ""
MENUITEM ""
MENUITEM ""
MENUITEM "-" //FONT oFont
MENUITEM "x" //FONT oFont
ENDMENU
Return oMenu
// FIN / END
JESUS MARIN wrote:Si Joao
Mas o menos. Porque tengo una version de FWH muy antigua y no todo me funciona
En breve, pongo video
Saludos
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: No registered users and 47 guests