Alterar Colunas no DBGrid
Tenho um DBgrid com n colunas eu queria alterar a posição e o nome delas, sinceramente não tenho a mínima idéia de como isso é possível, alguém pode ajudar-me?
:oops:
:oops:
Anjo Azul
Curtidas 0
Respostas
Henry
19/07/2003
brother, tem uma classe q ate da pra brinca com a grade, este codigo alem de mudar os nomes permite inserir mais q uma linha nos titulos da coluna :
eis o codigo:
type
TAccessDBGrid = class(TCustomGrid);
No evento onDrawColumnCell escreva o código abaixo:
procedureTForm1.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
S1, S2: String;
begin
with TAccessDBGrid(DBGrid1) do
begin
//Limpando o Título da Coluna
RowHeights[0] := 32;
Canvas.Brush.Style := bsClear;
//Títulos da Coluna
case Column.Index of
0: begin
Column.Title.Caption := ´´;
S1 := ´Row 1´;
S2 := ´Row 2´;
end;
1: begin
Column.Title.Caption := ´´;
S1 := ´Row 1´;
S2 := ´Row 2´;
end;
end;
//Escrevendo o Título
Canvas.TextOut(Rect.Left+2, 2, S1);
Canvas.TextOut(Rect.Left+2, 16, S2);
end;
Explicando o Código
Ao declarar um tipo de uma classe ancestral e associando a classe filho, as propriedades que antes eram protegidas podem ser alteradas nesta classe filho. É o que acontece na Linha:
RowHeights[0] := 32;
A propriedade RowHeights é um vetor onde cada índice representa a linha do Grid. A linha inicial (Título), a altura é alterada para 32.
Após o titulo original da coluna ser alterada, os valores das linhas são armazenados nas variáveis S1 e S2. Depois quem faz o trabalho é a propriedade Canvas que posiciona os valores das variáveis em duas linhas no Título da coluna
eis o codigo:
type
TAccessDBGrid = class(TCustomGrid);
No evento onDrawColumnCell escreva o código abaixo:
procedureTForm1.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
S1, S2: String;
begin
with TAccessDBGrid(DBGrid1) do
begin
//Limpando o Título da Coluna
RowHeights[0] := 32;
Canvas.Brush.Style := bsClear;
//Títulos da Coluna
case Column.Index of
0: begin
Column.Title.Caption := ´´;
S1 := ´Row 1´;
S2 := ´Row 2´;
end;
1: begin
Column.Title.Caption := ´´;
S1 := ´Row 1´;
S2 := ´Row 2´;
end;
end;
//Escrevendo o Título
Canvas.TextOut(Rect.Left+2, 2, S1);
Canvas.TextOut(Rect.Left+2, 16, S2);
end;
Explicando o Código
Ao declarar um tipo de uma classe ancestral e associando a classe filho, as propriedades que antes eram protegidas podem ser alteradas nesta classe filho. É o que acontece na Linha:
RowHeights[0] := 32;
A propriedade RowHeights é um vetor onde cada índice representa a linha do Grid. A linha inicial (Título), a altura é alterada para 32.
Após o titulo original da coluna ser alterada, os valores das linhas são armazenados nas variáveis S1 e S2. Depois quem faz o trabalho é a propriedade Canvas que posiciona os valores das variáveis em duas linhas no Título da coluna
GOSTEI 0
Rjanuzzi
19/07/2003
Olá Anjo Azul,
Pelo que entendi sua dúvida é um pouco mais simples do que nosso amigo Henry imaginou.
Para o q vc quer fazer, é só dar 2 cliques em cima do dbgrid, abrirá uma janela para vc inserir Colunas (Tcolumns). Aí vc insere quantas quiser, e acessa as propriedades de cada uma no Object Inspector, como Field, Caption, largura, etc...
[]´s
rjanuzzi
Pelo que entendi sua dúvida é um pouco mais simples do que nosso amigo Henry imaginou.
Para o q vc quer fazer, é só dar 2 cliques em cima do dbgrid, abrirá uma janela para vc inserir Colunas (Tcolumns). Aí vc insere quantas quiser, e acessa as propriedades de cada uma no Object Inspector, como Field, Caption, largura, etc...
[]´s
rjanuzzi
GOSTEI 0