Newbie |
Отправлено: 01.04.2004, 17:44 |
|
Не зарегистрирован
|
Всем доброго времени суток!!!
Интересует такая вещь. У меня на форме есть ListBox. Так же есть указатель на TStrings:
CODE |
TStrings *MyList = new TStringList();
|
Можно ли сделать так, чтобы я работал с MyList (добавлял, удалял, редактировал строки), а в ListBox-е сразу же отображались все изменения сделанные в MyList ??? Я так подозреваю что нужно подвязать ListBox1->Items к MyList, т.е. нужно сделать так чтобы ListBox1->Items указывал на MyList. А как тогда сразу же обновлять ListBox1? Метод какой-то есть? а?
Поделитесь кодом люди добрые, а то я еще пока в синтаксисе не силен.
Заранее благодарен. |
|
Asher |
Отправлено: 01.04.2004, 18:07 |
|
Мастер участка
Группа: Модератор
Сообщений: 550
|
Привет.
Поступи проще
вместо MyList пользуйся TListBox->Items
|
|
Newbie |
Отправлено: 01.04.2004, 18:12 |
|
Не зарегистрирован
|
Если бы можно было проще я бы не спрашивал
Дык задача требует этого. Так все-таки можно ли такое организовать? и как? |
|
Gedeon |
Отправлено: 02.04.2004, 10:14 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
QUOTE (Newbie @ 01/04/2004, 19:14) | Если бы можно было проще я бы не спрашивал
Дык задача требует этого. Так все-таки можно ли такое организовать? и как? |
Простите, но я все таки не понимаю что это за задача то такая? Зачем работать с MyList и тут же в listbox отображать все изменения в нем. Если уж очень хочется иметь копию listbox то проще изменения делать в нем а потом присваивать его строки MyList.
|
|
Daan |
Отправлено: 02.04.2004, 13:25 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 62
|
Ну надо человеку так ну что можно поделать, кроме как ответить!!!
У те есть
TStrings *MyList;
А так же
TListBox *l;
ну вот и делаешь в
CODE |
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
MyList = l->Items;
}
|
И изменяя в MyMail ты тем самым изменяешь моментально изменяешь в l.
(если не считать что MyString->Itens и l это одно и тоже!!!!)
Или же имея q = new TStringList();
делаеш l->Items->Assign(q) после каждого изменения |
|
Asher |
Отправлено: 02.04.2004, 13:40 |
|
Мастер участка
Группа: Модератор
Сообщений: 550
|
Так то он так...
Но когда он грохнет форму с ListBox'ом как он это выше писал, то все. Финиш.
Если форма одна, то можно вместо Tstring сделать ListBox, а потом через ListBox->Parent располагать его на форме в нужном месте.
Если в Owner'ах у него будет Application, то жить будет сам по себе.
Визуальность конечно идет лесом, и нарушается принцип раздельного хранения и представления данных.
Самое красивое в модели VCL решение, ИМХО , сделать наследника от TListBox и ему инициализационным параметром подсовывать наш TString. Нехай им пользуется, а не своего заводит.
Хотя надо смотреть как там конкретно реализованно.
А проще всего тебе Daan написал: делаешь l->Items->Assign(q) после каждого изменения
Неэффективно, зато надежно.
|
|