Page 1 of 1

Quitar boton [X] de un dialogo

PostPosted: Mon Mar 15, 2021 2:15 pm
by Compuin
Saludos foro,

Como puedo ocultar el Boton [X] en un dialogo?

Gracias de antemano

Re: Quitar boton [X] de un dialogo

PostPosted: Mon Mar 15, 2021 2:51 pm
by José Vicente Beltrán
Hola,
eso puedes hacerlo desde el editor de recursos, 'system menu -> No'

saludos :shock:

Re: Quitar boton [X] de un dialogo

PostPosted: Mon Mar 15, 2021 2:52 pm
by Compuin
Hola Jose Vicente,

Gracias por tu respuesta.

En mi caso no uso recursos para los Dialogos.

Como lo resuelvo?

Re: Quitar boton [X] de un dialogo

PostPosted: Mon Mar 15, 2021 4:38 pm
by carlos vargas
Code: Select all  Expand view


PROCEDURE DisableX( oDlg, lDisable )
   LOCAL hMenu  := 0
   LOCAL nCount := 0

   DEFAULT lDisable := TRUE

   IF lDisable
      hMenu  := GetSystemMenu( oDlg:hWnd, FALSE )
      nCount := GetMItemCount( hMenu )
      IF oDlg:ClassName() = "TDIALOG"
         RemoveMenu( hMenu, 1, nOR( 1024, 2) )
      ELSE
         RemoveMenu( hMenu, nCount - 1, nOR( 1024, 2 ) )
         RemoveMenu( hMenu, nCount - 2, nOR( 1024, 2 ) )
      ENDIF
      DrawMenuBar( oDlg:hWnd )
   ELSE
      GetSystemMenu( oDlg:hWnd, TRUE )
      DrawMenuBar( oDlg:hWnd )
   ENDIF

RETURN

 

Re: Quitar boton [X] de un dialogo

PostPosted: Mon Mar 15, 2021 4:47 pm
by karinha
Teste:

Code: Select all  Expand view

   STYLE nOr( DS_SYSMODAL, DS_MODALFRAME )

   WS_POPUP
   WS_CAPTION
   WS_SYSMENU
   WS_3DLOOK
   WS_VISIBLE
   WS_THICKFRAME
   WS_VISIBLE
   WS_OVERLAPPEDWINDOW )
 

Re: Quitar boton [X] de un dialogo

PostPosted: Mon Mar 15, 2021 5:08 pm
by FranciscoA
Compuin wrote:Hola Jose Vicente,

Gracias por tu respuesta.

En mi caso no uso recursos para los Dialogos.

Como lo resuelvo?


Hola.
Intenta asi:
Code: Select all  Expand view
DEFINE DIALOG oDlg SIZE nWd,nHt PIXEL TITLE "LIGAS PARA LICORES" ;
       STYLE (WS_POPUP|WS_VISIBLE)
 


ó

Code: Select all  Expand view
DEFINE DIALOG oDlg SIZE nWd,nHt PIXEL TITLE "LIGAS PARA LICORES" ;
       STYLE (WS_POPUP|WS_VISIBLE|WS_CAPTION)
 

Re: Quitar boton [X] de un dialogo

PostPosted: Mon Mar 15, 2021 5:46 pm
by Compuin
karinha wrote:Teste:

Code: Select all  Expand view

   STYLE nOr( DS_SYSMODAL, DS_MODALFRAME )

   WS_POPUP
   WS_CAPTION
   WS_SYSMENU
   WS_3DLOOK
   WS_VISIBLE
   WS_THICKFRAME
   WS_VISIBLE
   WS_OVERLAPPEDWINDOW )
 


Muchas gracias, ya funciona como lo recomendastes

Re: Quitar boton [X] de un dialogo

PostPosted: Tue Mar 16, 2021 6:58 pm
by karinha
Gracias Master Carlos Vargas,

Code: Select all  Expand view

// \SAMPLES\DISABLEX.PRG - Example, By: Carlos Vargas. In xHarbour, perfect.

#Include "FiveWin.ch"

#Define TRUE  .T.
#Define FALSE .F.

FUNCTION Main()

   LOCAL lDisable AS LOGICAL
   LOCAL oDlg AS OBJECT
   LOCAL oIco AS OBJECT
   LOCAL cTest := "Hello world!   "

   lDisable := TRUE

   DEFINE ICON oIco FILE "..\icons\fivewin.ico"

   DEFINE DIALOG oDlg TITLE "DialogBox and DisableX" COLOR "W+/B" ;
      ICON oIco

   @ 1, 3 GET cTest DIALOG oDlg

   @ 3, 5 BUTTON "&Ok" DIALOG oDlg SIZE 40, 12 ;
      ACTION MsgInfo( "Any action here!" ) DEFAULT

   @ 3, 16 BUTTON "&Cancel" DIALOG oDlg SIZE 40, 12 ACTION( oDlg:End() )

   ACTIVATE DIALOG oDlg CENTERED ;
      ON INIT( DisableX( oDlg, lDisable ) )

RETURN NIL

PROCEDURE DisableX( oDlg, lDisable )

   LOCAL hMenu  := 0
   LOCAL nCount := 0

   DEFAULT lDisable := TRUE

   IF lDisable

      hMenu  := GetSystemMenu( oDlg:hWnd, FALSE )
      nCount := GetMItemCount( hMenu )

      IF oDlg:ClassName() = "TDIALOG"

         RemoveMenu( hMenu, 1, nOR( 1024, 2) )

      ELSE

         RemoveMenu( hMenu, nCount - 1, nOR( 1024, 2 ) )

         RemoveMenu( hMenu, nCount - 2, nOR( 1024, 2 ) )

      ENDIF

      DrawMenuBar( oDlg:hWnd )

   ELSE

      GetSystemMenu( oDlg:hWnd, TRUE )

      DrawMenuBar( oDlg:hWnd )

   ENDIF

RETURN

// FIN - 16/03/2021 - Covid-19 - kapiabafwh@gmail.com
 


Saludos.