Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
82 / 78 / 34
Регистрация: 13.02.2018
Сообщений: 1,347

Одно меню на все формы

14.02.2018, 13:27. Показов 1789. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сколько не ищу, у всех как то разумно все описано, ничего не понимаю и многие просто не объясняют.
Так как сделать одно меню что бы работала на всех формах одинаково или лучше просто все скрывать (visible = false) вместо лишних форм?(visible = false)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.02.2018, 13:27
Ответы с готовыми решениями:

Как сделать, чтобы при изменении формы было одно и тоже меню?
Как мне сделать чтобы при изменении формы у меня было одно и тоже меню,я новичок сильно не ругайтесь хочу сделать вот так: ...

Одно значение в поле формы для автоматического проставления на все записи
Добрый день! Подскажите, таблица "Расчет доставки" и есть форма "Расчет доставки" в таблице поле Объем груза. Как сделать так что бы...

Как подключать приложение к MySQL - свое подключение для каждой формы, или одно на всё приложение?
Вопрос: как правильно организовать подключение к базе MySQL для приложения, которое обращается к разным таблицам одной базы - при каждом...

5
 Аватар для Lelik-pahan
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
14.02.2018, 15:54
Цитата Сообщение от k0vpack Посмотреть сообщение
как сделать одно меню
О каком меню речь? TMainMenu, TPopupMenu или какое-то ещё?
Цитата Сообщение от k0vpack Посмотреть сообщение
что бы работала
Чтобы кто работала?
Цитата Сообщение от k0vpack Посмотреть сообщение
лучше просто все скрывать
что скрывать?

Изложи суть проблемы подробнее, сложно понять в чём заключается вопрос
0
82 / 78 / 34
Регистрация: 13.02.2018
Сообщений: 1,347
14.02.2018, 16:25  [ТС]
Lelik-pahan,
Цитата Сообщение от Lelik-pahan Посмотреть сообщение
О каком меню речь? TMainMenu, TPopupMenu или какое-то ещё?
TMainMenu
Цитата Сообщение от Lelik-pahan Посмотреть сообщение
Чтобы кто работала?
Что бы на всех формах было одно и то же меню, что бы не делать у всех форм одинаково(ибо при измене на одном, у всех надо менять(
Цитата Сообщение от Lelik-pahan Посмотреть сообщение
что скрывать?
ну, делать все на одной форме, и просто скрывать все (Visible = false) вместо лишних форм
0
 Аватар для Lelik-pahan
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
14.02.2018, 17:04
Лучший ответ Сообщение было отмечено k0vpack как решение

Решение

k0vpack,
Попробовал. Если пытаться назначить форме в качестве меню компонент TMainMenu, который уже используется другой формой, выходит ошибка.
Если говорить вообще о такой возможности (использовать одно меню), можно перед показом новой формы отвязывать меню от текущей видимой и привязывать к появляющейся
C++
1
2
3
4
5
6
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    Menu = NULL;
    Form2->Menu = MainMenu1;
    Form2->Show();
}
Но, ИМХО, это костыль.

Если нужно показывать разные наборы компонентов, можно сделать так:
кидаешь на форму PageControl и размещаешь на его страницах нужные компоненты.
В конструкторе формы пишешь
C++
1
2
for (int i = 0; i < PageControl1->PageCount; i++)
    PageControl1->Pages[i]->TabVisible = false;
при необходимости сменить страницу (вместо показа другой формы или скрытия всех компонентов), делаешь это программно
C++
1
PageControl1->ActivePageIndex = 1;
или
C++
1
PageControl1->ActivePage = TabSheet2;
Такой вариант удобен тем, что в режиме конструктора можно свободно переключаться между страницами и видеть все компоненты.

Также можно использовать фреймы.
2
82 / 78 / 34
Регистрация: 13.02.2018
Сообщений: 1,347
14.02.2018, 17:45  [ТС]
Цитата Сообщение от Lelik-pahan Посмотреть сообщение
Но, ИМХО, это костыль.
почему это плохо?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
14.02.2018, 19:03
Лучший ответ Сообщение было отмечено k0vpack как решение

Решение

Цитата Сообщение от Lelik-pahan Посмотреть сообщение
Но, ИМХО, это костыль.
"Это" - костыль. Но есть же у TMainMenu метод Merge, у которого в описании написано:
For example, to use the main menu of the first form in an application as the main menu for the application, call Merge to merge the main menu of any additional forms in the application with the main menu of the first form.
Этого будет достаточно для того, чтобы на всех формах было одинаковое меню (то, с которым мерджится меню текущей формы)

Вот, к примеру, на первой (главной) форме настроил нужное мне MainMenu, и создал еще 2 дополнительных формы, на которые просто бросил пустой компонент TMainMenu, без настройки. Вот код всех форм проекта:
1-я
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
 
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    Form2->Show();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    Form3->Show();
}
//---------------------------------------------------------------------------


2-я
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit2.h"
#include "Unit1.h"
 
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm2::FormCreate(TObject *Sender)
{
    MainMenu1->Merge(Form1->MainMenu1); // Все, что нужно
}
//---------------------------------------------------------------------------


3-я
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit3.h"
#include "Unit1.h"
 
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm3 *Form3;
//---------------------------------------------------------------------------
__fastcall TForm3::TForm3(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm3::FormCreate(TObject *Sender)
{
    MainMenu1->Merge(Form1->MainMenu1); // Все, что нужно
}
//---------------------------------------------------------------------------
, теперь при открытии любой формы я вижу на ней то меню, которое настраивалось для главной формы приложения... Как-то так...
5
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.02.2018, 19:03
Помогаю со студенческими работами здесь

Создать двухуровневое меню, которое запускает все созданные формы, отчеты, запросы
как это сделать!?

Создать двухуровневое меню, которое запускает все созданные формы, отчеты, запросы
Базу данных прилагаю. Пытался через формы создать, но не получается. 2) Второй вопрос. Картинку прилагаю. Когда я нажал &quot;Сжать и...

Объединение вертикальных полей подчиненной формы в одно поле главной формы
Доброго времени суток уважаемые форумчане! Подскажите пож-та каким образом можно объединить поля из разных записей подчиненной формы в...

Раскрывающееся меню - при открытии/закрытии вложенного меню закрывается все меню
Проблема во вложенном меню. При открытии/закрытии вложенного меню закрывается все меню. Надо, чтобы главное меню не реагировало на клики во...

Как для одной страницы отображать одно меню, а для другой страницы другое меню? DLE
Как для одной страницы отображать одно меню, а для другой страницы другое меню? То есть, есть страница &quot;Товары&quot;, и в меню...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта 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-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
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. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru