Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2020, 13:22   #1
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
Стрелка Delphi StringGrid длина столбцов

Заполняю динамически длину столбиков на форме

ColWidths[table.ColCount -1] := table.Canvas.TextWidth(table.Cells[table.ColCount -1, 0])

Далее открываю закрываю формочку(которая никак данные не меняет стрингрида) и перерисовываю его с таким же расчетом ширины столбца

Данные при этом не меняются но становятся на пиксель каждый столбик длиннее, почему?
Как правильно тогда вычислить динамически ширину каждого столбика?

Может как то что занулить где то или что?
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 27.10.2020, 17:05   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,542
По умолчанию

Цитата:
Сообщение от a.n.o.n.i.m Посмотреть сообщение
становятся на пиксель каждый столбик длиннее
А если этот лишний пиксель просто вычесть?
Arigato вне форума Ответить с цитированием
Старый 28.10.2020, 08:55   #3
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

дак первый раз его нет, но все последующие разы он есть, то есть дергание происходит только при 2 загрузке ширины столбиков, далее при загрузке столбиков все огонь ниче не дергается.

Может как то занулить че нибудь где нибудь что заново корректно отрисоватЬ?
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 28.10.2020, 10:49   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

1. где (когда, при каком событии) настраиваете ширину (используете приведенный код) ?
2. где (когда, ... ) и как(каким кодом) проверяете реальную ширину ?
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 28.10.2020, 11:07   #5
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

При любом изменение, добавление удаление, редактирование данных вызывается функция с этим кодом определения ширины
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 05.11.2020, 00:11   #6
DIONISKA
Форумчанин
 
Регистрация: 07.11.2011
Сообщений: 160
По умолчанию

Цитата:
Сообщение от a.n.o.n.i.m Посмотреть сообщение
ColWidths[table.ColCount -1] := table.Canvas.TextWidth(table.Cells[table.ColCount -1, 0])
Выглядит как-то подозрительно и считать будет только последний столбик, может всё-же что-то вроде:
Код:
var i:integer;
begin
  for I := 0 to pred(table.ColCount) do
 begin
    table.ColWidths[i]:=table.Canvas.TextWidth(table.Cells[i,0]);
 end;
//...
end;
?
И часом нигде не изменяется BevelWidth или какое-нибудь сглаживание шрифта?
DIONISKA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача в Delphi, используя StringGrid: Формирование матрицы А (n строк, m столбцов) случайными числами. Получить вектор B. Джек12 Помощь студентам 2 16.11.2014 15:04
Перестановка столбцов в StringGrid (Delphi) ShaoKhan Помощь студентам 7 07.03.2013 00:14
Длина колонки StringGrid в процентах KLOP Общие вопросы Delphi 4 27.04.2010 12:35
Закрашивание столбцов в Stringgrid ertar Общие вопросы Delphi 3 19.02.2009 00:31
StringGrid - длина заголовка Иринкаа Компоненты Delphi 10 04.12.2007 20:28