Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

caezar

DBGrid - Tá complicado!

Recommended Posts

Amigos,Eu tenho uma aplicação que visualiza planilhas do Excel.Cada vez que abro uma coluna no excel eu gostaria de que o DBGrid que recebe a planilha do excel tivesse a largura de suas colunas do tamanho do maior texto contido nelas.Como se fosse o Excel, quando dou um duplo click na coluna e ela fica com a largura do maior tetxto contido nela!A aplicação é composta:ADOConnection, ADOQuery, DataSource, DBGrid, OpenDialog que abre as pastas de trabalho do excel e um ListBox que recebe o nome das planilhas do arquivo excel e ao ser clicado abri a planilha selecionada no DBGrid. Alguem tem alguma idéia, talvez usando a TCanvas.Obrigado amigos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dai caezar, beleza?? cara tu ja tento pega o length de uma varialvel e passa pra coluna?? axo eu que daria certo! testa ai... qualquer coisa... tamo ai!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dai caezar, beleza?? cara tu ja tento pega o length de uma varialvel e passa pra coluna?? axo eu que daria certo! testa ai... qualquer coisa... tamo ai!

<{POST_SNAPBACK}>

Amigo,

Obrigado por me responder!

Esta dúvida está dificil, ninguem me respondeu nos outro forúns.

E acho que tenho que correr a coluna até o último registro verificando o tamanho dos textos o que for maior fica em uma variavel que repassa para DBGrid.Columns.Width.

 

mas não consigo fazer isso!

Alguma dica?

 

Me explica melhor esse jeito que você mencionou!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo muito obrigado mesmo!

 

Consegui desta forma!

procedure TForm1.ListBox1Click(Sender: TObject);variCont, iWidth:Integer;begin  FetchData;  iWidth := 0;  for iCont:=0 to ADOQuery1.FieldCount -1 do    Begin    ADOQuery1.First;    while not ADOQuery1.Eof do      begin        If DBGrid1.Canvas.TextWidth(ADOQuery1.Fields[iCont].AsString) > iWidth  Then          begin          iWidth:= DBGrid1.Canvas.TextWidth(ADOQuery1.Fields[iCont].AsString);          DBGrid1.Columns[iCont].Width := iWidth + 10;          end;      ADOQuery1.Next;      end;      end;end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.