Mover un Dialogo sin Caption

Mover un Dialogo sin Caption

Postby Marcelo Via Giglio » Fri Oct 30, 2015 8:39 pm

Holas,

hay alguna manera de mover un dialogo con el mouse sin que tenga título, pinchando en cualquier lugar y moviendolo

saludos

Marcelo
Marcelo Via Giglio
 
Posts: 1064
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Re: Mover un Dialogo sin Caption

Postby Antonio Linares » Sat Oct 31, 2015 11:11 am

Marcelo,

Revisa FWH\samples\testmmov.prg
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42077
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Mover un Dialogo sin Caption

Postby Marcelo Via Giglio » Sat Oct 31, 2015 9:45 pm

Antonio,

muchas gracias, lo estoy probando con diálogos definidos en recursos, y el funcionamiento es errático, es necesario jugar un poco m'as, pero es buen inicio, gracias

saludos

Marcelo
Marcelo Via Giglio
 
Posts: 1064
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Re: Mover un Dialogo sin Caption

Postby antolin » Mon Nov 23, 2015 4:06 pm

Marcelo, yo lo hago así:

Code: Select all  Expand view
DEFINE DIALOG oDLg ....
   DEFINE CURSOR oCur ...
   ...
   ...
   oDlD:bLClicked := { || MovWin(oDlGD,aCoors,oCur) }
   ...
ACTIVATE DIALOG oDlg...

FUNCTION MovWin(oDW,aCoor,oCur)
   LOCAL aXY   := GetCursorPos()
   LOCAL aPun  := GetWndRect(oDW:hWnd)

   aXY[1] -= aPun[1]
   aXY[2] -= aPun[2]
   IF aXY[1] > aCoor[nTop] .AND. aXY[1] < aCoors[nBottom] .AND. aXY[2] > aCoors[nLeft] .AND. aXY[2] < aCoors[nRight]
      DO WHILE GetKeyState( VK_LBUTTON )
         SetCursor( oCur:hCursor )
         aPun := GetCursorPos()
         MoveWindow( oDW:hWnd, aPun[1]-aXY[1], aPun[2]-aXY[2],,, .T. )
         SysRefresh()
      ENDDO
      CursorArrow()
   ENDIF
RETURN .T.
 

OcUR es por si quiero utilizar un cursor diferente cuando se mueve el dialogo. No es necesario ponerlo
aCoors es el área en la que quiero que el ratón mueva el dialogo. Si quiero que mover el dialogo desde cualquier parte, no la pongo, y sería:

Code: Select all  Expand view
DEFINE DIALOG oDLg ....
   DEFINE CURSOR oCur ...
   ...
   ...
   oDlD:bLClicked := { || MovWin(oDlGD,oCur) }
   ...
ACTIVATE DIALOG oDlg...

FUNCTION MovWin(oDW,oCur)
   LOCAL aXY   := GetCursorPos()
   LOCAL aPun  := GetWndRect(oDW:hWnd)

   aXY[1] -= aPun[1]
   aXY[2] -= aPun[2]

   DO WHILE GetKeyState( VK_LBUTTON )
      SetCursor( oCur:hCursor )
      aPun := GetCursorPos()
      MoveWindow( oDW:hWnd, aPun[1]-aXY[1], aPun[2]-aXY[2],,, .T. )
      SysRefresh()
   ENDDO
   CursorArrow()
RETURN .T.
 

A mi me funciona bien

Espero te sea de utilidad.

Un saludo.
Peaaaaaso de foro...
FWH 2007 - xHarbour - BCC55
antolin
 
Posts: 498
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Mover un Dialogo sin Caption

Postby Marcelo Via Giglio » Mon Nov 23, 2015 4:20 pm

Antolin,

muchas gracias por compartir tu solución

saludos

Marcelo Vía
Marcelo Via Giglio
 
Posts: 1064
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Re: Mover un Dialogo sin Caption

Postby acuellar » Mon Nov 23, 2015 5:45 pm

Muchas Gracias Antolin

A mi también me sirvió.

Saludos,


Adhemar
Saludos,

Adhemar C.
User avatar
acuellar
 
Posts: 1643
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Mover un Dialogo sin Caption

Postby FranciscoA » Mon Nov 23, 2015 7:44 pm

acuellar wrote:Muchas Gracias Antolin

A mi también me sirvió.

Saludos,


Adhemar


+1
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Mover un Dialogo sin Caption

Postby horacio » Mon Nov 23, 2015 9:51 pm

Funciona perfectamente, muchísimas gracias ...

Saludos
horacio
 
Posts: 1363
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Mover un Dialogo sin Caption

Postby hmpaquito » Tue Nov 24, 2015 11:10 am

Muchas gracias.

Me ha venido muy bien.
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Mover un Dialogo sin Caption

Postby Willi Quintana » Tue Nov 24, 2015 11:59 am

Hola Amigos,
Cuando muevo un dialogo incrustado en una windows (MDI) solo se mueve el dialogo mas no la window, y al cambiar oDlg por oWndK se mueve todo pero la window salta hacia abajo....
Code: Select all  Expand view

DEFINE WINDOW oWndK MDICHILD FROM 0,0 to 2,2 OF oWnd BORDER NONE NOSYSMENU NOCAPTION TITLE cTitle ICON "SVITE"
DEFINE DIALOG oDlg RESOURCE "KARDEX" OF oWndK  
       oDlg:bLClicked := { || MovWin(oDlg, oCursor) } // para mover el objeto


aEval(oDlg:aControls,{|oC|iif(oC:ClassName()="TBTNBMP",oC:oCursor:=oCursor,)})
ACTIVATE DIALOG oDlg CENTER NOWAIT ;  
                ON INIT (oDlg:Move( 0, 0 ), ;
                VALID  (oWndK:End() , lSalir )
                oWndK:bGotFocus  = { || oDlg:SetFocus() }
ACTIVATE WINDOW oWndK ;                                                      
         ON INIT (oWndK:Move(0,0), oWndK:SetSize( oDlg:nWidth, oDlg:nHeight ) ) ;  
         ON RESIZE (oWndK:SetSize( oDlg:nWidth, oDlg:nHeight ) ) ;
         VALID (lSalir)

 
User avatar
Willi Quintana
 
Posts: 1019
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú

Re: Mover un Dialogo sin Caption

Postby FranciscoA » Wed Nov 25, 2015 3:25 am

Hola Willi.
Modificando la function de Antolin, de la siguiente manera, me funciona bien en Windows 7. En este momento no tengo a la mano otras versiones de Windows.
Pruebalo y nos dices.

Code: Select all  Expand view
oDlg:bLClicked := { || MovWin(oChild, oCursor) }    //enviandole ventana hija MDI

   #define SM_CYCAPTION  4
   #define SM_CYFRAME   33
   #define SM_CXPADDEDBORDER  92

//--------------------------//
FUNCTION MovWin(oDW,oCur)
   LOCAL aXY   := GetCursorPos()
   LOCAL aPun  := GetWndRect(oDW:hWnd)

   local nHeight

IF oDW:CLASSNAME() == "TMDICHILD"

   nHeight := ( GetSysMetrics(SM_CYFRAME) + ;
                GetSysMetrics(SM_CYCAPTION) + ;
                GetSysMetrics(SM_CXPADDEDBORDER) ) * 2.3666

   aXY[1] -= (aPun[1]-nHeight)  
   aXY[2] -= aPun[2]+1

ELSE
   aXY[1] -= aPun[1]
   aXY[2] -= aPun[2]
ENDIF

   DO WHILE GetKeyState( VK_LBUTTON )
      SetCursor( oCur:hCursor )
      aPun := GetCursorPos()
      MoveWindow( oDW:hWnd, aPun[1]-aXY[1], aPun[2]-aXY[2],,, .T. )
      SysRefresh()
   ENDDO
   CursorArrow()
RETURN .T.
 

Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Mover un Dialogo sin Caption

Postby Willi Quintana » Thu Nov 26, 2015 3:51 pm

Funcionando en Windows 10
Salu2
Willi
User avatar
Willi Quintana
 
Posts: 1019
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 35 guests