palich |
Отправлено: 11.11.2005, 08:06 |
|
Не зарегистрирован
|
Доброго времени суток господа.
Постановка задачи:
Есть(то есть пока ещё нет) обычное приложение, на форме присутствует
только контекстное меню в котором дапустим один пункт "Создать".
При выборе из меню этого пункта создаётся какойнибуть компонент например Button
которому присваиваются разлисные свойства, а так же устанавливаются обработчики
событий (OnMouseDown,OnMouseMove,OnMouseUp) которые позволяют перемещать Button
по форме во время выполнения.
Суть проблемы:
После запуска приложения не известно сколько кнопок создасть пользователь,
то есть я не могу придумать схему хранения этих динамических кнопок причём
такую схему, что бы во время выполнения пользователь мок менять их свойства.
Не сочтите за труд подскажите. |
|
AVC |
Отправлено: 11.11.2005, 09:06 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Любая реализация динамических массивов указателей / структур / ...
Варианты решения vector / TList / ...
Если отдавать это пользователю, то я оформил бы это в класс, который кроме всего прочего умеет сохранять информацию между запусками приложения. |
|
palich |
Отправлено: 11.11.2005, 10:47 |
|
Не зарегистрирован
|
OK
Всё получилось, только вот понять не могу.
CODE |
void __fastcall TForm1::N1Click(TObject *Sender)
{
TButton* btn = new TButton(this);
btn->Caption = "я кнопка";
btn->Parent = this;
btn->OnMouseDown = &MouseDown;
btn->OnMouseUp = &MouseUp;
btn->OnMouseMove = &MouseMove;
array_buttons.push_back(btn);
}
|
Кнопки функцианируют, всё как надо, но просто интересно
если в эту функцию оброботчик вставить delete(btn) (знаю,знаю переменная btn автоматически уничтожается при выходе из обработчика)
CODE |
void __fastcall TForm1::N1Click(TObject *Sender)
{
TButton* btn = new TButton(this);
btn->Caption = "я кнопка";
btn->Parent = this;
btn->OnMouseDown = &MouseDown;
btn->OnMouseUp = &MouseUp;
btn->OnMouseMove = &MouseMove;
...
...
...
array_buttons.push_back(btn);
delete(btn); <-----------------------------------------
}
|
То прога запускается но все создающиеся кнопки не отображаются на форме,нету их. |
|
Asher |
Отправлено: 11.11.2005, 11:21 |
|
Мастер участка
Группа: Модератор
Сообщений: 550
|
Привет.
QUOTE | знаю,знаю переменная btn автоматически уничтожается при выходе из обработчика |
Переменная то уничтожается, а то что Вы по new TButton(this); наплодили нет.
А delete(btn); Вы их удаляете. Так, что то что их нет — все правильно.
|
|