Fixar Colunas DBGrid

Delphi

13/07/2004

Como poderia fixar uma ou duas colunas de um DBGrid. Fixar para que quando clicar nas setas de rolagem elas não se movam, as outras sim.


Valeu a força!!!

JR.


Jrjoliv2003

Jrjoliv2003

Curtidas 0

Respostas

Cabelo

Cabelo

13/07/2004

Não entendi sua dúvida, seria grids diferentes, ou no mesmo grid??

Cabelo


GOSTEI 0
Jrjoliv2003

Jrjoliv2003

13/07/2004

No mesmo DBGrid.

Por exemplo:

Tenho as colunas: Código, Nome, Endereço, Cep, Salário, Data de Nascimento e Função.

Quando clicar na seta para o lado direito as colunas Código e Nome ficarem paradas.

Valeu a força!!

JR.


GOSTEI 0
Cabelo

Cabelo

13/07/2004

Caro Colega..

agora eu entendi..

eu tive que fazer a mesma coisa a um tempo atrás, mas dá um pouco de trabalho, pq vc não usaria mais um DBGrid, mas passaria a usar 2 StringGrids, e construir os Grids tudo na mão..

vc usaria a mesma query, e no primeiro StringGrid vc iria dar um add das colunas Código e Nome, e no outro stringgrid o restante das colunas, desta forma as colunas código e nome ficariam fixas na tela.., e sem a barra de rolagem..

espero ter ajudado..

Cabelo


GOSTEI 0
Jrjoliv2003

Jrjoliv2003

13/07/2004

Cara se eu não tô enganado eu já vi isso...

Não sei se era com 2 stringgrid ou na mesma dbgrid...

Bom vou esprar mais um pouco, quem sabe alguém não já tenha feito isso.....


Vou copiar a sua dica!

Valeu!!

JR.


GOSTEI 0
Cabelo

Cabelo

13/07/2004

Firmeza..

Se precisar, ou melhor se optar por fazer por stringgrid, estou aki pra dar uma força..

sem mais

Cabelo


GOSTEI 0
Paulo_amorim

Paulo_amorim

13/07/2004

Cara se eu não tô enganado eu já vi isso... Não sei se era com 2 stringgrid ou na mesma dbgrid... Bom vou esprar mais um pouco, quem sabe alguém não já tenha feito isso.....


Olá
Só podem ser ESTAS colunas fixaS? se forem todas, fica mais fácil pois daí eh soh mudar a propriedade...

Até+


GOSTEI 0
Jrjoliv2003

Jrjoliv2003

13/07/2004

É q na DbGrid que tenho são 8 colunas. As 2 primeiras o usuário sempre precisará visualizar. As outras podem ficar escondidados conforme clicar na seta de rolagem para o lado direito...

Valeu a força!!

JR.


GOSTEI 0
Vinicius2k

Vinicius2k

13/07/2004

JR,

Creio que não seja possível fazer o que vc pretendo com o DBGrid nativo... talvez vc possa usar Grids de 3ºs como este da Quasidata : http://www.torry.net/db/visible/db_grids/dagridd.zip
Utilizo-o há cerca de 2 anos e nunca tive problemas... além de poder fixar as colunas vc poderá utilizar-se de várias outras propriedades muito úteis, como a popular ´zebra´, por exemplo...

Espero ter ajudado...

T+


GOSTEI 0
Cabelo

Cabelo

13/07/2004

Vinicius

desculpe minhaignorância, mas vc sabe se este componente funciona em .CLX ??

Cabelo


GOSTEI 0
Vinicius2k

Vinicius2k

13/07/2004

vc sabe se este componente funciona em .CLX ??


Cabelo, eu não tenho certeza pq nunca testei, mas acho q ele eh só VCL...
T+


GOSTEI 0
Cabelo

Cabelo

13/07/2004

Baixei o instalador aki e fiz a instalação..

Os componentes que usam a .VCL são excluídos quando vc estiver usando .CLX, mas mesmo assim sobram alguns dos componentes na paleta Alt..

Infelizmente o AltGrid não fica acessível..

obrigado por mais esta dica..

Cabelo


GOSTEI 0
Vinicius2k

Vinicius2k

13/07/2004

Confirmado então...
Mas Cabelo, vc realmente porta ou pretende portar seu código entre o Delphi e o Kylix? se não acho que vc abidica de de recursos da VCL sem muita necessidade... esta eh minha opinião... se sim, desconsidere então minha colocação pq vc estah correto...

T+


GOSTEI 0
Jrjoliv2003

Jrjoliv2003

13/07/2004

Cara,

instalar esse componente é mais fácil que tirar doce da boca de criança...
Que isso!!!!! os componentes RX deveriam ser assim também na hora da instalação....

Valeu mesmo!!

Bom,
como q eu fixo as colunas e deixo zebrado com esse componente?

Muito Obrigado mesmo!!!!

JR.


GOSTEI 0
Vinicius2k

Vinicius2k

13/07/2004

como q eu fixo as colunas e deixo zebrado com esse componente?


Zebra : AltOptions -> StripedRows = True e AltColors -> Stripe0 e Stripe1 com as cores desejadas...

Sendo absolutamente honesto, não estou encontrando nesta versão (1.6) a FixedCols presente na versão que eu uso (1.3)... como a minha é a versão paga, não sei dizer se nesta versão trial esta propriedade foi retirada...
Se realmente não estiver presente, peço que me desculpe a dica furada que dei, mas já vi no http://www.torry.net outras grids com esta propriedade na descrição do componente...

T+


GOSTEI 0
Jrjoliv2003

Jrjoliv2003

13/07/2004

Eu dei uma olhada. A maioria são pagos. pior que estou precisando fixar as colunas. Eu tô no trabalho e não tenho como ver se tem essa propriedade no componente. Mas valeu!!!

Vou procurar...

JR.


GOSTEI 0
Jrjoliv2003

Jrjoliv2003

13/07/2004

Encontrei isso aqui:

Colocar no item type do form:
type
THackDBGrid = class(TDBGrid);


Colocar no envento onshow ou em um botão:
THackDBGrid(DBGrid1).FixedCols := 2;

O número é a quantidade de colunas fixas.

testei e deu certo!!!

JR.


GOSTEI 0
Vinicius2k

Vinicius2k

13/07/2004

Testei aqui tbm, mas para mim causa um efeito estranho... a primeira coluna se fixa sem título se vc rolar sobre ela aparece à direita uma duplicada da mesma coluna...
Com vc ocorreu isso?
T+


GOSTEI 0
Jrjoliv2003

Jrjoliv2003

13/07/2004

Realmente o títuulo desaparece. Mas a coluna duplicada não...

Será q alguém sabe pq acontece isso?

JR.


GOSTEI 0
Renato Santana

Renato Santana

13/07/2004

Caro amigo assim fica facil...

Em Options do DBGrid, deixe a propriedade dgIndicator = true

CODE
procedure TFAdm.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
// fixar a primeira coluna do dbgrid

TDrawGrid( DBGrid1 ).FixedCols := 2; // fixa a primeira coluna
TDrawGrid( DBGrid1 ).Canvas.Font.Size := 9; // tamanho da fonte do titulo
TDrawGrid( DBGrid1 ).Canvas.TextOut(0,0,' COD'); // nome do titulo da coluna
end;
GOSTEI 0
POSTAR