Текущий архив: 2010.08.27;
Скачать: CL | DM;
Внизобновление информации в гриде Найти похожие ветки
← →
Delphist (2010-03-18 09:44) [0]Информацию в гриде обновляю так:
adoquery1.active:=false;
adoquery1.active:=true;
другие способы не работали.
Не устраивает, что все настройки грида, которые были только что сделаны, сбрасываются в дефолт (ширина столбцов например). Выделение текущей строки грида также исчезает ну и т. п.
Как более правильно обновлять?
← →
oldman © (2010-03-18 10:02) [1]update?
← →
Sergey13 © (2010-03-18 10:06) [2]> [0] Delphist (18.03.10 09:44)
> в гриде
В каком?
> другие способы не работали
Какие?
> что все настройки грида
Например какие?
> Как более правильно
Насколько более?
← →
Delphist (2010-03-18 10:45) [3]На update вообще ноль внимания.
Грид - DBGridEh
> > другие способы не работали
> Какие?
ADOQuery1.refresh в частности. Или это не то?
> > Как более правильно
> Насколько более?
Ну хотя бы чтоб сброса состояния грида не было.
← →
Delphist (2010-03-18 10:57) [4]Если делать
DBGridEh1.Refresh
то тоже не помогает.
← →
Sergey13 © (2010-03-18 11:02) [5]> [3] Delphist (18.03.10 10:45)
> сброса состояния грида
Что это?
← →
Delphist (2010-03-18 11:08) [6]Ну в смысле ширина столбцов, текущее положение ползунка вертикальной полосы прокрутки, выделенные строки и прочее.
← →
oldman © (2010-03-18 11:10) [7]
> текущее положение ползунка вертикальной полосы прокрутки,
> выделенные строки и прочее.
А вот это после обновления информации действительно должно обнулиться.
← →
Delphist (2010-03-18 11:15) [8]Ну а ширину надо куда-то записывать предварительно, а потом считывать? TMemInifile подойдет для этого?
И все-таки, какие есть способы кромеadoquery1.active:=false;
?
adoquery1.active:=true;
← →
Медвежонок Пятачок © (2010-03-18 11:18) [9]решение в лоб - создать колонки грида в дизайн-тайм
/* ширина не будет меняться с рефрешем датасета */
← →
Delphist (2010-03-18 11:26) [10]А подойдет этот способ, если грид в разные моменты времени отображает разные таблицы с разным кол-вом столбцов?
← →
Медвежонок Пятачок © (2010-03-18 11:27) [11]по-русски же сказано:
"решение в лоб"
← →
Медвежонок Пятачок © (2010-03-18 11:32) [12]в разные моменты времени отображает разные таблицы с разным кол-вом столбцов?
в этом случае поможет работа с экземплярами TFieldDefs датасета.
Перед открытием набора обновляем список филдефсов, затем создаем поля устанавливая нужные атрибуты ширины каждого поля.
← →
Sergey13 © (2010-03-18 11:37) [13]Странно, но у меня после Close/Open ширина колонок не меняется.
← →
Медвежонок Пятачок © (2010-03-18 12:02) [14]меняется меняется.
они же у него динамические
← →
Anatoly Podgoretsky © (2010-03-18 12:12) [15]> Медвежонок Пятачок (18.03.2010 11:18:09) [9]
Колонки созданые в дизайн тайм, точно также могут менять размеры и в рантайм, сохранять значения то переоткрытия, потом восстанавливать.
← →
Anatoly Podgoretsky © (2010-03-18 12:13) [16]> Delphist (18.03.2010 11:26:10) [10]
Подойдет.
← →
Sergey13 © (2010-03-18 12:17) [17]> [14] Медвежонок Пятачок © (18.03.10 12:02)
Точно, блин, не заметил [10] Delphist (18.03.10 11:26)
Автор, и какого постоянства ты тогда хочешь? И какой в нем смысл?
← →
Delphist (2010-03-18 12:37) [18]Смысл - что пользователь раздвигает колонку грида, т. к. в нее не влазит вся строка, потом обновляет, и каждый раз после обновления ее снова вручную раздвигать...
← →
Плохиш © (2010-03-18 12:44) [19]
> Delphist (18.03.10 12:37) [18]
Программирование - это не кинуть на форму грид и удивляться, что оно не работет так, как вы напредставляли.
Наймите программиста.
← →
brother © (2010-03-18 12:47) [20]> и каждый раз после обновления ее снова вручную раздвигать...
перед обновлением запоминай размеры и восстанавливай из после обновления... в чем проблемма?
← →
Delphist (2010-03-18 12:47) [21]
> 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
← →
Sergey13 © (2010-03-18 13:04) [22]> [18] Delphist (18.03.10 12:37)
> Смысл - что пользователь раздвигает колонку грида, т. к.
> в нее не влазит вся строка, потом обновляет
... и на месте раздвинутой колонки появляется другое поле другой таблицы из одного символа.
> т. к. в нее не влазит вся строка
В ЕХГриде, кстати, такие данные прекрасно показываются хинтом.
Если вариантов "разные таблицы с разным кол-вом столбцов" разумное ограниченное количество, можно пойти по пути создания в дзайне разных датасетов на все варианты и гридов к ним и управления в рантайме видимостью этих гридов. В дизайне конечно каша будет на форме, но в принципе достаточно жизнеспособный вариант.
Ну или в
> [12] Медвежонок Пятачок © (18.03.10 11:32)
универсальный способ.
← →
Delphist (2010-03-18 13:22) [23]Всем спасибо! Разрешилось все проще:
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];
Страницы: 1 вся ветка
Текущий архив: 2010.08.27;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.068 c