Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.87/30: Рейтинг темы: голосов - 30, средняя оценка - 4.87
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891

Переcоздание TForm

08.05.2012, 00:53. Показов 6544. Ответов 72
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, в общем задача простая: есть форма, на ней n-контролов (боксы, едиты, листы и пр.), которые заполняются. Есть кнопка по нажатию которой все контролы должны очищаться, т.е. форма перед нами должна предстать как будто только что созданная.

Очищать каждый элемент вручную - глупо. Использование FindComponent более рационально, однако слишком много разных типов контролов, так что все равно не подходит.

Ну соответственно решил пересоздавать форму по нажатию этой кнопки:

C++
1
2
3
4
5
6
7
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 Form1new = new TForm1(Application);
 this->Close();
 Form1new->Show();
}
Однако возникли следующие проблемы. На закрытие форм класса TForm1 у меня стоит:

C++
1
2
3
4
5
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
 Application->Terminate();
 Action = caFree;
}
Соответственно
C++
1
this->Close();
- вызывает закрытие приложения.

Вот... Но даже если я решу эту проблему, все равно заметно как форма моргает и если предыдущая форма имела какие-то другие координаты, а не по центру (что выставлено по умолчанию для TForm1), то после нажатия кнопки происходит прыжок формы на центр...

Может кто-нибудь подскажет, как по умнее это сделать?

Благодарю!

Добавлено через 3 минуты

Не по теме:

P.S. LK, поправьте тайтл, пожалуйста... Что-то я промаСал

0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.05.2012, 00:53
Ответы с готовыми решениями:

копии TForm
мне надо создать больше двух копий TForm. как мне сделать что бы после создания копий, и закрытия главной формы, не закрывались...

Наследник TForm
Доброго времени суток всем. Такая проблема: создал модуль, в нем описал класс: #include <Forms.hpp> class TMyForm : public...

Вопрос по TForm
Есть главная форма приложения Form1. Есть дополнительная форма Form2, которая создаётся сразу же при запуске приложения, но не...

72
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
08.05.2012, 05:30  [ТС]
Студворк — интернет-сервис помощи студентам
Даже TDateTimePicker принимает значение 1899 когда щелкаешь на кнопку, что означает, что компонента принимает значение, которое у нее было на момент создания, то есть все правильно...

А вот что с простейшими Edit-ами, я не понимаю...
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.05.2012, 05:32
А нет не чего что задает эдитам старые значения например в FormActivate?
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
08.05.2012, 05:38  [ТС]
Avazart, неа, этим эдитам нет, а вот всяким комбобоксам, лейблу - да.

Да... У Вас действительно все замечательно работает, за исключением RadioButton - он почему-то не сбрасывает свое значение.

Цитата Сообщение от Avazart Посмотреть сообщение
Если у вас Builder версии до или 2009 я мог бы глянуть если выложите проект
У меня XE2
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
08.05.2012, 05:38
Цитата Сообщение от The_Immortal Посмотреть сообщение
1899 ... что означает, что компонента принимает значение, которое у нее было на момент создания
да... довольно старая компонента
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
08.05.2012, 05:39  [ТС]
LK, =)))
Блин, ненавижу мистику...(
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.05.2012, 05:45
Как вариант создать резервную копию проекта и эксперементировать:
начать удалять компоненты один за одним и смотреть что изменится.Но для начала проверьте мой проект.
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
08.05.2012, 05:56  [ТС]
Avazart, я уже этим и занимаюсь... Это хохма настоящая... Все снес! Остались только 4 эдита, которые упрямо не хотят обновляться!)))

Может все-таки Вам удастся посмотреть проект? Он теперь совсем маленький))
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.05.2012, 05:59
Могу но толку я ведь не открою его Buildr2009 даже что бы форму просмотреть.
Проверьте проект который я выложил: с начала exe, а потом перегоните в XE сам проект
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
08.05.2012, 06:03  [ТС]
Avazart, тот, что Вы скинули - замечательно работает.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.05.2012, 06:06
Теперь создай чистый проект и копирни туда мой код добавь эдиты и проверь.
Тогда ясно будет в коде ли ошибка или в чем то другом (Версии IDE или ХЗ-чем)
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
08.05.2012, 06:07  [ТС]
Вот мое чудо....
Вложения
Тип файла: rar ppc.rar (5.5 Кб, 5 просмотров)
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
08.05.2012, 06:14  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Теперь создай чистый проект и копирни туда мой код добавь эдиты и проверь.
Сделал, и копирнул свой код - работает.. Ничего не понимаю.

Будет слишком накладно мой исходный проект переделывать

Может там просто в настройках формы что-то указано? Или это не должно влиять по идее...
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.05.2012, 06:19
Можно попробывать пересохранить проект через Save As, если нет то думаю легче переписать заного чем разбираться в глюках
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
08.05.2012, 06:21  [ТС]
Avazart, ха! А на самом-то деле косяк есть и в Вашем проекте. Вы текст Edit-ам поставьте по умолчанию "" (в смысле уберите вообще). Я-то все это время в таком режиме тестил... Вот Edit к пустому полю-то и не возвращается. Если что-то там было, то пожалуйста...
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.05.2012, 06:28
Да точно... наверно сохранение просто не помещает в поток пустое свойство
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
08.05.2012, 06:32  [ТС]
Avazart, жееесть, столько мучал Вас и зря...
Простите, пожалуйста...
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
08.05.2012, 06:39
Цитата Сообщение от Avazart Посмотреть сообщение
наверно сохранение просто не помещает в поток пустое свойство
я как-то по электронке неразрывный пробел отсылал и на форуме выкладывал , а здесь "пустое свойство" не сохраняется .
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
08.05.2012, 06:42  [ТС]
Ну что ж... Факир был пьян и фокус не удался

Значит не бум выделываться и бум юзать это


Avazart, еще раз ОГРОМНЕЙШЕЕ СПАСИБО!

Добавлено через 1 минуту
LK, а может быть у Вас есть какие-нибудь мысли по этому поводу?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
08.05.2012, 06:44
The_Immortal, что требуется ? Создать динамически форму? Убрать с имеющейся формы компоненты? Кратко. Внятно. А то я все понять не могу (вина не ваша, конечно).
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
08.05.2012, 06:52  [ТС]
LK, на имеющейся форме сохранить компоненты в первоначальном состоянии (какие они были на момент создания формы) и при необходимости вернуть эти компоненты к этому состоянию.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.05.2012, 06:52
Помогаю со студенческими работами здесь

Доступ к обьектам TForm
Задача в следующем: есть TForm и в на нём лежит порядка 100 кнопок. Кнопки имеют определённые имена, и именно с помощью этих имён я и хочу...

Класс перехватчик к TForm
Добрый день, добавляю к TForm доп строку namespace SLE { class TF : public Vcl::Forms::TForm { private: AnsiString...

Вопрос по TForm::OnKeyPress
Есть форма. На ней расположен TStringGrid и несколько кнопочек. Хочется отработать нажатие на клавишу (независимо от того, на каком из...

Создание наследника TForm
Всем привет. При попытке создать наследника TForm получаю ошибку "Resource MyClass not found." Unit1.cpp ...

Вывод текта на TForm
Здравствуйте. Как на TForm вывести RichEdit1->Text. Пробую через Form1->Canvas->TextOutA(0,0,RichEdit1->Text), но только выводит он всесь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru