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

Вниз

Колонки в DBGrid   Найти похожие ветки 

 
D@Nger ©   (2007-01-31 08:04) [0]

Здравствуйте! У колонок в DBGrid есть порядковые номера - index и id.
Если пользователь меняет местоположение колонок то меняется его индекс, а id остается прежним. Как можно обратиться к определенной колонке по его id, чтобы однозначно знать, что это именно та колонка, а не перемещенная ? Спасибо.


 
Elen ©   (2007-01-31 08:48) [1]


> чтобы однозначно знать, что это именно та колонка, а не
> перемещенная

юююнужно обращаться к полю таблицы.


 
d@nger ©   (2007-01-31 09:28) [2]

а нельзя при помощи id? т.к. я хочу обрабатывать это в цикле, а в цикле обращаться по имени поля не очень удобно...


 
Sergey13 ©   (2007-01-31 09:33) [3]

> [2] d@nger ©   (31.01.07 09:28)

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


 
Separator ©   (2007-01-31 09:33) [4]

Написанно ведь:
> юююнужно обращаться к полю таблицы.

е лезь ты в DBGrid, обращайся к Table или Query, в общем к жлементу, который вытаскивает данные из сервера, в нем ни каких изменений не происходит, если ты меняешь порядок отображения в DBGrid. А вот в tabel уже можно обращаться к столбцам по их номеру в цикле или как там тебе еще захочется


 
Elen ©   (2007-01-31 09:56) [5]


>  а в цикле обращаться по имени поля не очень удобно...

Возвращай в цикле по номеру поля


 
d@nger ©   (2007-01-31 10:02) [6]

я щас объясню для чего мне это нужно....я хочу дать возможность пользователю скрывать и отображать столбцы в DBGride. как это можно реализовать по изящнее. сейчас у меня отдельная форма с чекбоксами отвечающих за конкретную колонку. если чекбокс отмечен то отображать если нет то не отображать. Храню параметры столбцов в ини файле. кто то может делал что то подобное поделитесь советом....


 
ЮЮ ©   (2007-01-31 10:08) [7]

Так пользователь скрывает столбец не потому, что он 2-ой в гриде, а потому, что оно отображает информацию из поля А. Вот и сохраняй это А - (TColumn.FieldName)


 
clickmaker ©   (2007-01-31 10:09) [8]


> [6] d@nger ©   (31.01.07 10:02)

а Columns.SaveToFile / LoadFromFile не подойдет?

в качестве чекбоксов удобно использовать CheckListBox
Items.Objects[i] := Column, т.е. привязка к объекту, а не к индексу и id
Впрочем, то же самое можно и в CheckBox.Tag


 
d@nger ©   (2007-01-31 10:32) [9]


> Items.Objects[i] := Column, т.е. привязка к объекту, а не
> к индексу и id


так связывать?

  for i:=0 to 11 do
   checklistbox1.Items.Objects[i]:=DBGrid1.Columns[i];

а потом то как обрабатывать?


 
ЮЮ ©   (2007-01-31 10:41) [10]

TColumn(checklistbox1.Items.Objects[<индекс>]).Visible := checklistbox1.Checked[<индекс>];


 
d@nger ©   (2007-01-31 12:48) [11]

когда я пишу вот так

checklistbox1.Items.Objects[i]:=DBGrid1.Columns[i];

компилируется нормально, но при запуске выходит ошибка ...raise exception... в чем ошибка?


 
ЮЮ ©   (2007-01-31 12:58) [12]


> когда я пишу вот так

не мешало бы показать в каких пределах i изменяешь, как количество Items задаешь, в каком обработчике ЭТО пишешь.


 
d@nger ©   (2007-01-31 13:09) [13]


> не мешало бы показать в каких пределах i изменяешь, как
> количество Items задаешь, в каком обработчике ЭТО пишешь


for i:=0 to 11 do
  checklistbox1.Items.Objects[i]:=DBGrid1.Columns[i];


 
d@nger ©   (2007-01-31 13:11) [14]

правда я использую не оргинальный DBGrid, а сторонний компонент DBGridEh из библиотеки EhLib, но это я думаю большой роли не должно играть.


 
d@nger ©   (2007-01-31 13:44) [15]


> как количество Items задаешь

а как его задать?

> в каком обработчике ЭТО пишешь.



procedure TFpeople.FormCreate(Sender: TObject);
var i:byte;
begin
for i:=0 to 11 do
   fpeople_columns.checklistbox1.Items.Objects[i]:=DBGridEh1.Columns[i];
end;


 
d@nger ©   (2007-01-31 14:16) [16]

все разобрался....:), вобщем сначала делаю ассоциацию элементов из чеклист бокса с колонками в дбгриде. Открываю форму с чеклистбоксом и в событии onClose этой формы делаю следующее:

procedure TFpeople_columns.FormClose(Sender: TObject; var Action: TCloseAction);
var i:byte;
begin
   for i:=0 to 11 do
   Tcolumn(checklistbox1.Items.Objects[i]).visible:=checklistbox1.checked[i];
end;

т.е. пытаюсь скрыть или отобразить колонки в DBGride, НО на этом месте программа вылетает с ошибкой raise exception и упоминается еще "kernel32.dll". Что не так? Ничего не пойму. Помогите!


 
d@nger ©   (2007-01-31 14:22) [17]

Ой извените....я нашел ошибку.....т.к. я использовал не DBGrid, а DBGridEh, то соответственно писать нужно было не TColumn, а TColumnEh....и все заработало.....я поражаюсь такой маленький код и все работает....а я по началу такое нагородил.....массивы еще приплел....вобщем спасибо тем кто мне пытался помочь....особенно товарищу "ЮЮ". Здоровья тебе и успехов! Спасибо!



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

Форум: "Начинающим";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.044 c
2-1170163085
term1t
2007-01-30 16:18
2007.02.18
..=procedure (...,...) of object;


3-1164292131
Константин_
2006-11-23 17:28
2007.02.18
групировка в sql запросе


15-1170099470
hmmm
2007-01-29 22:37
2007.02.18
помогите перевести фразу с eng.


9-1144144001
антонио
2006-04-04 13:46
2007.02.18
[GLScene] Создание объекта


15-1170163084
DevilDevil
2007-01-30 16:18
2007.02.18
FastMem для C++Builder





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский