Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.06.18;
Скачать: [xml.tar.bz2];

Вниз

DBGrid получение имени колонки   Найти похожие ветки 

 
daimyo   (2006-04-21 10:48) [0]

Добрый день возникла такая проблема,
необходимо задать ширину DBgrida такой чтоб все колнки было видно чотб не надо было использовать скролл(хотяб когда пустые записи). я тут подумал формировать ширину в зависимости от названия колонок(по количеству букв ), но как получит это самое название ??

ЗЫ заранее благодарен


 
Sergey13 ©   (2006-04-21 10:52) [1]

Сомнительна полезность сего действа.
>но как получит это самое название ??
У поля есть DisplayLable - оно по умолчанию берется для шапки грида.


 
Yrtimd   (2006-04-21 14:06) [2]

Если нужно отформатировать ширину столбцов по их содержанию, то
подойдет такой способ:

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 и многих других...

Непонимаю, какой смысл форматировать ширину стобцов по их титлу ?..


 
daimyo   (2006-04-21 14:41) [3]


> Непонимаю, какой смысл форматировать ширину стобцов по их
> титлу ?..

мне кажется очень не удобно использовать скрол чтоб просмотореть все имеющиеся поля в таблице, так как сама таблица (DBgrid) имеет вполне определенную ширину и при смене отображаемых ва ней таблиц из бд если колонок много то приходится скролом листать в право или влево чтоб увидеть васе колонки


 
Sergey13 ©   (2006-04-21 14:55) [4]

2[3] daimyo   (21.04.06 14:41)
Тебе кажется будет удобнее когда ты выровняешь по наименованию и, например, в "ИНН" будут видны только 3 знака? Ню-ню. Желаю удачи.


 
daimyo   (2006-04-21 14:58) [5]

ну а как тогда лучше сделать ?? выравнивать по содержимому чтоли ?
предложите свои варианты :)


 
Sergey13 ©   (2006-04-21 15:04) [6]

2[5] daimyo   (21.04.06 14:58)
>ну а как тогда лучше сделать ??
Оставь как есть. Стандартно - не всегда плохо.


 
NordRus ©   (2006-04-24 00:08) [7]

Ну, есть ещё способ - ограничить ширину, а "длинное" содержимое ячейки при наведении мыши либо (1) всплывает, как в Listbox"е, либо (2) отражается в статус - строке.


 
ANB ©   (2006-04-24 09:39) [8]

Намного полезнее "резиновость" грида - когда колонки увеличиваются/умекньшаются сами при изменении размера формы. Впрочем, эхлиб рулит.


 
sniknik ©   (2006-04-24 10:44) [9]

> когда колонки увеличиваются/умекньшаются сами при изменении размера формы.
это начинает раздражать буквально через полчаса юзания... досточно пару раз наткнуться на "умную" особенность сбивающую мои собственные настройки, чтобы поставить то, что по мнению программисти мне будет удобнее... а с чего он собственно это решил? что мне удобнее то же, что и ему?

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


 
K_VAL   (2006-04-24 11:14) [10]

Бывают ситуации , когда инф-ии очень много , в стандартный размер не умещается , скроллингом пользоваться неудобно , а смотреть надо , есть DBText , который помещается под Grid-ом , и все поля которые не видны , отображаются с помощью DBText1 ...  n , можно использовать Label , но тогда надо писать обработку перемещения по записям , и никаких проблем .


 
Dummes   (2006-04-24 14:17) [11]

авторазмер!

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  }



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2006.06.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.011 c
2-1148904031
VitV
2006-05-29 16:00
2006.06.18
Запись рисуков в базу данных...


2-1149026365
shart
2006-05-31 01:59
2006.06.18
Pointer as Class - в чем проблема


4-1143014316
EgorovAlex
2006-03-22 10:58
2006.06.18
Как улучшить поиск в LDAP? Есть такая конструкция, которая


15-1148297897
begin...end
2006-05-22 15:38
2006.06.18
Как назначить пользователю права на ветку реестра в Win2k Prof?


2-1149072620
adalx
2006-05-31 14:50
2006.06.18
Помогите новичку





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский