Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Incorporar elementos a StatusBar

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Incorporar elementos a StatusBar Responder citando

¿Se puede poner un elemento de forma dinámica en un panel de un StatusBar? Me explico: Tengo una barra de estado con tres paneles. En el primero está el nomrbe del usuario, en el segunod la fecha y en el tercero me gustaría poner un reloj. Pensaba usar el que viene con LMD Tools (TLMDClock).

Hasta ahora había usado un barra de progreso, pero ocupando toda la barra:
Código:
TLMDProgressFill *Barra = new TLMDProgressFill(this);
Barra->Parent = StatusBar1;

pero si intento hacer algo similar con un elemento metiéndolo dentro de un panel
Código:
TLMDClock *Reloj = new TLMDClock(this);
Reloj->Parent = StatusBar1->Panels->Items[0];

me da un error de compilación E2034 Cannot convert "TStatusPanel" to "TWinControl"
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Hola Angel!

Sino recuerdo mal no es posible especificar el panel en el que quieres insertar el elemento. Es decir, únicamente puedes especicifar la barra de estado y luego jugar con su propiedad left

Código:

ProgressBar->Parent=StatusBar;
ProgressBar->Left=StatusBar->Panels->Items[0]->Width+2;
ProgressBar->Width=StatusBar->Panels->Items[1]->Width-2;


Espero que te valga
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Hola, con vuestra ayuda he conseguido mostrar el TProgressBar (barraProgreso) en el 2º panel de mi TStatusBar (sbPrincipal).

La barraProgreso la uso para indicar el progreso de análisis de ciertos ficheros que leo línea a línea y que a menudo tienen más de un millón de líneas. Para no bloquear mi aplicación con la lectura del fichero la hago mediante un hilo aparte (segundoHilo), y voy actualizando en una variable global la posición actual del cursor dentro del fichero, esto me permitirá ir dibujando en la barraProgreso el % analizado del fichero.

Mi barraProgreso cambia su Position en el evento OnTimer de un TTimer, y es ahí donde la he declarado
Código:
static TProgressBar *barraProgreso = new TProgressBar(sbPrincipal);
barraProgreso->Parent = sbPrincipal;
, pues he probado a declararla como private en el formulario principal o como variable global al principio del cpp pero me daba errores. Aparentemente funciona bien.

El problema lo tengo cuando finaliza la ejecución del hilo, pues aunque ejecute sbPrincipal->Invalidate(); se sigue mostrando la barraProgreso. He indagado algo y parece que haciendo
Código:
barraProgreso->Parent = NULL
puedo borrar la barraProgreso de la barra de estado, pero ¿dónde debería colocar esta última asignación?

¿Hay otro modo mejor de hacer lo que ya hago?

Gracias.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Ya que la creas de forma dinámica la barra, destrúyela al terminar
Código:
delete barraProgreso

_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.