 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
kalux Master


Registrado: 21 Nov 2003Mensajes: 313Ubicación: Alicante - España
|
Publicado: Sab 19 Nov, 2005 6:59 pm Asunto: Como utilizar un THeaderControl |
|
|
Hola a todos,
Estoy intentado utilizar un THeaderControl y no me aclaro, ¿podeis echarme una mano?
Tengo un TPanel y en el he colocado un THeaderControl, he definido las secciones pero no se como utilizalo.
Gracias por adelantado. |
|
| Volver arriba |
|
 |
kalux Master


Registrado: 21 Nov 2003Mensajes: 313Ubicación: Alicante - España
|
Publicado: Sab 26 Nov, 2005 6:38 pm Asunto: |
|
|
Alguna aportacion ????
Un saludo. |
|
| Volver arriba |
|
 |
Picard Master


Registrado: 18 Ene 2004Mensajes: 218Ubicación: Palamos (Girona) España
|
Publicado: Sab 26 Nov, 2005 8:41 pm Asunto: |
|
|
Hola kalux, unicamente lo que puedo hacer es pasarte esto sacado de un libro, pero espero que te sirva:
| Cita: |
las secciones de un controlTHeaderControl pueden ser definidas tanto por la fase de diseño como durante la ejecucion del programa.En el primer caso tendremos que usar la propiedad "Sections" haciendo doble click sobre ella en el inspector de objetos, para acceder a la ventana de edicion de secciones. esta ventana es similar a la usada para definir paneles de una barra de estado.
tras pulsar el boton Add New podremos seleccionar el estilo de la seccion, introducir el texto que deseamos mostrar en ella, establecer la anchura y sus limites o fijar la alineacion del texto.Tambien podremos indicar si es posible pulsar las secciones como si fueran botones, generando el evento OnSectionClick correspòndiente.
Durante la ejecucion del programa tambien es posible definir las secciones de una cabecera, de forma similar a como definiamos los paneles de un TStatusBar, ya que el funcionamiento de ambos controles es muy parecido
|
| Código: |
Cosnt AnsiString Ficha[5] [3] = {
{"ftp","x2ftp.olu.fi"."programacion"},
{"www","borland.com","Inprise - Division Borland"},
{"gopher","g.ugr.es","Recursos"},
{"www","www.intel.com","Intel"},
{"www","www.ole.es","Sistema de busqueda en castellano"}};
|
| Cita: |
Cada vez que sea necesario dibujar el contenido de la ficha esta generara un evento OnPaint, que nosotros vamos a aprovechar para tomar los datos contenidos en la ficha y dibujarlos en el Canvas de la ventana teniendo en cuenta el ancho de cada una de las secciones de la cabecera.En caso de que sea necesario,la longitud de cada cadena se recorta hasta que su extension, en anchura no sea superior a la de la seccion. El codigo seria el siguiente:
|
| Código: |
Void __Fastcall TForm1::FormPaint(TObject*Sender)
{
int X,Y;
AnsiString Texto;
//Partimos de una coordenada vertical
Y = Cabecera->Heigth +2;
for(int N = 0;N <5; N++){ //Recorremos cinco fichas
X = 2; //Establecemos coordenada horizontal
for (int M = 0; M <3; M++) {//Tres datos por ficha
//Obtenemos el texto a mostrar
Texto = Ficha[N] [M];
//vamos eliminando caracteres del final
//hasta ajustar el texto al espacio disponible
while (Canvas->TextWidth(Texto) >=
Cabecera->Sections->Items[M]->Width)
Texto.SetLength(Texto.Length()-1);
//Pintamos el texto
Canvas->TextOut(X,Y,Texto);
//Y pasamos a la siguiente columna
X += Cabecera->Sections->Items[M]->Width;
}
//Pasamos a la siguiente fila
Y += Canvas->TextHeigth(Ficha[1] [1]);
}
}
void __fastcall TForm1::CabeceraSectionResize(THeaderControl *HeaderContrlol, THeaderSection *Section)
//Invalidamos el contenido de la ficha
//obligando a que sea redibujada
Invalidate();
|
vuelvo a insistir esto esta sacado de un libro, no hay ninguna intencion de copiar ni difundir material protegido por las leyes de autor unicamente se trata de echar una mano a alguien que tiene una duda _________________ El hombre es el unico ser que tropieza dos veces en la misma piedra ( en mi caso infinitas veces) |
|
| Volver arriba |
|
 |
kalux Master


Registrado: 21 Nov 2003Mensajes: 313Ubicación: Alicante - España
|
Publicado: Mie 30 Nov, 2005 6:33 pm Asunto: |
|
|
Muchas gracias, voy a estudiarlo.
Un saludo. |
|
| Volver arriba |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|