Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Как проверить влез ли ВЕСЬ текст в ячейку DBGrid'a


Автор: AHgpeu 24.3.2008, 11:13
Условие задачи:
Если ТЕКСТ_В_ЯЧЕЙКЕ_dbGRID не влазит то выводить в Hint'e этот текст полностью
я стою на нужной мне строке в нужном столбце
работаю с 
Код

CurColumn: TgpColumn;

Как правильно записать условие:
Код

if CurColumn.Width < CurColumn.<LengthText> then
  SomeDo

Автор: Savek 24.3.2008, 16:25
Column.Width - ширина ячейки 
DBGRid1.Canvas.TextWidth(Column.Field.AsString) - ширина текста в ячейке

Автор: FlaGmaN 24.3.2008, 17:28
Код

procedure Tform1.buttonclick(sender: object);
var
i,j:integer;
value_width,t:integer;
koef:byte;
begin
DBGrid1.defaultdrawing:=false;
koef:=10;

for i:=0 to DBGrid1.columns.Count - 1 do
begin
value_width :=0;
while not (adotable1.eof) do
begin
t:=length (adotable.fields[i].value);
if value_width<t then value_width:=t;
adotable.next;
end;
DbGrid1.columns[i].width:=value_width*koef;
adotable.first;
end;
dbgrid1.defaultdrawing:=true;end;


Этот код подстраивает длинну столбца под максимальную длинну ячейки.
Может пригодится.
З.Ы. на помпиляторе не проверял но должно работать

Автор: Zmitro 4.4.2008, 07:52
Цитата(FlaGmaN @ 24.3.2008,  17:28)
Код

procedure Tform1.buttonclick(sender: object);
var
i,j:integer;
value_width,t:integer;
koef:byte;
begin
DBGrid1.defaultdrawing:=false;
koef:=10;

for i:=0 to DBGrid1.columns.Count - 1 do
begin
value_width :=0;
while not (adotable1.eof) do
begin
t:=length (adotable.fields[i].value);
if value_width<t then value_width:=t;
adotable.next;
end;
DbGrid1.columns[i].width:=value_width*koef;
adotable.first;
end;
dbgrid1.defaultdrawing:=true;end;


Этот код подстраивает длинну столбца под максимальную длинну ячейки.
Может пригодится.
З.Ы. на помпиляторе не проверял но должно работать

а если в ADOTable 100000 записей? скока-ж цикл работать будет? 

Автор: Savek 4.4.2008, 08:21
Цитата(Zmitro @  4.4.2008,  07:52 Найти цитируемый пост)
а если в ADOTable 100000 записей? скока-ж цикл работать будет? 

Для такого количества записей тэйбл применять не целесообразно, да и вряд ли кому придет в голову тащить на клиента такой объем записей. 
А что касается кода, то он не учитывает размер шрифта да еще и автор видимо забыл что для строки "WWW" ужно больше места чем для "IIIII" тут одним коэффициентом не обойдешся smile 
Достоверно ширину текста можно получить только при помощи DBGRid1.Canvas.TextWidth

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)