1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891

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

08.05.2012, 00:53. Показов 7015. Ответов 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
8489 / 6156 / 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
8489 / 6156 / 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
8489 / 6156 / 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
8489 / 6156 / 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
8489 / 6156 / 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
8489 / 6156 / 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru