Witam jak dostosować szerokość kolumny do najszerszej wartości jej wiersza w komponencie DBGrid z zakładki Data Controls, ponieważ domyślnie komponent robi to bardzo niezgrabnie tj. jedna kolumna jest szersza niż być powinna inna zaś za waską. Napisałem kod który to robi w miarę sprawnie, niestety nie robi tego w tle tylko na oczach użytkownika tj. przemiszcza kursor po każdej komórce i aktywuje jego focus co przy dużej ilości danych trwa kilka sekund i jest frustrujące, chodzi mi o to żeby robił to szybko i w tle tak aby użytkownik dostał idealnie dopasowaną tabelę do danych w niej zawartych.
Obecny nietrafiony kod:
for x:=0 to dbgrid1.Columns.Count-1 do
begin
dbgrid1.Columns[x].Width:=0;
Zquery1.First;
while not Zquery1.Eof do
begin
if dbgrid1.Canvas.TextWidth(Zquery1.Fields[x].Text)+10 > dbgrid1.Columns[x].Width then dbgrid1.Columns[x].Width:= dbgrid1.Canvas.TextWidth(Zquery1.Fields[x].Text)+10;
Zquery1.Next;
end;
end;
Jak widać próbowałem odwołać się głębiej tz. do bezpośrednio otrzymanych danych z bazy w komponencie query, jednak powiązanie jest na tyle silne, iż mimo to kursor wizualnie przesuwa się po tabeli, po każdym wierszu kolumny.