Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Shiningemerald
 Аватар для Electroflower
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951

Две формы и глобальная функция: тупик

24.10.2017, 15:34. Показов 1282. Ответов 35
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Господа, ситуация по идее простейшая.
Есть у меня две формы. Одна называется Form1 другая - Form2.
Form1 - основная форма, а Form2- второстепенная.
Мне нужно сделать следующее:
1) из Form1 вызвать Form2 (это, естественно, все элементарно)
2) на Form2 "натыкать" чекбоксы, например и нажать OK (которая будет выполнять Form2->Close
3) после закрытия Form2 чтобы вся информация о том какие чекбоксы воткнули передалась в Form1 и хранилась там в какой-то структуре для дальнейей работы и чтобы при следующем вызове Form2 снова у нас были натыканы те же чекбоксы.

в тупике...реализация должна быть такой, потому что Form1 "засорять" компонентами нельзя.
Помогите мыслями, ребят..
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.10.2017, 15:34
Ответы с готовыми решениями:

Зашел в тупик - две сущности, FK и каскадное удаление
Имеем два варианта связывания модели: ЛИБО а) 1. Две связанных сущности - МЕСТО(PK:PlaceID, PlaceName) и ОБОРУДОВАНИЕ(PK:HwID,...

Глобальная функция
В модуле формы документа есть код: &НаКлиенте Процедура ТЧВесПриИзменении(Элемент) ...*ЦенаКг(Объект.Категория, Объект.Дата); ...

Глобальная переменная и функция в отдельном cpp
Здравствуйте, Подскажите пожалуйста, можно ли так сделать чтобы переменная объявленная глобально была видна в отельной созданной...

35
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
24.10.2017, 16:08
Цитата Сообщение от Electroflower Посмотреть сообщение
Помогите мыслями, ребят..
подкючить заголовочный файл второй формы. недавно буквально обсуждалось, поиском воспользуйтесь
Одна кнопка по нажатию присваивало имя другой кнопке на другой форме
0
Shiningemerald
 Аватар для Electroflower
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951
24.10.2017, 16:11  [ТС]
Почтальон, все заголовки подключены, просто отрабатывает с ошибкой
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
24.10.2017, 16:20
Ну так нужен код, и ошибку
0
Shiningemerald
 Аватар для Electroflower
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951
24.10.2017, 17:09  [ТС]
компилируется нормально, ошибку при нажатии на бутон выдает...

Добавлено через 7 минут
Это cpp файл второстепенной формы:
C++
1
2
3
4
5
6
7
8
9
//---------------------------------------------------------------------------
 
#include "UnitFilter.h" //второстепенная форма
#include "UnitPlot.h"  //основная форма
 
void __fastcall TFormFilter::ButtonOKClick(TObject *Sender)
{
FormDislGPS->GetFormFilter(3);
}
Это h второстепенной формы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "UnitPlot.h" //основная форма подключена в h
 
class TFormFilter : public TForm
{
__published:    // IDE-managed Components
        TButton *ButtonOK;
        void __fastcall ButtonOKClick(TObject *Sender);
        void __fastcall FormCreate(TObject *Sender);
private:    // User declarations
public:     // User declarations
        __fastcall TFormFilter(TComponent* Owner);
};
Добавлено через 4 минуты
Это cpp основной формы с функцией:
C++
1
2
3
4
5
6
7
#include "UnitFilter.h" //добавлена второстепенная форма
 
void __fastcall TFormPlot::GetFormFilter(int stt)      
{
Edit1->Text = stt;
}
//---------------------------------------------------------------------------
Это h основной формы:
C++
1
2
3
4
5
#include "UnitFilter.h" //добавлена второстепенная форма
 
public:     // User declarations
        __fastcall TFormPlot(TComponent* Owner);
        void __fastcall GetFormFilter(int stt);
Добавлено через 28 минут
Вылетает Access violation
0
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
24.10.2017, 18:37
Electroflower, Чет очень сложно придумано. давай по порядку.
Цитата Сообщение от Electroflower Посмотреть сообщение
на Form2 "натыкать" чекбоксы, например и нажать OK
типа чекнуть?
и когда закроешь форм2 - то все чекбоксы остануться в томже положении. для этого не нужны никакие танцы.
Цитата Сообщение от Electroflower Посмотреть сообщение
после закрытия Form2 чтобы вся информация о том какие чекбоксы воткнули передалась в Form1 и хранилась там в какой-то структуре для дальнейей работы и чтобы при следующем вызове Form2 снова у нас были натыканы те же чекбоксы.
так как вторая форма потомок первой - то при следующем открытии все чекбоксы так и будут сохранены их позиции.

в моей программе я тоже, так же на другой форме чекаю делаю какието действия и закрываю. при следующем открытии формы все так и сидит. Если конечно после закрытия у тебя не происходит программное очищение?
///
а это совсем лишнее.
Цитата Сообщение от Electroflower Посмотреть сообщение
public: // User declarations __fastcall TFormPlot(TComponent* Owner); void __fastcall GetFormFilter(int stt);
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
25.10.2017, 07:51
Цитата Сообщение от lifeforce Посмотреть сообщение
и когда закроешь форм2 - то все чекбоксы остануться в томже положении. для этого не нужны никакие танцы.
Цитата Сообщение от lifeforce Посмотреть сообщение
так как вторая форма потомок первой - то при следующем открытии все чекбоксы так и будут сохранены их позиции.
Это не совсем верно. По умолчанию экземпляры форм создаются на этапе запуска программы (в свойствах проекта можно отключить эту фишку). Можно формы создавать динамически (что более разумно), вот как раз тема уважаемого человека: Создание форм авторизации и заставки (Splash-формы) в приложениях
Electroflower, для вашей задачи никакие танцы с бубнами не нужны, достаточно просто разобраться, как обращаться к элементам другой формы, читать и писать значения в элементы формы.
0
Shiningemerald
 Аватар для Electroflower
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951
25.10.2017, 09:53  [ТС]
Цитата Сообщение от Почтальон Посмотреть сообщение
Electroflower, для вашей задачи никакие танцы с бубнами не нужны, достаточно просто разобраться, как обращаться к элементам другой формы, читать и писать значения в элементы формы.
все же верно прописано, в том и дело, а ошибка валится..

Добавлено через 13 минут
Почтальон, то есть функция отрабатывает, а выкидывает именно в этом месте:
C++
1
Edit1->Text = stt;
0
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
25.10.2017, 10:01
Почтальон,
вот у меня работает.


Electroflower, если я правильно понял суть идеи такой результат надо вам получить?
Миниатюры
Две формы и глобальная функция: тупик  
0
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
25.10.2017, 10:02
после выполнения форма закрывается и при повторном запуске все чекбоксы сохранены в томже порядке.
0
Shiningemerald
 Аватар для Electroflower
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951
25.10.2017, 10:09  [ТС]
lifeforce, такс... с новыми формами эта тема без проблем прокатила...и правда работает, хм, а что же тогда у меня
0
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
25.10.2017, 10:16
Цитата Сообщение от Electroflower Посмотреть сообщение
Edit1->Text = stt;
все правильно и будет выкидывать.
C++
1
Edit1->Text = IntToStr(stt);


Добавлено через 4 минуты
Цитата Сообщение от Electroflower Посмотреть сообщение
хм, а что же тогда у меня
такое впечатление что после многих экспериментов у вас остались где то лишние объявления приватности.
для нормальной работы между двумя формами достаточно только подключения хедера в основном соурсе.
0
Shiningemerald
 Аватар для Electroflower
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951
25.10.2017, 10:19  [ТС]
lifeforce, замечание дельное, но он и так бы преобразовал, а ошибка все равно вываливается...хотя с двумя новыми формами все работает как часики...
0
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
25.10.2017, 10:25
вот я и говорю за старые формы. там где то есть тупик.

весь проект большой?

Добавлено через 2 минуты
или хотя бы по подробнее опишите что и как должна выполнять программа. в вашей теме написано только то что я понял вторая форма отдельно с чеками и должно сохраняться положение для следующего вызова формы.
0
Shiningemerald
 Аватар для Electroflower
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951
25.10.2017, 10:38  [ТС]
lifeforce, да, проект большой...

Добавлено через 4 минуты
Сначала запускается самая главная форма.
Затем из нее уже FormPlot(в моей теме она описана как главная) и из этой FormFilter(в моей задаче как второстепенная)
0
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
25.10.2017, 10:57
Цитата Сообщение от Electroflower Посмотреть сообщение
Это h основной формы:
C++

#include "UnitFilter.h" //добавлена второстепенная форма
public: // User declarations
__fastcall TFormPlot(TComponent* Owner);
void __fastcall GetFormFilter(int stt);
ошибка случайно не с GetFormFilter?
0
Shiningemerald
 Аватар для Electroflower
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951
25.10.2017, 11:01  [ТС]
lifeforce, ну как только ставишь там что-то простейшее, например, закрытие формы
C++
1
FormFirter->Close;
то все проходит нормально, как только начинается работа с компонентами на форме - ошибки...
0
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
25.10.2017, 11:16
ведь при вызове GetFormFilter нужно дать int stt . а сама форма не может работать с компонентами?
зачем такое странное объявление формы?
GetFormFilter это форма? она создана в проекте или динамически?

Добавлено через 2 минуты
бегу на работу.
0
Shiningemerald
 Аватар для Electroflower
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951
25.10.2017, 11:16  [ТС]
lifeforce, GetFormFilter это функция
0
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
25.10.2017, 11:22
тогда для нее зачем void __fastcall ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.10.2017, 11:22
Помогаю со студенческими работами здесь

Глобальная функция + приватные переменные + вызов из другого класса?
Всем добрый день. Помогите разобраться. Получаю определенные параметры и пытаюсь их сохранить в память. делаю так: SettGlobals.h...

PHP не подключается к определённой БД. Глобальная переменная с адресом стирается после отправки формы
Всем привет. Пишу скрипт, который показывает структуру баз данных на сервере. Алгоритм действия: Выводится список БД -> Выбирается...

PHP не подключается к определённой БД. Глобальная переменная с адресом стирается после отправки формы
Всем привет. Пишу скрипт, который показывает структуру баз данных на сервере. Алгоритм действия: Выводится список БД -> Выбирается...

Две формы
Подскажите кто сможет. В общем у меня две формы, во время Load форм1 Visible=False, на форм2 стоит таймер, как у таймера кончится...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru