Ajustar Dialogo a Ventana

Ajustar Dialogo a Ventana

Postby Compuin » Thu Aug 25, 2011 6:54 pm

Estimados,

Alguien tendra un codigo que defina un Dialogo y lo ajuste dentro de una ventana, es decir, que esta sea su contenedora?

Gracias de antemano
FWH 20.12
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
Compuin
 
Posts: 1213
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada

Re: Ajustar Dialogo a Ventana

Postby Compuin » Sat Nov 04, 2017 12:04 pm

Alguna opcion ?
FWH 20.12
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
Compuin
 
Posts: 1213
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada

Re: Ajustar Dialogo a Ventana

Postby cmsoft » Tue Nov 07, 2017 9:48 am

Este ejemplo tiene una ventana principal con un xbrowse y una barra de botones, y le incrusta un dialogo. Luego la ventana se adapta al dialogo.

Code: Select all  Expand view

DEFINE WINDOW oWnd1 MDICHILD TITLE "A/B/M de Grupos"  OF oApp:oWnd NOZOOM ICON oApp:oIco FROM 05,05 TO 50,50
         DEFINE BUTTONBAR oBar  SIZE 60,60 OF oWnd1 2010
         DEFINE BUTTON RESOURCE "ALTA" OF oBar  TOOLTIP "Agregar Registro"    ACTION (Formu( .t. ),oBrw:Refresh())   PROMPT "Alta" TOP
         DEFINE BUTTON RESOURCE "MODI" OF oBar  TOOLTIP "Modificar Registro"  ACTION (Formu( .f. ),oBrw:Refresh())  PROMPT "Modifica" TOP
         DEFINE BUTTON RESOURCE "BAJA" OF oBar   TOOLTIP "Eliminar Registro"   ACTION (Baja( ),oBrw:Refresh()) PROMPT "Baja" TOP
         DEFINE BUTTON RESOURCE "SALE" OF oBar    TOOLTIP "Cerrar Ventana"      ACTION oWnd1:End()  PROMPT "Cerrar" TOP
   oWnd1:bGotFocus := { || oDlg:SetFocus}
   oWnd1:bResized := { || Incrusta( oWnd1, oDlg, .t.) } // Esta es la funcion que llamo para que el dialogo se ajuste
     DEFINE DIALOG oDlg RESOURCE "ABMS" OF oWnd1    
     REDEFINE XBROWSE oBrw DATASOURCE oQryBrw  COLUMNS "Codigo","nombre"  HEADERS "Código","Nombre"  SIZES 60,345 ID 111 OF oDlg AUTOSORT ON DBLCLICK (Formu( .f.),oBrw:Refresh())
     REDEFINE SAY oBrw:oSeek PROMPT "" ID 113 OF oDlg
     // Activo el dialogo y al iniciar muevo a 0,0
     ACTIVATE DIALOG oDlg CENTER NOWAIT ON INIT oDlg:Move(0,0) VALID(oWnd1:End())
   ACTIVATE WINDOW oWnd1 ON INIT Incrusta( oWnd1, oDlg, .T.) VALID(cerrar())
RETURN

FUNCTION Incrusta( oWnd, oDlg, lCentra)
  STATIC lActivo := .F.
  LOCAL  aRect, nPosY, nPosX, nPosXX, oIco
  IF IsIconic(oWnd:hWnd)
     RETURN .T.
  ENDIF
  IF !(lActivo)
     lActivo = .T.
     // Muevo dialogo a 0,0 para que quede bien incrustado...
     oDlg:Move(0,0)
     // Primero Seteo Como si Windows Fuera Estandar...
     oWnd:SetSize(oDlg:nWidth+8, oDlg:nHeight+27)
     // Calculo diferencia !
     aRect  := GetClientRect(oWnd:hWnd)
     nPosY := ABS(ABS(aRect[3]-aRect[1])-ABS(oWnd:nTop-oWnd:nBottom))
     nPosX := ABS(ABS(aRect[4]-aRect[2])-ABS(oWnd:nRight-oWnd:nLeft))
     nPosXX := INT(ABS(ABS(oWnd:nRight-oWnd:nLeft) - ABS(oApp:oWnd:nRight-oApp:oWnd:nLeft)) / 2)
     // Ahora la pongo JUSTA, JUSTA...
     oWnd:SetSize(oDlg:nWidth+nPosX,oDlg:nHeight+nPosY)          
     IF lCentra
        oWnd:Move(oApp:oWnd:nTop+5,nPosXX)
     ENDIF
     lActivo := .F.
     oWnd:SetIcon(oIco)
     oWnd:Refresh()
     oApp:oWnd:oWndClient:Refresh()
  ENDIF
RETURN .T.
 


Este es el recurso
Code: Select all  Expand view
ABMS DIALOG DISCARDABLE 15, 19, 551, 309
STYLE WS_CHILD
FONT 8, "MS Sans Serif"
{
  CONTROL "", 111, "TXBROWSE", WS_TABSTOP|0x00b000a1, 4, 44, 540, 240
  CONTROL "Buscar====>>>:", -1, "Static", SS_RIGHT|WS_GROUP, 8, 292, 56, 8
  CONTROL "", 113, "Static", WS_GROUP, 68, 292, 476, 8
}


Espero te sirva
User avatar
cmsoft
 
Posts: 1181
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: GUSPRE and 9 guests