| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
zankiu Lt Cmdr

Registrado: 23 Ene 2008Mensajes: 106
|
Publicado: Jue 06 Nov, 2008 7:08 pm Asunto: StatusBar::cómo colocar elementos en él |
|
|
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 |
|
 |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
|
| Volver arriba |
|
 |
zankiu Lt Cmdr

Registrado: 23 Ene 2008Mensajes: 106
|
Publicado: Vie 07 Nov, 2008 5:43 pm Asunto: |
|
|
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 |
|
 |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Vie 07 Nov, 2008 7:29 pm Asunto: |
|
|
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 Suerte. _________________ ¡ADELANTE CON ESTE SUPER FORO! |
|
| Volver arriba |
|
 |
zankiu Lt Cmdr

Registrado: 23 Ene 2008Mensajes: 106
|
Publicado: Vie 07 Nov, 2008 8:17 pm Asunto: |
|
|
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 |
|
 |
zankiu Lt Cmdr

Registrado: 23 Ene 2008Mensajes: 106
|
Publicado: Vie 28 Nov, 2008 7:04 pm Asunto: |
|
|
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 |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Dom 30 Nov, 2008 7:08 am Asunto: |
|
|
"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 |
|
 |
zankiu Lt Cmdr

Registrado: 23 Ene 2008Mensajes: 106
|
Publicado: Lun 01 Dic, 2008 6:43 pm Asunto: |
|
|
| Gracias _Leo, funciona a la perfección. |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mar 02 Dic, 2008 8:56 am Asunto: |
|
|
| _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 |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mar 02 Dic, 2008 10:40 am Asunto: |
|
|
| 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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mar 02 Dic, 2008 11:06 am Asunto: |
|
|
| _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 |
|
 |
|