Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - [решено] сохранение значений ComboBox

Ответить
Настройки темы
Delphi - [решено] сохранение значений ComboBox

Новый участник


Сообщения: 29
Благодарности: 2

Профиль | Отправить PM | Цитировать


Ситуация состоит в следующем:
Есть ComboBox1 с внесенными данными в Items. Корректировка данных для пользователя запрещена.
Пользователь открыл программу выбрал нужный вариант из ComboBox1 например из Strings[3] ... закрыл программу.

Можно ли что бы при следующем открытии программы в ComboBox1 открывалась Strings[3] ? Проще говоря, открывались те варианты, которые пользователь выбрал в прошлый раз при работе с программой.
Нашел решение этой задачи на FoxPro но мне нужно на Delphi
Заранее благодарен.

Отправлено: 22:15, 11-09-2011

 

Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


сохранить значение в ini файл при выходе

Отправлено: 23:30, 11-09-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 295
Благодарности: 30

Профиль | Отправить PM | Цитировать


Текущее значение комбобокса хранится в свойстве ItemIndex, которое можно как считывать, так и записывать. А куда записывать - решай сам: можно в реестр, можно во временный файл, а можно и в память пользователя

А считывать нужно перед показом формы, т.е. в обработчике события OnShow.

Отправлено: 17:42, 12-09-2011 | #3


Новый участник


Сообщения: 29
Благодарности: 2

Профиль | Отправить PM | Цитировать


Любезный ты навел меня на мысль то что мне хотелось я решил, присвоив в инспеторе обьектов нужный ItemIndex который отображается при загрузке.
Но все же, для общего развития не могу вкурить как именно сохранить(загрузить) текущий индекс. Как записать(считать) весь итем - понятно, а вот текущий индекс не пойму. Как запомнить а потом загрузить то, что было выбрано пользоватилем хоть убей Если не лень кинь кодом с записью в реестр или временный файл. Ну нет же такого понятия Current Index

Отправлено: 21:57, 12-09-2011 | #4


Старожил


Сообщения: 295
Благодарности: 30

Профиль | Отправить PM | Цитировать


Блин... Фигня ведь. ItemIndex - это число, номер текущего пункта. А текст пункта - это Items [ItemIndex] или (только для чтения) ComboBox.Text.

Код писать не буду, но на мысль наведу. Создай TStringList, присвой свойству Text этого стринглиста значение ItemIndex, преобразованное в строку, а затем методом SaveToFile сохрани его во временный файл. Ну и соответственно не забудь уничтожить этот стринглист.

Насчёт реестра - поищи в сети работу с классом TRegistry. Ну и также инфу, в каких разделах нужно создавать ключи.

Цитата:
я решил, присвоив в инспеторе обьектов нужный ItemIndex который отображается при загрузке.
Кстати, если у тебя при запуске программы комбобокс будет пустым (т.е. не заполненным в процессе создания программы), а ItemIndex будет больше -1, у тебя программа может вываливаться с ошибкой. Так что присваивать это свойство нужно только на заполненном комбобоксе (неважно, в DesignTime или в RunTime).

Отправлено: 22:52, 12-09-2011 | #5


Новый участник


Сообщения: 29
Благодарности: 2

Профиль | Отправить PM | Цитировать


Любезный Спасибо! проблему решил сохранением в *.ini файл весь код писать не буду напишу кусок для записи
...
Код: Выделить весь код
procedure TForm1.ReadParams;
Var IniFile:TIniFile; 
begin
IniFile:=TIniFile.Create('path.ini'); {создаем переменную}
ComboBox1.ItemIndex:=IniFile.ReadInteger('FORM1','ComboBox1ItemIndex',ComboBox1.ItemIndex); {сохраняем выбранный пункт, то над чем я ломал голову}
IniFile.Free; {убиваем переменную}
end;
...
и кусок для чтения
Код: Выделить весь код
...
procedure TForm1.WriteParams;
Var IniFile:TIniFile;
begin
IniFile:=TIniFile.Create('path.ini');
IniFile.WriteInteger('FORM1','ComboBox1ItemIndex',ComboBox1.ItemIndex);
IniFile.Free;
end;
...
но при таком варианте path.ini сохраняется в папке Windows но это уже пол беды.

Последний раз редактировалось camope3, 12-09-2011 в 23:48.


Отправлено: 23:41, 12-09-2011 | #6


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
function TForm1.Ininame: string;
begin
  result := ExtractFilePath(Application.ExeName)+'path.ini';
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:50, 12-09-2011 | #7


Аватара для hb860

Идиот


Сообщения: 1125
Благодарности: 419

Профиль | Сайт | Отправить PM | Цитировать


Я на делфи лет эдак 10 не писал уже, но я помню, там есть что-то вроде
ComboBox1.Items.SaveToFile('Имя_Файла')

-------
http://feeds.feedburner.com/Winreviewru.1.gif
Горячие клавиши Windows 8 | Все программы, которые я разработал| Гаджеты для Windows 8


Отправлено: 14:11, 14-09-2011 | #8


Старожил


Сообщения: 295
Благодарности: 30

Профиль | Отправить PM | Цитировать


Цитата:
Я на делфи лет эдак 10 не писал уже, но я помню, там есть что-то вроде
ComboBox1.Items.SaveToFile('Имя_Файла')
Это сохранение пунктов в файл. Но эта команда не сохраняет информацию о том, какой пункт является текущим - это и нужно топикстартеру.
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:19, 14-09-2011 | #9


Новый участник


Сообщения: 29
Благодарности: 2

Профиль | Отправить PM | Цитировать


Всем спасибо за участие в помощи.

Отправлено: 22:45, 15-09-2011 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - [решено] сохранение значений ComboBox

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Delphi - [решено] Присвоение имени из ComboBox при копировании файла OkSherd Программирование и базы данных 2 07-09-2011 13:29
Нужна помощь по ComboBox sacredboy AutoIt 17 09-09-2009 15:07
[решено] Можно ли сделать ComboBox с иконками malev AutoIt 11 26-06-2009 08:24
Тяжёлый вопрос про COMBOBOX (WinApi) pva Программирование и базы данных 9 16-07-2004 15:24
ComboBox в VB6 Vitki Программирование и базы данных 1 12-05-2004 10:08




 
Переход