Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
 Аватар для Famous_47
1 / 1 / 1
Регистрация: 13.11.2015
Сообщений: 59

Работа с формами из заголовочного файла

12.05.2017, 12:17. Показов 696. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, что-то я совсем заступорился. Есть приложение из нескольких форм, 2 статические и одна available. При нажатии кнопки на второй форме (Unit2.cpp), запускается функция, которая описана в заголовочном файле (Unit2.h), которая, в свою очередь, должна создать третью форму, которая позже самоликвидируется.

Однако в заголовочном файле совсем не хочет создавать форму, ругается на:

C++
1
2
3
  TFUpdate *f2= new TFUpdate(FMain);
  f2->WindowState=wsNormal;
  f2->Show();
Решил упростить и сделать без available, но всё равно из заголовочного файла, через

C++
1
FUpdate->
не видно, что такая форма существует, хотя из .cpp файла видно. Я где-то ошибся или из .h файла никак не добраться до форм?

P.S.

Вся эта необходимость появилась из-за того, что по совету преподавателя, решил убрать нагрузку (выполнение вычислений, обращения в интернет и др.) с обработчика кнопки и сделать все эти действия в отдельной функции, которую нажатие на кнопку (прерывание, с точки зрения ОС) вызывает. Для того, чтобы при выполнении действий, которые были возложены на обработчик кнопки, не возникало подвисаний т.к. обработка нажатия кнопки является прерыванием, а выполнение функции - процессом. Что вы думаете по этому поводу?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.05.2017, 12:17
Ответы с готовыми решениями:

Разбор заголовочного файла
Для чего служит указатель *pBmp ? Помогите более подробно закомментировать все строчки файла bmp.h так, чтобы эта библиотека была...

Как вызвать функцию из заголовочного файла?
Создал вот такой заголовочный файл Matexa.h: #ifndef Matexa_H #define Matexa_H ...

Как обратиться к элементу формы из внешнего заголовочного файла
Приветствую форумчан. Изучил основы программирования на C++. Начал писать программу - понял, что знаний не хватает. Создал форму Form1,...

4
+1
345 / 178 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
12.05.2017, 23:20
А какой смысл запихивать функцию в заголовочный файл?
Если из cрр всё работает?
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
13.05.2017, 00:49
Цитата Сообщение от Famous_47 Посмотреть сообщение
по совету преподавателя, решил убрать нагрузку (выполнение вычислений, обращения в интернет и др.) с обработчика кнопки и сделать все эти действия в отдельной функции, которую нажатие на кнопку (прерывание, с точки зрения ОС) вызывает.
по простому сказать, в итоге все исходники собираются в один файл, компилируются, потом линкуются и на выходе будет долгожданный exe.
А какую "нагрузку" можно убрать, поместив функцию в .h файл?

Может ваш преподаватель имел ввиду поместить ф-цию вычисления в отдельный поток?
0
 Аватар для Famous_47
1 / 1 / 1
Регистрация: 13.11.2015
Сообщений: 59
14.05.2017, 11:56  [ТС]
+1, просто так поступил и с остальными функциями, но эта работает только если весь код находится в обработчике нажатия кнопки, а когда создаю собственную функцию - ругается что она не принадлежит форме. (как исправить читал, но пока не совсем разобрался).
_Dimon_, дело не в том, где будет находиться функция в основном или h файле (просто остальные функции разместил в h и с ними всё нормально). Дело в том, что для ОС нажатие на кнопку является прерыванием и если при обработке прерывания ей придется ждать выполнение большого куска кода то это не правильно, а логичнее в обработчик нажатия кнопки вставить вызов функции, тогда прерывание будет быстро обработано, а выполнение функции будет выполняться как обычный процесс (разделяя процессорное время, без простоев). Это из основ организации операционных систем. Вопрос действительно это так в данной ситуации? Ведь идея с отдельным потоком выглядит более правдоподобно.
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
16.05.2017, 02:26
Цитата Сообщение от Famous_47 Посмотреть сообщение
дело не в том, где будет находиться функция в основном или h файле (просто остальные функции разместил в h и с ними всё нормально). Дело в том, что для ОС нажатие на кнопку является прерыванием
Нажал на кнопку (клавы) и отработалось. Причем там ОС? Это делает драйвер, а ловится через WinAPI.
Это же не системное программирование.
И причем здесь это? Одно другого не касается.
Цитата Сообщение от _Dimon_ Посмотреть сообщение
Может ваш преподаватель имел ввиду поместить ф-цию вычисления в отдельный поток?
Цитата Сообщение от Famous_47 Посмотреть сообщение
Ведь идея с отдельным потоком выглядит более правдоподобно.
и все-таки вы со мной согласились
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.05.2017, 02:26
Помогаю со студенческими работами здесь

Работа с формами
Всем привет. У меня есть MDI Application в Builder 6. У главной формы есть две дочерних - поиск(Данные выводятся в виде таблички в...

Работа с формами
Есть две формы. Из первой формы открывается вторая. #include "Unit3.h" Form3->ShowModal(); После выполнения каких-то действий во...

Работа с формами
Есть к примеру одна форма, на ней компонент Label. Как с помощью кнопки что на другой форме, прописать то, что написано в Edit на второй...

Работа с формами
Будьте добры. Подскажите , как вписать код в формы? Чтобы , когда я делаю кнопочки, они делали то, что я хочу. Понимаю, что тема широкая,...

Работа с формами
Исходник: Есть Две формы Form1(создаётся автоматически) и Form2(создаётся вручную, т.е при загрузке приложения она не загружается в...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
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 Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru