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 

StatusBar::cómo colocar elementos en él

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: StatusBar::cómo colocar elementos en él Responder citando

Hola a todos.

Estoy trasteando el StatusBar, no he encontrado mucha info en la web, de lo que he visto va dividido por paneles... pero poco más.

Tengo información que ahora mismo está en un TLabel y me gustaría colocarla en la parte derecha de una StatusBar. Lo que veo que el truco de copiar y pegar el TLabel no sirve aqui.. jeje

He creado un panel.. y ahora cómo puedo colocar en dicho panel lo que tengo en el label?

en el label por ejemplo tengo:

Código:
this->Label1->Caption = "Quedan " + tHora.FormatString("nn:ss");


lo de la derecha del igual es lo que quiero que aparezca en la parte derecha del StatusBar.

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

Mira lo que me ha salido poniendo Statusbar en el buscador del foro:
https://cppbuilder.es/viewtopic.php?t=10920&highlight=statusbar
https://cppbuilder.es/viewtopic.php?t=8611&highlight=statusbar
Suerte Very Happy .
_________________
¡ADELANTE CON ESTE SUPER FORO!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Hola de nuevo.

Si, había visto los dos hilos y había llegado a esto:

Código:
 this->Label1->Caption = "Quedan " + tHora.FormatString("nn:ss");
 this->Label1->Parent = this->StatusBar1;
 this->Label1->Caption = this->StatusBar1->Panels->Items[0];


pero en la última línea me da error:

[C++ Error] appSniffer.cpp(440): E2034 Cannot convert 'TStatusPanel *' to 'AnsiString'

no se si el uso que estoy haciéndo es apropiado, que significa this->Label1->Parent = this->StatusBar1; ? y como puedo hacer para que no dé dicho error?

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

Veamos, el código
Código:

this->Label1->Parent = this->StatusBar1;

significa que el contenedor del label va a ser la barra de estado, sin ese código no podríamos hacerlo. En cuanto al error que te da la última línea mira de sustituirla por
Código:

this->Label1->Caption = this->StatusBar1->Panels->Items[0]->Text;

Yo lo he probado en un nuevo proyecto y me ha funcionado, si sigues teniendo problemas sigue preguntando Very Happy Suerte.
_________________
¡ADELANTE CON ESTE SUPER FORO!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Hola de nuevo.

He probado esto:

Código:
 this->Label1->Parent = this->StatusBarMain;
 this->Label1->Caption = "Quedan " + tHora.FormatString("nn:ss");
 this->Label1->Caption = this->StatusBarMain->Panels->Items[0]->Text;
 this->StatusBarMain->Left = 20;


pero no me aparece nada en la StatusBar

pero en cambio con esto:
Código:
this->StatusBarMain->Panels->Items[0]->Text = "Quedan " + tHora.FormatString("nn:ss");
this->StatusBarMain->Left = 20;


me aparece y como yo lo quiero.

Alguien sabe por qué?

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

Hola de nuevo.

Como ya veis en los anteriores comentarios tengo el problema de que si tengo:

Código:
this->Label1->Parent = this->StatusBar1;
this->Label1->Caption = this->StatusBar1->Panels->Items[0]->Text;


el Labe1 no me aparece en mi StatusBar, simplemente "desaparece", pude solvertarlo por otra vía.

Pero ahora quiero introducir un ProgressBar dentro de un StatusBar y tengo el mismo problema:

Código:
this->ProgressBar1->Parent = this->StatusBar1;


Con la anterior línea no consigo que aparezca la barra de progreso en la barra de estado simplemente "desaparece".

¿Qué no estoy teniendo en cuenta? puede que tenga alguna propiedad en false o true que no debería? He mirado y no sé a qué puede deberse.

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

"Desaparece" porque te falta indicarle la posición que ocupara dentro de su nuevo contenedor:
Código:
Label1->Caption = "Prueba";
Label1->Parent = StatusBar1;
Label1->Left = 20;
Label1->Top = 4;                   // <--

Aunque le veo poco sentido a meter un TLabel dentro de una barra de estado, ya que esta permite mostrar texto en cada uno de sus paneles:
StatusBar1->Panels->Items[0]->Text = "Prueba";

Para añadir la barra de progreso puedes hacer lo siguiente (si lo observas bien te servirá para cualquier control):
Código:
// Obtenemos el recuadro del panel donde queremos colocar el control
TRect rect;
SendMessage(StatusBar1->Handle, SB_GETRECT, 0 /*número de panel*/, (LPARAM)&rect);
InflateRect(&rect, -1, -1);

ProgressBar1->Position = 100;
ProgressBar1->Parent = StatusBar1;
ProgressBar1->BoundsRect = rect;
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Gracias _Leo, funciona a la perfección.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

_Leo escribió:
Aunque le veo poco sentido a meter un TLabel dentro de una barra de estado

Yo eso lo he usado para hacer un barra de progreso similar a la que hay definida en LMDTools, que además de la barra de progreso muestra información del mismo (por ejemplo el porcentaje)
Código:
void __fastcall TfTpv::CreaBarra()
{
     Panel3->AutoSize = false;
     Panel3->Height += 30;
     Panel3->Repaint();

     Estado = new TStatusBar(this);
     Estado->Parent      = Panel3;
     Estado->Align       = alTop;
     Estado->Font->Style = TFontStyles() <<fsBold>Repaint();
     Panel4->AutoSize = true;

     Barra = new TProgressBar(this);
     Barra->Parent   = Estado;
     Barra->Align    = alClient;
     Barra->Min      = 0;
     Barra->Position = 0;
     Barra->Smooth   = true;
     SendMessage(Barra->Handle, PBM_SETBARCOLOR, 0, clBarra);
                                                     
     Aviso = new TLabel(this);
     Aviso->Parent      = Barra;
     Aviso->Align       = alClient;
     Aviso->Alignment   = taCenter;
     Aviso->Font->Style = TFontStyles() <<fsBold>Transparent = true;
     Aviso->Caption     = "";
     Aviso->Layout      = tlCenter;
     Aviso->BringToFront();
     Panel3->AutoSize = true;
     Panel3->Repaint();
     Application->ProcessMessages();
}
//---------------------------------------------------------------------------

_________________
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

Angel escribió:
Yo eso lo he usado para hacer un barra de progreso similar a la que hay definida en LMDTools, que además de la barra de progreso muestra información del mismo (por ejemplo el porcentaje)

Tienes una barra de progreso que hace eso en la pestaña "Samples" llamada "TCGauge".

Decía lo del TLabel porque si necesito cambiar algún atributo del texto acabaría antes usando el evento "OnDrawPanel" de la barra.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

_Leo escribió:
Tienes una barra de progreso que hace eso en la pestaña "Samples" llamada "TCGauge".

Pues no conocía ese elemento; tendré que investigarlo. Gracias Leo. Aprovecho para hacerte otra pregunta, que he dejado por ahí en un hilo: ¿Podría meterse el ShowProgress de un QucikReport como un TProgressBar en vez de como el panel que sale en medio de la pantalla?
_________________
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.