Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   StatusBar de dos lineas (https://www.clubdelphi.com/foros/showthread.php?t=29160)

melon 13-01-2006 16:58:20

StatusBar de dos lineas
 
Saludos gente.
Bueno, pues quiero que en cada panel de mi statusbar haya dos lineas de texto. El caso es que no hace caso insertando #13#10. ¿Puede que sea porque la propiedad del texto es Text, no caption? al menos siempre que lo he intentado con algún caption sí que se puede aplicar el salto de linea.
He probado a instalarme la StatusBarPro de delphi area pero la propiedad sigue siendo text y vuelve a ignorar el salto de línea.
Alguna idea...

dec 13-01-2006 17:47:22

Hola,

Tal vez deberías plantearte el uso de otro control para lo que quieres hacer. ¿No? ;)

ContraVeneno 13-01-2006 18:28:21

Nunca he visto una barra de estado con dos líneas de texto :confused:
Que no significa que no se pueda o se deba hacer; pero estoy de acuerdo con dec, tal vez deberías buscar otra forma de hacerlo. A menos que la justificación sea suficiente para seguir intentando.

Chente(rMan) 13-01-2006 18:34:45

Y pro pura curiosidad, ¿que es lo que deseas poner en esas dos lienas?


Saludos.

roman 13-01-2006 19:21:33

Así nada más, creo que no se puede, pero poniendo Style = psOwnerDraw al panel del StatusBar donde queremos texto en varias líneas, es fácil lograrlo con el evento OnDrawPanel del StatusBar:

Código Delphi [-]
procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect);
var
  R: TRect;

begin
  R := Rect;
  DrawText(StatusBar.Canvas.Handle, PChar(Panel.Text), -1, R, 0);
end;

Si Panel.Text tiene #13#10, aparecerá en varias líneas.

// Saludos

dec 13-01-2006 19:41:17

Hola,

Cita:

Empezado por mi mismo conmigo mismo
Tal vez deberías plantearte el uso de otro control para lo que quieres hacer. ¿No? ;)

Pues va a ser que no, porque Román estuvo ahí para evitarlo. ;)

melon 14-01-2006 12:58:45

Bueno, muchas gracias por la rapidez en las respuestas.
Primero intenté con la statusbarpro, que sí que deja colocar objetos dentro y puse un label en cada panel, funcionaba pero al maximizar salían cosas realmente extrañas así que al final me lo monté con paneles individuales y dentro de cada uno un label.

De todas formas ahora probaré el código de roman.
Pues ahora que lo pienso creo que nunca he visto una barra de estado con dos lineas, pero bueno, tampoco queda mal.
El caso (para el que preguntaba) es que estoy programando un simulador de robótica y necesito que toda la información relativa al robot se muestre siempre en pantalla, y con una sóla linea no cabe (es bastante información). La tenía en una ventana aparte pero ahora resulta que 'estorba' y la he tenido que quitar de ahí, y como la interfaz la tengo ya muy sobrecargada, pues a la statusbar.
Saludos.

Lepe 14-01-2006 13:11:47

A ver si te interesa esta sugerencia de un sistema de notificación.

El sistema que usas ahora, el único problema que le veo es que solo se informa de un mensaje, si hay varios mensajes simultáneos, solo mostrará el último, el usuario no podrá leerlos todos.

En el Statusbar pones un botón o una imagen cuando llegue un mensaje, y cuando el usuario pone el ratón, se despliega un "ListBox", o una ventana personalizada donde aparece todo el texto completo. Todos los mensajes se van acumulando ahí junto con la hora en que salieron, sirve de log para tí y para el usuario.

Otra cosa, que puede ser más incómoda para el usuario, es una ventana tipo Messenger, pero dentro de tu programa, que se muestre y oculte sola, así es desatendido.

Otra cosa incluso más pesada, puede ser incorporar el Microsoft agent, de tal forma que por los altavoces de tu ordenador se escuchen los mensajes.

saludos

melon 14-01-2006 14:15:31

Bueno, el código de román funciona a la perfeccion, mil gracias, es usted un pozo de sabiduría caballero.
A lepe: Gracias por el apunte,pero la información que tengo que mostrar son variables del robot, así en un panel de la statusbar muestro las coordenadas de la posición, en otro las de la orientación, en otro el valor de las articulaciones,etc, osea que es el mismo tipo tipo de información siempre pero se va actualizando conforme el robot se mueve, y esa información debe verse en todo momento.
Un saludo


La franja horaria es GMT +2. Ahora son las 13:26:04.

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