caezar 0 Denunciar post Postado Agosto 20, 2005 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
bastard2003 4 Denunciar post Postado Agosto 22, 2005 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
caezar 0 Denunciar post Postado Agosto 22, 2005 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
caezar 0 Denunciar post Postado Agosto 22, 2005 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
bastard2003 4 Denunciar post Postado Agosto 22, 2005 Parabens caezar, so consegiu entrar agora no forum! mas parabens por você ter conseguido... qualquer coisa... tamo ai! :D Compartilhar este post Link para o post Compartilhar em outros sites