Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2011, 12:50   #1
Яшар
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 20
По умолчанию Проблемы с ListBox

Здраствуйте! Такая проблема возникла, созданный ini файл, загружаю в фому и беру с него данные для Edit, RadioButton, CheckBox, listbox и т.д., всё работает нормально кроме listbox-а. Проблема в том что при загрузки в listbox он автоматически увеличивается на 2 еденицу, т.е например в ini файле значение для listbox-а равно 4, а при загрузке показывает 6, и при сохранение сохраняет 5.

procedure TForm4.FormCreate(Sender: TObject);
var
F: TIniFile;
begin
F := TIniFile.Create(ExtractFilePath(Par amStr(0)) + 'File.ini');
{...}
ListBox1.ItemIndex:= F.ReadInteger('tools', 'index5', 0);
{...}


procedure TForm4.Button3Click(Sender: TObject);
var
F: TIniFile;
begin
F := TIniFile.Create(ExtractFilePath(Par amStr(0)) + 'File.ini');
{...}
ListBox1.Selected[ListBox1.TopIndex]:=true;
F.WriteInteger('tools', 'index5', ListBox1.ItemIndex );
{...}

Надеюсь смог корректно и правильно обьяснить суть. Заранее спасибо
Яшар вне форума Ответить с цитированием
Старый 19.04.2011, 13:01   #2
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Может потому, что ListBox1.ItemIndex начинается с нуля, а не с единицы?
OlegVE вне форума Ответить с цитированием
Старый 19.04.2011, 13:04   #3
Яшар
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 20
По умолчанию

но тогда же я думаю он увеличивался на одну еденицу а не на две.
Яшар вне форума Ответить с цитированием
Старый 19.04.2011, 13:07   #4
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

зачем сохранять itemindex ??? это просто выделенный в данный момент Item , Вам надо , по все видимости, сохранять все Items . Вот и сохраняйте. учтите, что они нумеруются с 0 и последний имеет индекс items.count - 1
А у Вас что ? непонятно зачем установка selected ,и сохранение itemindex, да и index5 - фиксированное название для строки, возможно , это вводит Вас в залуждение.

скорее всего лучше написать так:
Код:
for i := 0 to lb1.items.count-1 do
f.writeinteger('tools', 'index'+inttostr(i), lb1.items[i]);
чтение/загрузку примерно также, только учитывайте наличие реальных Items и соответствие сохраненного их количества. Т.е. например, если записали 10 строк в ини, то при загрузке в ПУСТОЙ листбокс надо 10 раз вызвать lb1.items.add
phomm вне форума Ответить с цитированием
Старый 19.04.2011, 13:19   #5
Яшар
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 20
По умолчанию

нет, мне не все Items сохранять надо, при редактирование в Delphi для ListBox в свойсве Items прописанны 50 сточек с номерацией от 1-го до 50. ListBox сжат по размеру под одну строчку и поэтому при создание там отображается одна строчка, по умолчанию "1" - т.е. первый Item. По любому без ini они все загружаются, а ini нужен для того что бы записывать в него выбранный по счёту Item например прокрутил на 13 Item показалось число "13", при нажатие на кнопку в ini файл записывается 13, и при следующей загрузки формы надо что бы в ListBox сразу показывалась 13-я строчка
Яшар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Listbox sxcine Общие вопросы Delphi 3 20.08.2010 07:30
как добавить в listbox файлы(пишу с помощью bassplayer)(Listbox+opendialog=play) blackstersl Общие вопросы Delphi 11 09.06.2010 13:23
Из listbox в БД Alexeyss БД в Delphi 3 29.01.2010 11:31
из ListBox в БД Spectre БД в Delphi 5 31.12.2007 13:58