Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   MessageDlg o Application.MessageBox con 2 lieneas de mensaje (https://www.clubdelphi.com/foros/showthread.php?t=59211)

BuRtOn 18-08-2008 02:43:41

MessageDlg o Application.MessageBox con 2 lieneas de mensaje
 
Saludos amigos, cree este nuevo hilo para preguntar una cosa que vi en visual basic y quiero saber si en delphi existe esa posibilidad, pues fijence que mi profesor de visual creo un boton y que al oprimirlo saliera un MessageDlg en visual es un MessageBox.Show, el hecho es que el mensaje salia de la siguiente forma:

MessageBox = "Hola A todos esto es una"
"Prueba mensaje 2 lienas"


Y no quiero que salga como siempre y por defecto:

MessageBox = "Hoa A todos esto es una prube mensaje 2 lineas"

el mensaje salio en dos lienas como lo observa en el ejemplo, en delphi siempre me limito a escribir mensajes cortos, pero ahora me toca escribir algo de una longitud considerable y no se como pasar al siguien carril o linea...yo utilizo el Applicatio.MessageBox y el MessageDlg, por favor si alguien sabe como es el truco, o la forma de hacer posible esto, se lo agradeceria, Muchisimas gracias....

enecumene 18-08-2008 02:55:53

Haz esto:

Messagebox = "estoy probando esta propuesta#13
porque la linea es muy larga"

Sólo agregas "#13" que equivale a un línea nueva, creo que esto es lo que buscas.

Saludos.

Delphius 18-08-2008 02:56:58

No se... che... Ummm... ¿probaste con poner un #13 entre ambos texto? ¿Algo como esto?;):

Código Delphi [-]
Application.MessageBox(PChar('Este en la primera linea' + #13 + 'Este en la segunda'),PChar('titulo'),MB_OK)

Saludos,

enecumene 18-08-2008 02:57:00

Edito: Delphius ha puesto un ejemplo más claro.

Delphius 18-08-2008 03:02:06

Fernando, nos vamos a tener que ponernos de acuerdo:D. Si si hacemos lio tal vez Emilio nos baja el sueldo:D:D

Encima que algunos se fueron de vacaciones y nos dejaron más trabajo!:D

Saludos,

BuRtOn 18-08-2008 03:03:32

Huy gracias...Delphius una pregunta, es que a mi me gusta entender las cosas, y mi pregunta es, para que utilizas el PChar, que funcion cumple..???, es que lo he visto en otra ocasion....por ejemplo cuandop trate de editar el binario en el registro, tu me pasaste un codigo y obtenia un PChar....gracias a todos por su grandioso tiempo..

enecumene 18-08-2008 03:05:02

Cita:

Empezado por Delphius (Mensaje 308086)
Fernando, nos vamos a tener que ponernos de acuerdo:D. Si si hacemos lio tal vez Emilio nos baja el sueldo:D:D

Encima que algunos se fueron de vacaciones y nos dejaron más trabajo!:D

Saludos,

¿Bajarnos el sueldo? :eek:, joder, eso es lo que menos quisiera :D

Delphius 18-08-2008 03:20:31

Cita:

Empezado por BuRtOn (Mensaje 308087)
Huy gracias...Delphius una pregunta, es que a mi me gusta entender las cosas, y mi pregunta es, para que utilizas el PChar, que funcion cumple..???, es que lo he visto en otra ocasion....por ejemplo cuandop trate de editar el binario en el registro, tu me pasaste un codigo y obtenia un PChar....gracias a todos por su grandioso tiempo..

Por empezar, TApplication.MessageBox() necesita de 2 parámetros PChar. Un PChar es un tipo un tanto especial... para hacerlo simple es un puntero a un conjunto de caracteres. De modo que cuando uno hace PChar(Algo), le está indicando que lea el contenido de la dirección de memoria de la variable algo.

Lo que sucede es que si uno pone un string cualquiera en dichos parámetros el compilador solito no reniega y se encarga de hacer la "conversión" necesaria. Pero si tu quieres mostrar el contenido de una variable string, el compilador te dirá que es incompatible el String con PChar. Necesitarás hacer uso de PChar.

Por otro lado, te tengo una sorpresita. Esto dice la ayuda sobre TApplication.MessageBox():

Cita:

Use MessageBox to display a generic dialog box a message and one or more buttons. Caption is the caption of the dialog box and is optional.

MessageBox is an encapsulation of the Windows API MessageBox function. TApplication’s encapsulation of MessageBox automatically supplies the missing window handle parameter needed for the Windows API function.

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.

The Flags parameter specifies what buttons appear on the message box and the behavior (possible return values). The following table lists the possible values. These values can be combined to obtain the desired effect.
Presta atención a lo resaltado. Dice que los mensajes largos son cortados, para mostrarlos en otra linea. ¿Será?

Hagamos la prueba:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var texto: string;
begin
  texto := 'Este texto es lo suficientemente grande como para que tal vez no entre en un "dialogo normal"... hay que ver como se vé.... y continua.... y continua... ¿Tendrá fin esto? Veamos... che... ¿Se pasa a la segunda línea?';
  Application.MessageBox(PChar(texto),'titulo',MB_OK)
end;

¿Como se vé? ¿Lo corta? ¿Te gusta como queda?

No más te lo dejo como dato curioso;) Tu saca conclusiones. ¿Lo cortamos a mano?

Saludos,

BuRtOn 18-08-2008 03:25:13

Jejejeje, ya me salio perfecto...mi pregunta ahora es, existen algun mensaje mas bonito que el Application.MessageBox, me refiero mas llamativo a lo visual, con iconos que uno quiera agregarle o algo asi...o el Application.MessageBox es el mas profesional que hay ???

Delphius 18-08-2008 03:51:10

Cita:

Empezado por BuRtOn (Mensaje 308092)
Jejejeje, ya me salio perfecto...mi pregunta ahora es, existen algun mensaje mas bonito que el Application.MessageBox, me refiero mas llamativo a lo visual, con iconos que uno quiera agregarle o algo asi...o el Application.MessageBox es el mas profesional que hay ???

Lo más fácil, y relativamente rápido para hacer dialogos más bonitos y personalizados, es diseñar un form de tal forma que lo usemos como cuadro de diálogo.

El problema de usar MessageDlg y es que muestra los textos de los botones y los títulos en inglés. Una opción es traducir los recursos donde están los textos de los botones y títulos al idioma español (creo que ya alguien lo hizo y lo dejó a disposición). La otra usar MessageBox(). Que es un tanto parecida a MesageDlg (en cuanto a definir los botones, e ícono) pero ésta al mostrar el cuadro de díalogo además viene acompañada de sonido.

Otra es emplear el TApplication.MessageBox() que obliga a hacer uso del idioma del SO.

Si tu quieres lograr cuadros de díalogos bien personalizados lo mejor es destinar un form y darle forma.

Saludos,

BuRtOn 18-08-2008 03:54:46

Ha ok, entendido Delphius, gracias....eso si, lo que aun me quedo como flojo, fue lo de editar resgitros en binario.....me toca estudiar mas afondo eso....Mil gracias delphius, ha y oye, si quieres te conectas al MSN, y te paso la aplicacion que hice, para optimizar 5 puntos de tu sistema operativo...se que es una tonteria para ti, pero creeme que a mi me costo resto de trabajo, y la voy a hacer gratuita...si algo te la paso, para que me des tu punto de opinion....:)

VFont 14-09-2008 15:17:08

Generador de Mensajes
 
No se si llego muy tarde.

Si deseas algo rapido acude a esta dirección, es la Página del Sr. Miguel Conde y facilita un programa que genera el código de diversos tipos de mensajes (incluidos los de + de 1 línea como deseas) para distintos lenguajes (entre ellos Delphi) que luego puedes incluir en tu fuente, es gratuito.

Saludos a todos,

http://www.migacon.com.ar/msgbox.html

Caral 14-09-2008 15:46:41

Hola
Hace mucho tiempo que esta este programa en el ftp del club.
Genera diferentes tipos de mensajes, de la cantidad de lineas que se quiera y otras cosas.
El club tiene muchas cosas interesantes, no hace falta buscar en otros lados.
Saludos

mightydragonlor 24-09-2008 03:54:15

Excelente programa, pero tengo una sugerencia para el mismo, la razón es que existe un problema al ejecutar el código desde un TModule, la idea es que muestre además del código del mensaje, las unidades que son necesaria para poder mostrarlo, ya que casi me parto la cabeza en dos tratando de mostrar un mensaje así y por fin se ilumino mi pequeña y atrofiada mente, es necesario la unidades Forms, Windows y classes, no evitaría muchas rabias. :p

Delphius 24-09-2008 14:42:56

Como alternativa, entre las tantas utilidades que ofrece GExpert, hay una que permite diseñar cuadros de dialogos de manera muy rápida y sencilla. Lo bueno es que no hay necesidad de salir del IDE.

Saludos,


La franja horaria es GMT +2. Ahora son las 22:08:31.

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