FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Ajustar Dialogo a Ventana
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Ajustar Dialogo a Ventana
Posted: Thu Aug 25, 2011 06: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 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Ajustar Dialogo a Ventana
Posted: Sat Nov 04, 2017 12:04 PM

Alguna opcion ?

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: Ajustar Dialogo a Ventana
Posted: Tue Nov 07, 2017 09: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 (fw): Select all Collapse
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 (fw): Select all Collapse
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

Continue the discussion