https://foro.gambas-es.org/viewtopic.php?f=1&t=313
-----------------------------------
Ortox
Sabado, 02 Enero 2010, 06:38

Cambiar Título A Un Message
-----------------------------------
Hola de nuevo. Estoy cansada de buscar y no encuentro la solución a mi duda.

He creado un message.warning y el título de esta ventana es el título de mi proyecto. Me gustaría poder cambiar este título para darle el que yo quiera. O si no se puede cambiar, me gustaría eliminarlo (aunque para eso podría crear un formulario nuevo con sus botones, su imagen y su texto...).

Buscando he encontrado algo como esto:

[color=red]Dialog.Title = "Texto del título"[/color]
Pero creo que esto sólo sirve para cuadros de diálogos y no para ventanas de message.

Muchas gracias.


-----------------------------------
ahtonio
Sabado, 02 Enero 2010, 10:52

Re: Cambiar Título A Un Message
-----------------------------------
Hola Ortox, he estado haciendo pruebas con los messages y cuando muestras un Warning, lo que se ve en la barra de titulo es el titulo de la aplicacion. He querido cambiarlo temporalmente, para que se mostrara lo que quieras y restaurarlo antes de salir del metodo, pero naturalmente la propiedad Title es de solo lectura.

No hay forma de cambiar en un dialogo de la clase message el titulo, no obstante es muy facil crearte un formulario para mensajes personalizado y que haga lo que tu pretendes y mas. 

Si nadie tiene algo parecido para darte, te hago algo y te lo posteo.

Un abrazo.


-----------------------------------
soplo
Sabado, 02 Enero 2010, 11:26

Re: Cambiar Título A Un Message
-----------------------------------
Hola.
Un message es un formulario modal. El nativo viene como viene y tiene las cualidades que quieres. Tu puedes crearte uno a tu medida con toda facilidad. Me invento uno como ejemplo:

Estas seríal las propiedades
[code linenumbers=false syntax=gambas]property Titulo as string 'crear la propiedad Título
$Titulo as string 

property texto as string 'crear la propiedad texto
$Texto as string

property read Respuesta as integer 'la respuesta que obtengas
private $Respuesta as integer[/code]
Al escribir esto habrán aparecido cuatro funciones en las que pondremos este código
[code linenumbers=false syntax=gambas]private function Titulo_Read() as string
return $titulo
end

private sub Titulo_Write(Value as string) 
$Titulo=value
end

private sub Texto_Read() as string
return $Texto
end

private sub Texto_Write(Value as string) 
$Texto=value
end

private function Respuesta_Read as integer
return $Respuesta
end
[/code]
Ya tienes las propiedades funcionales en tu clase. A partir de aquí en tu clase para sabe el contenido de cualquiera de las dos miras en $Titulo y en $Texto. Ahora declaremos los métodos

[code linenumbers=false syntax=gambas]Public Sub Question 'método para la pregunta
Dim Icono as new picture=Interrogacion, TextoBoton as string="Ok"

HacerVentana(Titulo,Texto,Icono,TextoBoton)
end[/code]

[code linenumbers=false syntax=gambas]Public Sub Info 'Método para la información
Dim Icono as new picture, TextoBoton="Si", TextoBoton2 as string = "No"
Icono.Picture=Stock["16/question"] 'ponerle el icono de interrogación
HacerVentana(Titulo,Texto,Icono,TextoBoton, TextoBoton2)
end[/code]

[code linenumbers=false syntax=gambas]Public Sub Info 'Método para la información
Dim Icono as new picture
Icono.Picture=Stock["16/info"] 'ponerle el icono de información
HacerVentana(Titulo,Texto,Icono,TextoBoton)
end[/code]

Y este es el código de crear la ventana y ponerle las cosas
[code linenumbers=false syntax=gambas]private sub CrearVentana(Titulo,Texto,Icono as PictureBox,TextoBoton as string, OPTIONAL TextoBoton2 as string, OPTIONAL textoboton3 as string) 
Dim F as new form 'crear la ventana
Dim L as new Label(F) 'crear un nuevo label en F
Dim I as new PictureBox(F) 'crear un nuevo PictureBox en F
Dim B1 as new button(F) 'crear primer botón en F
Dim B2 as new button(F) 'crear el segundo botón
Dim B3 as new buttón(F) 'crear el tercer botón

F.text=Titulo 'poner el título 'poner el título a la ventana
F.L.text=Texto 'poner el texto en el label de la ventana
F.width=XX 'la anchura que queramos
F.Height=XX 'la altura que queramos
F.Center 'centrarlo en pantalla
F.border=1 'ponerle el borde sólido

F.B1.text=textoboton 'poner las propiedades de primer botón
F.B1.Width=XX 'la anchura que queramos
F.B1.Height=XX 'la altura que queramos
F.B1.Top=X 'la posición que queramos
F.B1.Left=X 'la posición que queramos

if B2 then 'si se dió texto para un segundo botón
   F.B2.text=TextoBoton2
   F.B2.Width=XX 'la anchura que queramos
   F.B2.Height=XX 'la altura que queramos
   F.B2.Top=X 'la posición que queramos
   F.B2.Left=X 'la posición que queramos
else
   F.B2.delete 'eliminarlo
endif

if B3 then 'si se dió texto para un tercer botón
   F.B3.text=TextoBoton3
   F.B3.Width=XX 'la anchura que queramos
   F.B3.Height=XX 'la altura que queramos
   F.B3.Top=X 'la posición que queramos
   F.B3.Left=X 'la posición que queramos
else
   F.B3.delete 'eliminarlo
endif

P.width=XX 'la anchura del icono que queramos
P.height=XX 'la altura del icono que queramos
P.Top=X 'La posición del icono que queramos
P.Left=X 'La posición del icon que queramos

F.showmodal() 'mostralo en pantalla
end[/code]

Cuando quieres usarlo en tu formulario Creas una instancia de la clase MiMessage y lanzas el método que quieras
Dim MiDialogo as new MiMensaje

...
MiDialogo.question
...

Se que tengo errores de bulto porque por ejemplo no he programado el evento click de los botones para que retornen un valor que debería ser algo así como "$respuesta=1" para el caso Si y $Respuesta=2 para el caso "No", pero lo fundamental es que te quedes con la idea.

Un saludo


