Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Сохранение порядка и ширин колонок в GridEh


Автор: AlexV1 3.3.2003, 14:58
Товарищи программисты!
До использования GridEh я пользовался RxDBGrid, у которого есть свойство iniStorage, где указывается имя компонента TFormStorage. И все. Все ширины колонок, а также порядок колонок автоматически сохраняются от запуска к запуску программы.
Как проще всего поступить с GridEh ?

Автор: AntonSaburov 3.3.2003, 19:43
Написать процедурку, которая это делает. А для этого посмотреть исходники RxDBGrid.
Делов-то biggrin.gif

Автор: Medved 3.3.2003, 19:50
Там есть свойство, растягивания колонок автоматически. Может быть это тебе поможет?

Если все же ты хочешь сохранять установки пользователя, то только программно, при выходе из программы записывать их, а при открытии программы устанавливать программно.

P.S. кстати, может и в DBGridEh есть такая возможность, но я просто с ней не сталкивался, но ИМХО нет такого. Если что, можно связаться с самим автором, и у него спросить.

Автор: AlexV1 3.3.2003, 22:05
Цитата
Если все же ты хочешь сохранять установки пользователя, то только программно, при выходе из программы записывать их, а при открытии программы устанавливать программно.


Наверное так лучше.
Мне бы хотелось сохранять эти параметры в реестре.
Но с реестром я еще не имел дело.
Как в нем создавать параметры и пихать в них зн-я ? А потом читать.
Подскажите плиз, или линк, где можно об этом почитать.

Автор: Medved 3.3.2003, 22:10
TRegistry

P.S. Посмотри в нашем FAQ. Там это есть.

Автор: AntonSaburov 3.3.2003, 22:11
IMHO не надо в регистри - пусть будет ini-файл.
Мне лично не нравится, когда регистри распухает до неприличных размеров.

Автор: AlexV1 3.3.2003, 22:58
А я уж и с реестром разобрался.
Думаю, что от двух строк типа '36,324,643,2,4,2,' реестр сильно не распухнет.

Сохранение ширин колонок
-------------------------------------------------
uses Registry;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var reg:TRegistry;
i:integer;
st:string;
begin
Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.OpenKey('\Software\FTree',True);
// Сохраняем в реестр ширины колонок
st:='';
for i:=0 to DBGridEh1.Columns.Count-1 do
st:=st+IntToStr(DBGridEh1.Columns[i].width)+',';

Reg.writeString('gridEh1widths',st);
reg.CloseKey;
end;

procedure TForm1.FormShow(Sender: TObject);
var reg:TRegistry;
i:integer;
st,s1: string;
begin
Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.OpenKey('\Software\FTree',True);
// Считываем ширины колонок из реестра
st:=Reg.ReadString('gridEh1widths');
// st='34,12,65,246,1536,23,'
// Настраиваем сетку (ширины колонок)
for i:=0 to DBGridEh1.Columns.Count-1 do
begin
s1:=copy(st,1,pos(',',st));
delete(st,1,length(s1));
delete(s1,length(s1),1);
DBGridEh1.Columns[i].width:=StrToInt(s1);
end;

reg.CloseKey;
end;

Автор: Medved 5.3.2003, 06:44
Рад сообщить что библиотека компонент EhLib версии 3.0 доступна для загрузки.
Скачать EhLib 3.0 можно здесь http://www.farpost.com/personal/dmitryb/RUS/ehlibrus.exe
Пароль: ФЕВРАЛЬФЕВРАЛЬ

Что нового в версии 3.0

В TDBDateTimeEditEh

+ Новые значения в типе TDateTimeKindEh (свойство Kind).
TDateTimeKindEh = (dtkDateEh, dtkTimeEh, dtkDateTimeEh, dtkCustomEh);
+ Добавлено свойство EditFormat. Теперь вы можете набрать свой формат даты/времениt
используя следующие элементы формата: 'YY', 'YYYY', 'MM', 'DD', 'HH', 'NN', 'SS'.


Библиотека разделена на design-time и run-time пакеты.
EhLib[XX] - run-time пакет и DclEhLib[X] - design-time пакет,
где [XX] двузначый номер версии VCL:
и EhLibB[XX] c DclEhLibB[XX] под C++ Builder.

При инсатляции, все компоненты помещаются на отдельную страницу
палитры компонент - 'EhLib'.
Обратите внимание что Delphi IDE не переносит компонеты на новую страницу
по умолчанию, когда вы ставите новую версию тех же компонент. Так что
если у вас уже стояла библиотека версии ниже чем 3.0 то инсталяция этой
версии оставит компоненты на прежнем месте в палитре.
Чтобы заставить Delphi IDE перенести компонеты на новое место
по умолчанию, сделайте следующее:

Откройте меню: Component->Configure Palette.
Выберите строку '[All]' в листбоксе Pages.
Нажмите кнопку 'Default Pages'.


Новые компоненты: TPropStorageEh, TIniPropStorageManEh, TRegPropStorageManEh.
Реализует технологию сохранения и восстановления свойств компонент в/из ini
файлов и реестра.
Базовая компонента данной технологии это TPropStorageEh. Поместите это компоненту
на форму, свойства компонент которой вы хотите сохранять в хранилище настроек.
Двойной щелчок на компоненте в design-time'е открывает окно редактора свойств всех
компонент формы. В дереве свойств компонент вы можете отметить необходимые для
сохранения свойства. Список свойств является списком всех published свойств или
объявленных в функции DefineProperty компоненты за исключением свойств класса
TCollection. В дополнение к списку всех элементов коллекции, дерево свойств выводит
подсвойство <ForAllItems>, при отметки подсвойств в данной ветки компонента будет
сохранять соответствующие подсвойства для каждого элемента коллекции.

Компонент TPropStorageEh умеет сохранять/восстанавливать значения свойств в поток,
однако для перенаправления потока в хранилище настроек необходимо выполнить одно
из следующий действий.

1. Поместить на форму компонент порожденный от TPropStorageManagerEh. В данной
версии присутствуют такие компоненты, это TIniPropStorageManEh и TRegPropStorageManEh.
Правильно настроить свойства этих компонент и присвоить свойству
TPropStorageEh.StorageManager этот компонент.

2. Либо вы можете один раз написать код по регистрации глобального компонента
DefaultPropStorageManager. Все компоненты TPropStorageEh у которых не прописано
свойство StorageManager будут использовать менеджер DefaultPropStorageManager
для перенаправления потока значений свойств в хранилище настроек.

Код по регистрации глобального компонента может выглядеть примерно так:

----------- MainUnit.Pas--------
......
initialization

IniPropStorageMan := TIniPropStorageManEh.Create(nil);
IniPropStorageMan.IniFileName := 'MyIniFile.Ini';
SetDefaultPropStorageManager(IniPropStorageMan);
end.
--------------------------------


+ Добавлен design-time редактор компоненты ClientDataSet.
Смотри детали в AdvTech\CDSDesign\readme.txt dir.

CDSDesign содержит design-time редактор компоненты ClientDataSet,
Он унаследован от TFieldsEditor, включает все особенности
FieldsEditor и позволяет редактировать данные в ClientDataSet в design-time'е.
Вы можете вручную заполнить данные в design-time в отсоедененный ClientDataSet
без загрузки данных из файла или из другого датасета.


Best regards:
Dmitry V. Bolshakov
+7 (812) 159-44-96 (voice in Russia)
Home page: http://www.farpost.com/personal/dmitryb
E-mail: dmitryb@tax25.marine.su
E-mail2: dmitryb@farpost.com
ICQ # 10785451

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)