Текущий архив: 2007.05.20;
Скачать: CL | DM;
Вниз
TStringGrid на манер грида в Mozilla Thunderbird Найти похожие ветки
← →
Iks (2007-03-22 11:07) [0]Здравствуйте.
Как можно реализовать автораспределение ширины столбцов в гриде так, как это сделано в Thunderbird, и чтобы был последний столбец типа "показать/скрыть столбцы". У меня не получается даже вычислить ширину канвы у грида, потому что не знаю, какая ширина полосы скролла будет у юзеров...
С уважением.
← →
clickmaker © (2007-03-22 11:18) [1]
> какая ширина полосы скролла будет у юзеров
GetSystemMetrics(SM_CXSCROLL)?
← →
Крик (2007-03-22 11:21) [2]clickmaker
А дальше? Я пробую так:procedure AutoSizeGridColumn(Grid: TStringGrid; column, min, max: Integer);
var
i: Integer;
temp: Integer;
tempmax: Integer;
begin
tempmax := 0;
for i := 0 to (Grid.RowCount - 1) do
begin
temp := Grid.Canvas.TextWidth(Grid.cells[column, i]);
if temp > tempmax then tempmax := temp;
if tempmax > max then
begin
tempmax := max;
break;
end;
end;
if tempmax < min then tempmax := min;
Grid.ColWidths[column] := tempmax + Grid.GridLineWidth + 3;
end;
А потом делаю 2ой столбец на недостающую длину. Но это - не гуд. Потому что если остальные столбцы длиннее, получается "уход за границу".
Хотелось бы так, чтобы автосайз срабатывал только если ширина меньше ширины канвы, а последний столбец всегда был в границу грида...
← →
ЮЮ © (2007-03-22 11:28) [3]> Хотелось бы так, чтобы автосайз срабатывал только если ширина
> меньше ширины канвы,
Ну так посчитай суммарную ширину столбцов, а потом уже, если она меньше клиентской ширины грида, делай свой AutoSize
Страницы: 1 вся ветка
Текущий архив: 2007.05.20;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.04 c