![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DBGrid получение имени колонки [D7, MSSQL]
daimyo © (2006-04-21 10:48:00)Добрый день возникла такая проблема,
необходимо задать ширину DBgrida такой чтоб все колнки было видно чотб не надо было использовать скролл(хотяб когда пустые записи). я тут подумал формировать ширину в зависимости от названия колонок(по количеству букв ), но как получит это самое название ??
ЗЫ заранее благодарен
Dummes (2006-04-24 14:17:00) [1]авторазмер!
procedure SetGridColumnWidths(Grid: Tdbgrid);
const
DEFBORDER = 10;
var
temp, n: Integer;
lmax: array [0..30] of Integer;
begin
with Grid do
begin
Canvas.Font := Font;
for n := 0 to Columns.Count - 1 do
//if columns[n].visible then
lmax[n] := Canvas.TextWidth(Fields[n].FieldName) + DEFBORDER;
grid.DataSource.DataSet.First;
while not grid.DataSource.DataSet.EOF do
begin
for n := 0 to Columns.Count - 1 do
begin
//if columns[n].visible then begin
temp := Canvas.TextWidth(trim(Columns[n].Field.DisplayText)) + DEFBORDER;
if temp > lmax[n] then lmax[n] := temp;
//end; { if }
end;
grid.DataSource.DataSet.Next;
end; { while }
grid.DataSource.DataSet.First;
for n := 0 to Columns.Count - 1 do
if lmax[n] > 0 then
Columns[n].Width := lmax[n];
end; { With }
end; {SetGridColumnWidths }
K_VAL (2006-04-24 11:14:00) [2]Бывают ситуации , когда инф-ии очень много , в стандартный размер не умещается , скроллингом пользоваться неудобно , а смотреть надо , есть DBText , который помещается под Grid-ом , и все поля которые не видны , отображаются с помощью DBText1 ... n , можно использовать Label , но тогда надо писать обработку перемещения по записям , и никаких проблем .
sniknik (2006-04-24 10:44:00) [3]> когда колонки увеличиваются/умекньшаются сами при изменении размера формы.
это начинает раздражать буквально через полчаса юзания... досточно пару раз наткнуться на "умную" особенность сбивающую мои собственные настройки, чтобы поставить то, что по мнению программисти мне будет удобнее... а с чего он собственно это решил? что мне удобнее то же, что и ему?
достаточно чтобы юзер мог настроить размер (есть в стандартном), и все. ну плюс можно еше сохранять настройки юзера для установки в последующих сеансах.
ANB (2006-04-24 09:39:00) [4]Намного полезнее "резиновость" грида - когда колонки увеличиваются/умекньшаются сами при изменении размера формы. Впрочем, эхлиб рулит.
NordRus (2006-04-24 00:08:00) [5]Ну, есть ещё способ - ограничить ширину, а "длинное" содержимое ячейки при наведении мыши либо (1) всплывает, как в Listbox'е, либо (2) отражается в статус - строке.
Sergey13 (2006-04-21 15:04:00) [6]2[5] daimyo (21.04.06 14:58)
>ну а как тогда лучше сделать ??
Оставь как есть. Стандартно - не всегда плохо.
daimyo (2006-04-21 14:58:00) [7]ну а как тогда лучше сделать ?? выравнивать по содержимому чтоли ?
предложите свои варианты :)
Sergey13 (2006-04-21 14:55:00) [8]2[3] daimyo (21.04.06 14:41)
Тебе кажется будет удобнее когда ты выровняешь по наименованию и, например, в "ИНН" будут видны только 3 знака? Ню-ню. Желаю удачи.
daimyo (2006-04-21 14:41:00) [9]
> Непонимаю, какой смысл форматировать ширину стобцов по их
> титлу ?..
мне кажется очень не удобно использовать скрол чтоб просмотореть все имеющиеся поля в таблице, так как сама таблица (DBgrid) имеет вполне определенную ширину и при смене отображаемых ва ней таблиц из бд если колонок много то приходится скролом листать в право или влево чтоб увидеть васе колонки
Yrtimd (2006-04-21 14:06:00) [10]Если нужно отформатировать ширину столбцов по их содержанию, то
подойдет такой способ:
for c := 0 to grid.colcount - 1 do begin
mw := 0;
for r:=0 to grid.rowcount do begin
w := TextWidth (cell (c,r).text);
if w > mm then m:= mw;
end;
grid.col[c].width := mw;
end;
Кстати, у многоих "крутых" griid'ов есть свойтсво AutoColWidth, AutoFormat и пр.
Например, у BergNextGrid, DGGridEh (EhLib), QuantumGrid и многих других...
Непонимаю, какой смысл форматировать ширину стобцов по их титлу ?..
Sergey13 (2006-04-21 10:52:00) [11]Сомнительна полезность сего действа.
>но как получит это самое название ??
У поля есть DisplayLable - оно по умолчанию берется для шапки грида.