Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-04-2013
doctorhd doctorhd is offline
Miembro
NULL
 
Registrado: abr 2013
Posts: 48
Poder: 0
doctorhd Va por buen camino
Texto cortado en MessageBox

Estimados, estoy desplegando un mensaje por pantalla utilizando Application.MessageBox, el tema es que el texto original se corta en 2 lineas, cuestión que no quiero que suceda. Investigando por ahí encontré que este es un comportamiento heredado del sistema operativo (win 7). Como puedo hacer para modificar este comportamiento.

Saludos.
Responder Con Cita
  #2  
Antiguo 08-04-2013
Avatar de ozsWizzard
ozsWizzard ozsWizzard is offline
Miembro
 
Registrado: may 2004
Ubicación: Murcia
Posts: 190
Poder: 20
ozsWizzard Va por buen camino
Supongo que si recorres el texto como si fuese un array y buscas los caracteres "13" y /o "10" y los quitas, o los reemplazas por un espacio, debería funcionar.
__________________
La Madurez se llama...
~~~Gaia~~~
Responder Con Cita
  #3  
Antiguo 08-04-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
doctorhd,

!!! Bienvenido al Club Delphi ¡¡¡

Cita:
Empezado por doctorhd
...desplegando un mensaje por pantalla utilizando Application.MessageBox, el tema es que el texto original se corta en 2 lineas...
Revisa este código:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
   i : Integer;
   Msg : String;
   
begin

   for i := 1 to 80 do
      Msg := Msg + IntToStr(i);

   MessageDlg(Msg,mtInformation,[mbOK],0);

   ShowMessage(Msg);

end;
El código anterior permite visualizar un Msg por pantalla sin ruptura de líneas con MessageDlg y ShowMessage.

Revisa esta información:
Cita:
Empezado por Delphi Help MessageBox method (TApplication):

...The value of the Text parameter is the message, which can be longer than 255 characters if necessary. Long messages are automatically wrapped in the message box

The value of the Caption parameter is the caption that appears in the title bar of the dialog box. Captions can be longer than 255 characters, but don't wrap. A long caption results in a wide message box...
Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 08-04-2013 a las 17:24:52.
Responder Con Cita
  #4  
Antiguo 08-04-2013
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.285
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Estaría bien que enseñaras cómo estás mostrando (código) el texto y cómo se está viendo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 08-04-2013
doctorhd doctorhd is offline
Miembro
NULL
 
Registrado: abr 2013
Posts: 48
Poder: 0
doctorhd Va por buen camino
Gracias a todos por sus respuestas y por la bienvenida. Respondiendo a:

Cita:
Empezado por nlsgarcia
Empezado por Delphi Help MessageBox method (TApplication):

...The value of the Text parameter is the message, which can be longer than 255 characters if necessary. Long messages are automatically wrapped in the message box

The value of the Caption parameter is the caption that appears in the title bar of the dialog box. Captions can be longer than 255 characters, but don't wrap. A long caption results in a wide message box...
La cantidad de caracteres que se despliegan es inferior a 255, tanto en el titulo como en el mensaje..

Cita:
Empezado por Neftali
Estaría bien que enseñaras cómo estás mostrando (código) el texto y cómo se está viendo.
Código:
.
.
const
    ConstNombreSistema: String = 'Sistema Prueba'; //Nombre sistema
    ConstVersionSistema: String = 'v1.0-2013';     //Version
    ConstNombreEmpresa: String ='Empresa Prueba';   //Empresa


resourcestring

     MsgRutaBDNoEncontrada='La ruta de acceso de la base de datos del sistema no ha sido encontrada, deberá ingresarla manualmente. ¿Desea efectuar esta operación?';

Implementation

Begin

    VarDescripcionSistema:= ConstNombreSistema + ' - ' + ConstVersionSistema + '...(' + ConstNombreEmpresa + ')';//Descripcion completa del sistema;

//Se informa al usuario que debe ingresar la ruta manualmente
     If Application.MessageBox(PWideChar(MsgRutaBDNoEncontrada), PWideChar(VarDescripcionSistema + MsgControlError), MB_YESNO + MB_DEFBUTTON1 + MB_ICONEXCLAMATION) = IDNO Then Begin
          .
          .
          .
     End //If
El mensaje desplegado es el siguiente:
Imágenes Adjuntas
Tipo de Archivo: jpg Mensaje.jpg (25,3 KB, 12 visitas)
Responder Con Cita
  #6  
Antiguo 08-04-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola doctorhd.

Application.MessageBox encapsula la la funcion MessageBox. La cantidad de caracteres por línea que muestra está predeterminada por el S.O. (acorde a la versión) y realizará el salto de línea de forma automática. No es posible alterar ese comportamiento.

En mi opinión, la solución que te resultará más versátil, es que realices tu propia función para presentar los mensajes; esto es muy sencillo de realizar usando un TForm mostrado de forma modal.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 08-04-2013
doctorhd doctorhd is offline
Miembro
NULL
 
Registrado: abr 2013
Posts: 48
Poder: 0
doctorhd Va por buen camino
ecfisa, estas seguro que no es posible modificar dicho comportamiento, mediando la misma API de Windows...

Saludos...
Responder Con Cita
  #8  
Antiguo 08-04-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola doctorhd.
Cita:
Empezado por doctorhd Ver Mensaje
ecfisa, estas seguro que no es posible modificar dicho comportamiento, mediando la misma API de Windows...

Saludos...
Hasta donde sé no es posible, nada dice al respecto la referencia de microsoft.

En este enlace, aunque de forma indirecta se habla del tema: Max. no. of characters in a message...
Y en este, al que hace referencia el anterior, hay un poco mas al respecto: MessageBox wrapping text...

Si existe alguna forma indocumentada de alterar el algorítmo original para lograr otro comportamiento, la ignoro.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 09-04-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
doctorhd,

Te sugiero considerar la solución propuesta en el Msg #6, la cual se adapta a la solución buscada. Otra opción sería implementar mensajes mas sucintos, para lo cual podrías seguir usando cualquiera de las opciones de visualización de mensajes de Delphi.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 09-04-2013 a las 00:25:40.
Responder Con Cita
  #10  
Antiguo 09-04-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por nlsgarcia Ver Mensaje
Otra opción sería implementar mensajes mas sucintos, para lo cual podrías seguir usando cualquiera de las opciones de visualización de mensajes de Delphi.
Totalmente de acuerdo.

Código Delphi [-]
...
const
 MSG = 'El programa no pudo encontrar la ruta a la base de datos.'
       +#10 + #10 + '¿ Desea ingresarla manualmente ?';
begin
  if Application.MessageBox(PChar(Msg),PChar('blabla...'), MB_YESNO+MB_ICONWARNING+MB_DEFBUTTON1) = IDNO then
    Application.Terminate;
  ...
Creo que mensajes similares a este tienen una presentación prolija y son lo suficientemente claros para el usuario.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 09-04-2013 a las 01:51:41.
Responder Con Cita
  #11  
Antiguo 09-04-2013
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.285
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Prueba un código como este, a ver si se acerca a lo que necesitas.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  res:TModalResult;
  AMsgDialog: TForm;
const
  MsgRutaBDNoEncontrada='La ruta de acceso de la base de datos del sistema no ha sido encontrada, deberá ingresarla manualmente. ¿Desea efectuar esta operación?';
begin
  // crear el mensaje
  AMsgDialog := CreateMessageDialog(MsgRutaBDNoEncontrada, mtWarning, [mbYes, mbNo]);
  // proteccion para liberar
  try
    // Añadir al mensaje el link
    AMsgDialog.Width := AMsgDialog.Width + 40;
    AMsgDialog.Caption := 'Sistema Prueva  - v1.02013...';
    // Visualizar la ventana
    res := AMsgDialog.ShowModal;
  finally
    FreeAndNil(AMsgDialog);
  end;
end;

Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #12  
Antiguo 09-04-2013
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.285
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
El resultado es algo así:



Aunque sinceramente, casi veo mejor el que has puesto tú...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #13  
Antiguo 09-04-2013
Avatar de ozsWizzard
ozsWizzard ozsWizzard is offline
Miembro
 
Registrado: may 2004
Ubicación: Murcia
Posts: 190
Poder: 20
ozsWizzard Va por buen camino
Entendí la pregunta fatal...

Aunque, como dicen por aquí, lo que mejor veo es formatear el mensaje, claro que así no te vale la constante...

Se puede hacer con varias constantes también, la parte de la pregunta, algo que va a ser muy estándar, puede ser una constante global por si misma.

Saludos
__________________
La Madurez se llama...
~~~Gaia~~~
Responder Con Cita
  #14  
Antiguo 09-04-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por Neftali Ver Mensaje
Aunque sinceramente, casi veo mejor el que has puesto tú...
+1


Hola doctorhd, no sé si hayas escuchado hablar de por qué el texto de los periódicos se imprime en columnas y no a todo lo ancho de la página:
Cita:
Además, con la división por columnas, la lectura resulta fácil y cómoda, pues sería mucho más monótono y cansino para la vista leer líneas de texto tan largas que ocupasen todo el ancho de una plana de periódico.
Esto, incluso, es una de las razones por las cuales no escribo código fuente más allá de la posición 75.
Responder Con Cita
  #15  
Antiguo 11-04-2013
doctorhd doctorhd is offline
Miembro
NULL
 
Registrado: abr 2013
Posts: 48
Poder: 0
doctorhd Va por buen camino
Gracias a todos por su ayuda, finalmente implemente mi propia función para enviar mensajes al usuario y aunque tienen razón en que estéticamente no es aconsejable mostrar mensajes extensos en solo una linea, quería tener mas control sobre como se mostraba dicha información al usuario.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Messagebox bothy Lazarus, FreePascal, Kylix, etc. 4 03-03-2010 09:13:08
Colocar el texto que quieras en los botones de un MessageBox advancexz Gráficos 1 30-01-2009 10:10:10
Messagebox aanil API de Windows 6 09-04-2008 14:58:34
cambiar el estilo del texto de MessageBox? Er_Manué Varios 1 16-12-2004 14:49:02
MessageBox Michel Varios 3 19-08-2003 20:58:54


La franja horaria es GMT +2. Ahora son las 09:44:50.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi