Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

обновление информации в гриде


Страницы:   1 2

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то тоже не помогает.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо