Вопрос по TIniPropStorage

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Вопрос по TIniPropStorage

Сообщение qivi » 21.03.2010 04:10:40

Сохраняю параметры окна и его компонентов между сессиями работы приложения по средствам компонента TIniPropStorage. В окне есть 2 ДБГрида, редактор выбора свойств компонентов для сохранения не позволяет выбрать:
Код: Выделить всё
Form1.DBGrid1.Columns.Items[0].Width

и т.д.

Попытался это свойство подпихнуть прописав его в SessionsProperties в ручную... не сохроняет.

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

Попытался сохранять эти параметры по средством TIniPropStorage.StoredValues... он затребовал с меня стринг, я ему предложил:
Код: Выделить всё
inttostr(Form1.DBGrid1.Columns.Items[0].Width)

но он остался неудовлетворённым...

Как сохранить эти параметры (Form1.DBGrid1.Columns.Items[0].Width)? И если по средством TIniPropStorage.StoredValues то как правильно их востановить при запуске приложения?
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: Вопрос по TIniPropStorage

Сообщение Alexx2000 » 21.03.2010 15:54:29

Я делал так (пример для ListView):
Код: Выделить всё
procedure TForm.FormCreate(Sender: TObject);
begin
  IniPropStorage.StoredValues.Add.DisplayName:= 'lsvwFile_Columns.Item0_Width';
  IniPropStorage.StoredValues.Add.DisplayName:= 'lsvwFile_Columns.Item1_Width';
  IniPropStorage.StoredValues.Add.DisplayName:= 'lsvwFile_Columns.Item2_Width';
end;

procedure TForm.FormShow(Sender: TObject);
begin
  with lsvwFile.Columns do
  begin
    Items[0].Width:= StrToIntDef(IniPropStorage.StoredValue['lsvwFile_Columns.Item0_Width'], Items[0].Width);
    Items[1].Width:= StrToIntDef(IniPropStorage.StoredValue['lsvwFile_Columns.Item1_Width'], Items[1].Width);
    Items[2].Width:= StrToIntDef(IniPropStorage.StoredValue['lsvwFile_Columns.Item2_Width'], Items[2].Width);
  end;
end;

procedure TForm.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
  with lsvwFile.Columns do
  begin
    IniPropStorage.StoredValue['lsvwFile_Columns.Item0_Width']:= IntToStr(Items[0].Width);
    IniPropStorage.StoredValue['lsvwFile_Columns.Item1_Width']:= IntToStr(Items[1].Width);
    IniPropStorage.StoredValue['lsvwFile_Columns.Item2_Width']:= IntToStr(Items[2].Width);
  end;
end;
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 488
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Re: Вопрос по TIniPropStorage

Сообщение qivi » 21.03.2010 19:46:49

Код: Выделить всё
procedure Tgf.FormClose(Sender: TObject; var CloseAction: TCloseAction); // Закрытие окна
begin
  Parametri_FP.StoredValues['G1.Item0_Width']:=IntToStr(gf.Grid1.Columns.Items[0].Width);
  Parametri_FP.StoredValues['G2.Item0_Width']:=IntToStr(gf.Grid2.Columns.Items[0].Width);
end;

Жалуется на строку Parametri_FP.StoredValues['G1.Item0_Width']:=IntToStr(gf.Grid1.Columns.Items[0].Width);:
gforma.pas(514,89) Error: Incompatible type for arg no. 2: Got "AnsiString", expected "TStoredValue"


Что ему надо?
=====================
П.С.:
Parametri_FP - это TIniPropStorage
gf - это TForm
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: Вопрос по TIniPropStorage

Сообщение alexs » 21.03.2010 21:11:10

qivi
Специально для этого сделал поддержку в RXDBGrid-e - он сам всё умеет.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Вопрос по TIniPropStorage

Сообщение qivi » 21.03.2010 22:03:45

:| ну а с простым то гридом как быть?
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: Вопрос по TIniPropStorage

Сообщение Alexx2000 » 21.03.2010 22:15:17

qivi писал(а): Parametri_FP.StoredValues['G1.Item0_Width']:=IntToStr(gf.Grid1.Columns.Items[0].Width);
Parametri_FP.StoredValues['G2.Item0_Width']:=IntToStr(gf.Grid2.Columns.Items[0].Width);

Здесь надо не StoredValues, а StoredValue:
Код: Выделить всё
  Parametri_FP.StoredValue['G1.Item0_Width']:=IntToStr(gf.Grid1.Columns.Items[0].Width);
  Parametri_FP.StoredValue['G2.Item0_Width']:=IntToStr(gf.Grid2.Columns.Items[0].Width);
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 488
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Re: Вопрос по TIniPropStorage

Сообщение qivi » 21.03.2010 23:27:40

Alexx2000 спасибо работает!
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 46

Рейтинг@Mail.ru