![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
обновление информации в гриде
Delphist © (2010-03-18 09:44:00)Информацию в гриде обновляю так:
adoquery1.active:=false;
adoquery1.active:=true;
другие способы не работали.
Не устраивает, что все настройки грида, которые были только что сделаны, сбрасываются в дефолт (ширина столбцов например). Выделение текущей строки грида также исчезает ну и т. п.
Как более правильно обновлять?
Delphist (2010-03-18 13:22:00) [1]Всем спасибо! Разрешилось все проще:
setlength(raz,DBGridEh1.Columns.Count);
for i:=DBGridEh1.Columns.Count-1 downto 0 do raz[i]:=DBGridEh1.Columns.Items[i].Width;
...
for i:=DBGridEh1.Columns.Count-1 downto 0 do
DBGridEh1.Columns.Items[i].Width:=raz[i];
Sergey13 (2010-03-18 13:04:00) [2]> [18] Delphist (18.03.10 12:37)
> Смысл - что пользователь раздвигает колонку грида, т. к.
> в нее не влазит вся строка, потом обновляет
... и на месте раздвинутой колонки появляется другое поле другой таблицы из одного символа.
> т. к. в нее не влазит вся строка
В ЕХГриде, кстати, такие данные прекрасно показываются хинтом.
Если вариантов "разные таблицы с разным кол-вом столбцов" разумное ограниченное количество, можно пойти по пути создания в дзайне разных датасетов на все варианты и гридов к ним и управления в рантайме видимостью этих гридов. В дизайне конечно каша будет на форме, но в принципе достаточно жизнеспособный вариант.
Ну или в
> [12] Медвежонок Пятачок © (18.03.10 11:32)
универсальный способ.
Delphist (2010-03-18 12:47:00) [3]
> Anatoly Podgoretsky © (18.03.10 12:13) [16]
>
> > Delphist (18.03.2010 11:26:10) [10]
>
> Подойдет.
Это meminifile? Вот кстати с ним не очень получается.
f_ini:=TMemInifile.Create('cols.ini');
DBGridEh1.SaveGridLayout(f_ini);
Ошибка: there is no overloaded version of 'SaveGridLayout' that can be called with this arguments
brother (2010-03-18 12:47:00) [4]> и каждый раз после обновления ее снова вручную раздвигать...
перед обновлением запоминай размеры и восстанавливай из после обновления... в чем проблемма?
Плохиш (2010-03-18 12:44:00) [5]
> Delphist (18.03.10 12:37) [18]
Программирование - это не кинуть на форму грид и удивляться, что оно не работет так, как вы напредставляли.
Наймите программиста.
Delphist (2010-03-18 12:37:00) [6]Смысл - что пользователь раздвигает колонку грида, т. к. в нее не влазит вся строка, потом обновляет, и каждый раз после обновления ее снова вручную раздвигать...
Sergey13 (2010-03-18 12:17:00) [7]> [14] Медвежонок Пятачок © (18.03.10 12:02)
Точно, блин, не заметил [10] Delphist (18.03.10 11:26)
Автор, и какого постоянства ты тогда хочешь? И какой в нем смысл?
Anatoly Podgoretsky (2010-03-18 12:13:00) [8]> Delphist (18.03.2010 11:26:10) [10]
Подойдет.
Anatoly Podgoretsky (2010-03-18 12:12:00) [9]> Медвежонок Пятачок (18.03.2010 11:18:09) [9]
Колонки созданые в дизайн тайм, точно также могут менять размеры и в рантайм, сохранять значения то переоткрытия, потом восстанавливать.
Медвежонок Пятачок (2010-03-18 12:02:00) [10]меняется меняется.
они же у него динамические
Sergey13 (2010-03-18 11:37:00) [11]Странно, но у меня после Close/Open ширина колонок не меняется.
Медвежонок Пятачок (2010-03-18 11:32:00) [12]в разные моменты времени отображает разные таблицы с разным кол-вом столбцов?
в этом случае поможет работа с экземплярами TFieldDefs датасета.
Перед открытием набора обновляем список филдефсов, затем создаем поля устанавливая нужные атрибуты ширины каждого поля.
Медвежонок Пятачок (2010-03-18 11:27:00) [13]по-русски же сказано:
"решение в лоб"
Delphist (2010-03-18 11:26:00) [14]А подойдет этот способ, если грид в разные моменты времени отображает разные таблицы с разным кол-вом столбцов?
Медвежонок Пятачок (2010-03-18 11:18:00) [15]решение в лоб - создать колонки грида в дизайн-тайм
/* ширина не будет меняться с рефрешем датасета */
Delphist (2010-03-18 11:15:00) [16]Ну а ширину надо куда-то записывать предварительно, а потом считывать? TMemInifile подойдет для этого?
И все-таки, какие есть способы кроме
adoquery1.active:=false;?
adoquery1.active:=true;
oldman (2010-03-18 11:10:00) [17]
> текущее положение ползунка вертикальной полосы прокрутки,
> выделенные строки и прочее.
А вот это после обновления информации действительно должно обнулиться.
Delphist (2010-03-18 11:08:00) [18]Ну в смысле ширина столбцов, текущее положение ползунка вертикальной полосы прокрутки, выделенные строки и прочее.
Sergey13 (2010-03-18 11:02:00) [19]> [3] Delphist (18.03.10 10:45)
> сброса состояния грида
Что это?
Delphist (2010-03-18 10:57:00) [20]Если делать
DBGridEh1.Refreshто тоже не помогает.