Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Vie 28 Sep, 2007 2:58 am Asunto: Redimiensionar las Columnas del DBGrid |
|
|
Buscando un poco por la red encontre una pagina para Redimensionar las columnas dentro de un DBGrid, asi que me puse a la tarea de Convertirlo de Delphi a c++ builder y funciona correctamente.
para usarse, se establece en el Evento OnResize del Form donde se encuentra el DBGrid.
| Código: | void __fastcall TFNota_Venta::FormResize(TObject *Sender)
{
::AutoSizeGrid(this->dbgDetalleVenta);
}
//--------------------------------------------------------------------------- |
y el codigo de la función es el siguiente
| Código: |
void __fastcall AutoSizeGrid(TDBGrid *dbGrid)
{
int TotalColumnWidth, ColumnCount, GridClientWidth, Filler, i;
ColumnCount = dbGrid->Columns->Count;
if(ColumnCount == 0 ) return;
TotalColumnWidth = 0;
for(i=0;i<ColumnCount;i++)
TotalColumnWidth += dbGrid->Columns->Items[i]->Width;
if(dbGrid->Options.Contains(dgColLines))
TotalColumnWidth += ColumnCount;
GridClientWidth = dbGrid->Width + GetSystemMetrics(SM_CXVSCROLL);
if(dbGrid->Options.Contains(dgIndicator))
{
GridClientWidth -=IndicatorWidth;
if(dbGrid->Options.Contains(dgColLines))
GridClientWidth--;
}
if(dbGrid->BorderStyle == bsSingle)
{
if(dbGrid->Ctl3D == true)
GridClientWidth = GridClientWidth-5;
else
GridClientWidth = GridClientWidth-3;
}
if(TotalColumnWidth < GridClientWidth)
{
Filler = (GridClientWidth-TotalColumnWidth)/ColumnCount;
for(i=0;i<ColumnCount;i++)
dbGrid->Columns->Items[i]->Width += Filler;
}
else if(TotalColumnWidth > GridClientWidth)
{
Filler = (TotalColumnWidth-GridClientWidth)/ColumnCount;
if((TotalColumnWidth-GridClientWidth)%ColumnCount != 0)
Filler++;
for(i=0;i<ColumnCount;i++)
dbGrid->Columns->Items[i]->Width -= Filler;
}
}
|
_________________
 |
|