FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour "Pegar" DIALOGO a MAIN WINDOW
Posts: 729
Joined: Tue Oct 18, 2005 06:49 PM
"Pegar" DIALOGO a MAIN WINDOW
Posted: Thu Apr 27, 2006 12:22 PM

Para "pegar" un dialogo al MAIN WINDOW al iniciar mi programa, uso la clausula ON INIT, asi como oDlg:Move(x,y) para posicionar dicho dialogo dentro del WINDOW; al dialogo le quito el CAPTION asi este no se puede mover.

El problema lo tengo que el MAIN WINDOW si se puede mover y maximizar. Lo que quisiera es que cuando se mueva el MAIN WINDOW tambien se mueva con el el dialogo y que el MAIN WINDOW no se pueda MAXIMIZAR. Alguna sugerencia?

George

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
"Pegar" DIALOGO a MAIN WINDOW
Posted: Thu Apr 27, 2006 01:58 PM

George,

Para que el diΓ‘logo sea "child" de la ventana, usa la claΓΊsula OF:

DEFINE DIALOG ... OF oWnd

AsΓ­ se moverΓ‘ a la vez que se mueva la ventana.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 729
Joined: Tue Oct 18, 2005 06:49 PM
"Pegar" DIALOGO a MAIN WINDOW
Posted: Thu Apr 27, 2006 10:42 PM

Antonio

Asi es que lo tengo desde el principio, debe ser otra cosa que me falta.

Abajo esta el codigo simplificado a ver si tu puedes ver algo que yo estoy pasando por alto

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
FUNCTION Main()
BWCCRegister(GetResources())

PUBLIC oWnd

DEFINE FONT oFont NAME "MS SANS SERIF" SIZE 0,-8 //BOLD
DEFINE FONT oFont01 NAME "VERDANA" SIZE 0,-11 BOLD

Inicio()

cAppliDir := SFN2LFN(cAppliDir)

DEFINE BRUSH oBrush COLOR CLR_WHITE
DEFINE WINDOW oWnd MDI;
FROM 4,10 TO 45.70, 140;
TITLE ("Customer's Verification Software");
BRUSH oBrush

oWnd:SetFont(oFont)

FrameBar()
oWnd:SetMenu(MainMenu())

ACTIVATE WINDOW oWnd ON INIT ( Seguridad(), ActivateDialog() )

RETURN (.T.)

FUNCTION ActivateDialog()

DEFINE DIALOG oDlg RESOURCE "DIALOG_4" of oWnd ;

.......
........
.........

ACTIVATE DIALOG oDlg NOWAIT ON INIT oDlg:Move(155, 85)

RETURN .T.

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Asi como esta me permite trabajar bien. Solo que al mover el MAIN WINDOWS el dialogo no se mueve con el. Si quito la clausula NOWAIT entonces no puedo acceder al menu en el MAIN WIDOWS

Gracias por todo

George

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
"Pegar" DIALOGO a MAIN WINDOW
Posted: Fri Apr 28, 2006 08:30 AM

George,

Es preciso que muestres como estΓ‘ definido "DIALOG_4" en tu fichero RC.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 729
Joined: Tue Oct 18, 2005 06:49 PM
"Pegar" DIALOGO a MAIN WINDOW
Posted: Fri Apr 28, 2006 12:31 PM

Antonio,

El DIALOG_4 no lo estoy definiendo como CHILD. El problema es que si lo defino como CHILD entonces, aunque se mueve bien con el WINDOW MAIN, el DIALOG_4 no se dibuja completo y algunos controle ni siquieran funcionan, los say no se dibujan, etc. Seguire investigando, pues es la primera vez que intento esto de iniciar mi programa en modo MDI con un DIALOG abierto. Quizas me puedas hacer alguna sugerencia.

Saludos

George

Posts: 205
Joined: Fri Oct 07, 2005 05:07 PM
"Pegar" DIALOGO a MAIN WINDOW
Posted: Fri Apr 28, 2006 02:16 PM
Esto quiza te pueda servir

/*
  ╔════════════════════════════════════════════════════════════════════════╗
  β•‘ Program......: DlgChild.prg                                            β•‘
  β•‘ Date.........: 07-01-2004                                              β•‘
  β•‘ Author.......: Renzo A. Balboa Flores                                  β•‘
  β•‘ Compiler.....: Clipper Ver 5.3                                         β•‘
  β•‘ Description..: Clase TDlgChild hereda de TMDIChild                     β•‘
  β•‘                Child con dialogo inscrustado                           β•‘
  ╠════════════════════════════════════════════════════════════════════════╣
  β•‘ ModificaciΓ³n : Mon  - 14/Feb/2005  ---  01:27 AM                       β•‘
  β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•
*/

#Include 'Fivewin.ch'

CLASS TDlgChild FROM TMDIChild

     DATA oDlg
     DATA lModal  AS LOGICAL INIT .T.

     METHOD New()    CONSTRUCTOR
     METHOD Activate()
     METHOD DefControl( oCtrl )  INLINE ::oDlg:DefControl( oCtrl )
     METHOD End()
     METHOD Update()             INLINE ::oDlg:Update()
     METHOD ClassName()          INLINE 'TDIALOG'   //para tsbrowse

   ENDCLASS

//----------------------------------------------------------------------------//

METHOD New( cTitle, cResource, nTop, nLeft, nBottom, nRight, lPixel ) CLASS TDlgChild
   DEFAULT lPixel := .F.

   ::bEnd   := { || Nil }

   Super:New( ::nTop, ::nLeft, ::nBottom, ::nRight, cTitle, Nil, Nil, Nil, ;
              oApp:oWnd:oIcon, .F., Nil, Nil, Nil, Nil, .T., .F., Nil, Nil, .T., ;
              .T., .T., .F. )  //No Maximize

   If Empty( cResource )
      If lPixel
         DEFINE DIALOG ::oDlg FROM nTop, nLeft TO nBottom, nRight PIXEL OF Self STYLE WS_CHILD
         ::hWnd := 0
      Else
         DEFINE DIALOG ::oDlg FROM nTop, nLeft TO nBottom, nRight OF Self STYLE WS_CHILD
         ::hWnd := 0
      EndIf
   Else
      DEFINE DIALOG ::oDlg RESOURCE cResource OF Self
   EndIf

   Return Self

//----------------------------------------------------------------------------//

METHOD Activate( bInit ) CLASS TDlgChild
   Local nW := If( IsWinNT(),  8, 8 )
   Local nH := If( IsWinNT(),33, 27 )
   Local oChild := Self

   ACTIVATE DIALOG ::oDlg NOWAIT VALID ( oChild:End(), .T. )

   ::oDlg:Move( 0,0 )

   ::nWidth := ::oDlg:nWidth + nW
   ::nHeight := ::oDlg:nHeight + nH

   Super:Activate(,,,,,,, bInit, )
/*( cShow, bLClicked, bRClicked, bMoved, bResized, bPainted,;
                 bKeyDown, bInit, bUp, bDown, bPgUp, bPgDn, bLeft, bRight,;
                 bPgLeft, bPgRight, bValid ) */
   Return Self

//----------------------------------------------------------------------------//


Mode de uso:
  oDlg := TDlgChild( "Tu Titulo", "DLGRECURSO" )


Para los controles los declaras normal
Saludos/regards

RenOmaS



skype: americo.balboa
Posts: 729
Joined: Tue Oct 18, 2005 06:49 PM
"Pegar" DIALOGO a MAIN WINDOW
Posted: Sat Apr 29, 2006 02:51 AM

Renomas

Gracias por tu ayuda
Pero al tratar de compilar la clase que me enviaste se me genera un error: Unresolved external symbol HB_FUN_TDLGCHILD_END.
Parece que no existe el metodo END.

Saludos

George

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
"Pegar" DIALOGO a MAIN WINDOW
Posted: Sat Apr 29, 2006 06:40 AM

George,

Por favor revisa el ejemplo samples\TestMdi4.prg

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 729
Joined: Tue Oct 18, 2005 06:49 PM
"Pegar" DIALOGO a MAIN WINDOW
Posted: Sun Apr 30, 2006 02:08 PM

Antonio,

Solucionado gracias al ejemplo testmdi4.prg

Gracias

George

Continue the discussion