|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.02.2007, 20:38 | #1 |
Регистрация: 19.02.2007
Сообщений: 5
|
Не могу разобраться с ComboBox
Всем доброго времени суток. Вчера взял Делфи7.0, решил потренироваться в нем (раньше Паскаль изучал). Прошу вашей помощи, ибо запутался окончательно. Вобщем, необходимо, что-бы при определённом значении ComboBox (например ItemIndex=2) в списке ListBox из 14 строк оставались определённые две, а, например, при ItemIndex=3 - другие две. У меня получилось просто оставлять строчки, однако при последующем выборе другой строки ComboBox'а ВСЕ строчки стираются (оно и понятно), т.е. необходимо начальный список забить в переменнуЮ, что-бы при каждой смене строки (ItemIndex) список заново восстанавливался и следом урезался в соответствии с текущем значением ItemIndex. Так-же интересует, как реализовать СМЕЩЕНИЕ В САМЫЙ ВЕРХ ОКОШКА оставшихся после отсеивания строк, а то, например, 1 и 2-я строки стёрлись, остались пустые места, а следом нужные мне.
Заранее благодарен за потраченное на прочтение топика время, надеюсь на поддержку. Код:
|
19.02.2007, 22:33 | #2 |
Регистрация: 19.02.2007
Сообщений: 5
|
Так. Ребята, прошу прощения за флуд, НО(!!!)
Кое-что переделал в коде, теперь необходимые строки всегда вверху, порядок выбора реализован абсолютно правильно, однако никак не могу сделать восстанавливаемый ListBox1.Items. Если поставить камент начиная от " Zamok := ComboBox1.ItemIndex;// нач. знач." и почти до конца, то ВИДНО, что список обновляется верно. Ребята, очень прошу, помогите разобраться!!! просто я уже устал голову ломать... вроде все должно работать. =\ Вот листинг: Код:
|
20.02.2007, 09:35 | #3 |
Delphi/C++/C#
Участник клуба
Регистрация: 29.10.2006
Сообщений: 1,972
|
1) Вместо "array[1..18] of String" лучше использовать тип TSrtings - это и есть массив строк, в нём уже есть процедуры добавления в конец, вставки, удаления строк. Да и при использовании с ListBox проще будет
2) Если делаем через TSrtings, то создаём 2 переменные такого типа. Одна - текущая, другая - архивная. Ну а восстановление потом делается простым присваиванием |
20.02.2007, 10:00 | #4 | |
Форумчанин
Регистрация: 15.02.2007
Сообщений: 183
|
Как я понял ты затираешь ListBox1 и хотел бы вернуться к изначальному списку, так?
Цитата:
Знать все невозможно, в силу того, что жить бы стало неинтересно.
|
|
20.02.2007, 10:54 | #5 | ||
Регистрация: 19.02.2007
Сообщений: 5
|
Цитата:
Цитата:
--------------------------------------------- Занесение в архив изначального списка -------------------------------------------- Обновление списка <------------------------ | ----------------------------------------------| определение ВыборА строки --------------------------------------------- | Затирание ненужных строк ListBox --------------------------------------------- | ВЫБОР НОВОЙ СТРОКИ------------------------ Последний раз редактировалось UnDerKetzer; 20.02.2007 в 10:58. |
||
20.02.2007, 12:48 | #6 |
Delphi/C++/C#
Участник клуба
Регистрация: 29.10.2006
Сообщений: 1,972
|
На форме должны быть 2 кнопки и ListBox.
Для удаления строки из listBox надо написать: ListBox1.Items.Delete(N); //N - номер удаляемой строки. (строки нумеруются с 0!) Надеюсь всё будет понятно Код:
|
20.02.2007, 18:00 | #7 |
Регистрация: 19.02.2007
Сообщений: 5
|
Привет всем. Уважаемый Zetrix, спасибо за помощь, однако мне она не потребовалась. У меня таки получилось разобраться самому.
Если интересно, или у кого-то тоже возникнут подобные проблмы, то рассказываю: Дело в том, что данные окна BoxList должны были занестись в массив (если он пустой), после этого должна была пройти проверка значения ComboBox1.ItemIndex и все итемы (за исключением 2-х) должны были стереться из BoxList. Проблема заключалась в том, что при последующей смене значения ComboBox BoxList не обновлялся, что-бы исключить в дальнейшем строки, оставив 2, соответствующие уже текущему значению ComboBox.ItemIndex, хотя я присваивал всем значениям BoxList.item значения архивного массива. Как выяснилось, неправильно обрабатывалось условия записи в массив, и при каждой смене массиву вновь и вновь присваивались значения BoxList, хотя они и были уже неверны. На первый взгляд все было в порядке: условие проверяло размер первой строки массива, если она была пуста ( '' ), то заносил в него все значения BoxList.Item, если была не пуста, то программа шла дальше. Однако ничего не работало! И тут пришла одна оооочень простая мысль: а почему-бы не обьявить переменные массива и остальные в ТОПЕ программы, в самом верху, в первом VAR'e... все заработало. Вот исходник. Спасибо тем, кто помогал мне Код:
|
21.02.2007, 07:30 | #8 |
Delphi/C++/C#
Участник клуба
Регистрация: 29.10.2006
Сообщений: 1,972
|
Рад, что разобрались сами
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
не могу разобраться | Var17 | Общие вопросы Delphi | 6 | 27.03.2010 01:21 |
Не могу внести строку из combobox в combobox!? | tacer | Помощь студентам | 1 | 30.11.2007 19:45 |
помогите разобраться с ComboBox | ByteMan | Общие вопросы Delphi | 1 | 26.06.2007 22:16 |