Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
Daniasons
0 / 0 / 0
Регистрация: 02.12.2014
Сообщений: 14
#1

Разный caption на кнопке и в меню

02.12.2014, 20:37. Просмотров 1344. Ответов 29
Метки нет (Все метки)

Как сделать чтобы caption в меню и на кнопке был разный ?

Должно получиться вот так:
В MainMenu : Очистка реестра
На кнопке: ОЧИСТКА РЕЕСТРА большими буквами (Caps Lock)
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2014, 20:37
Ответы с готовыми решениями:

Задать разный Caption для разных Button
Мне надо задать поле caption (разные циферки) для нескольких button. Можно это...

Как сделать на кнопке индексы! (То есть формула на кнопке)!
Как сделать на кнопке индексы! (То есть формула на кнопке)!

Form->Caption
Как программно изменить значение свойства Caption у формы??? Пишу напрямую...

Двойной caption
Пытаюсь сделать время вместе с caption Должно получиться вот так : Menu ...

AnsiString vs Caption
в затыке - код наотрез отказывается работать void __fastcall...

29
gunslinger
случайный прохожий
1277 / 809 / 319
Регистрация: 20.07.2013
Сообщений: 2,268
02.12.2014, 22:03 #2
Например, ручками. А что мешает? Они как-то связаны (общим Caption-ом)?
0
Daniasons
0 / 0 / 0
Регистрация: 02.12.2014
Сообщений: 14
02.12.2014, 22:11  [ТС] #3
Цитата Сообщение от gunslinger Посмотреть сообщение
Например, ручками. А что мешает? Они как-то связаны (общим Caption-ом)?
Мешает не знание языка
Не давно начал изучать вот и тупик...
0
gunslinger
случайный прохожий
1277 / 809 / 319
Регистрация: 20.07.2013
Сообщений: 2,268
02.12.2014, 22:28 #4
И причем тут знание языка.
Добавляешь на форму TButton и TMainMenu (вкладка Standart компонентов Toll Palette) и изменяешь в Object Inspector (инспектор объектов) требуемые параметры. Для MainMenu кликешь правой кнопкой на добавленный компонент и выбираешь Menu Designer.
А если тебе нужно сделать подобное программно, то рано еще. Продолжай изучение языка. Или жди более добрых людей, не люблю разжевывать основы, если это требует от меня дополнительных усилий.
0
Daniasons
0 / 0 / 0
Регистрация: 02.12.2014
Сообщений: 14
02.12.2014, 22:48  [ТС] #5
Цитата Сообщение от gunslinger Посмотреть сообщение
И причем тут знание языка.
Добавляешь на форму TButton и TMainMenu (вкладка Standart компонентов Toll Palette) и изменяешь в Object Inspector (инспектор объектов) требуемые параметры. Для MainMenu кликешь правой кнопкой на добавленный компонент и выбираешь Menu Designer.
А если тебе нужно сделать подобное программно, то рано еще. Продолжай изучение языка. Или жди более добрых людей, не люблю разжевывать основы, если это требует от меня дополнительных усилий.
Там нет чтобы был разный размер шрифта как мне надо
0
gunslinger
случайный прохожий
1277 / 809 / 319
Регистрация: 20.07.2013
Сообщений: 2,268
02.12.2014, 23:03 #6
Меняй Size (размер) Font-a (шрифта) для кнопки Button. Для меню не знаю.
0
BRcr
4015 / 2305 / 291
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
03.12.2014, 00:34 #7
Daniasons, в конструкторе формы берешь текст с пункта меню, переводишь в верхний регистр и присваиваешь к тексту кнопки.
0
SatanaXIII
Супер-модератор
Эксперт С++
5773 / 2772 / 376
Регистрация: 01.11.2011
Сообщений: 6,744
Завершенные тесты: 1
03.12.2014, 09:25 #8
Надо изначально установить какую-то однозначную связь между элементами меню и соответствующими им кнопками (какой-нибудь Tag, кусок названия). Потом пройтись по всем элементам меню и дальше как предлагает BRcr.
0
Daniasons
0 / 0 / 0
Регистрация: 02.12.2014
Сообщений: 14
03.12.2014, 12:12  [ТС] #9
Цитата Сообщение от BRcr Посмотреть сообщение
в конструкторе формы берешь текст с пункта меню, переводишь в верхний регистр и присваиваешь к тексту кнопки
Можете показать как это сделать,а то в упор не могу понять!
0
demmax2004
116 / 138 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
03.12.2014, 12:31 #10
C++
1
Button1->Caption = (MenuItem1->Items[1]->Caption).UpperCase();
0
Daniasons
0 / 0 / 0
Регистрация: 02.12.2014
Сообщений: 14
03.12.2014, 12:52  [ТС] #11
Цитата Сообщение от demmax2004 Посмотреть сообщение
Код C++
1
Button1->Caption = (MenuItem1->Items[1]->Caption).UpperCase();


C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::N1Click(TObject *Sender)
{
   Capt = ((TMenuItem *)Sender)->Caption;
   ((TMenuItem *)Sender)->Checked = true;
   X = ((TMenuItem *)Sender)->Tag;
   Button1->Caption = (TMenuItem->Items[1]->Caption).UpperCase();
   Button1->Enabled = true;
}
Не работает

========================================================================================================
ОШИБКИ

Checking project dependencies...
Compiling Project1.cbproj (Debug, Win32)
bcc32 command line for "Unit1.cpp"
c:\program files (x86)\embarcadero\studio\15.0\bin\bcc32.exe -D_DEBUG -DUSEPACKAGES -n.\Win32\Debug -I"c:\program files
(x86)\embarcadero\studio\15.0\include\windows\vcl";"c:\program files (x86)\embarcadero\studio\15.0\include";"c:\program files
(x86)\embarcadero\studio\15.0\include\dinkumware";"c:\program files (x86)\embarcadero\studio\15.0\include\windows\crtl";"c:\program files
(x86)\embarcadero\studio\15.0\include\windows\sdk";"c:\program files (x86)\embarcadero\studio\15.0\include\windows\rtl";"c:\program files
(x86)\embarcadero\studio\15.0\include\windows\vcl";"c:\program files (x86)\embarcadero\studio\15.0\include\windows\fmx";"C:\Program Files
(x86)\FastReports\LibD21";"C:\Program Files (x86)\Raize\CS5\Lib\RS-XE7\Win32";C:\Users\Public\Documents\Embarcadero\Studio\15.0\hpp\Win32 -y -Q -k
-r- -c -tR -tM -tW -C8 -o.\Win32\Debug\Unit1.obj -w-par -Od -v -vi- -H=.\Win32\Debug\Project1.pch -H Unit1.cpp
[bcc32 Error] Unit1.cpp(35): E2108 Improper use of typedef 'TMenuItem'
Full parser context
Unit1.cpp(31): parsing: void _fastcall TForm1::N1Click(TObject *)
Failed
Elapsed time: 00:00:00.1
0
BRcr
4015 / 2305 / 291
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
03.12.2014, 12:55 #12
Лучший ответ Сообщение было отмечено BRcr как решение

Решение

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
class TForm1 : public TForm
{
__published: // IDE-managed Components
    TMainMenu *menu;
    TActionList *actlst_1;
    TAction *act_1;
    TAction *act_2;
    TAction *act_3;
    TButton *btn_1;
    TButton *btn_2;
    TButton *btn_3;
    TMenuItem *mnu;
    TMenuItem *mni_1;
    TMenuItem *mni_2;
    TMenuItem *mni_3;
    TButton *btn_make_captions;
    void __fastcall act_1Execute(TObject *Sender);
    void __fastcall btn_make_captionsClick(TObject *Sender);
 
public: // User declarations
    
 
    __fastcall TForm1( TComponent * Owner );
 
    __fastcall ~TForm1( )
    {
    }
 
} ;
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
__fastcall TForm1::TForm1( TComponent * Owner ) :
    TForm( Owner )
{
    mni_1->Tag = reinterpret_cast < int > ( btn_1 );
    mni_2->Tag = reinterpret_cast < int > ( btn_2 );
    mni_3->Tag = reinterpret_cast < int > ( btn_3 );
}
 
// ---------------------------------------------------------------------------
 
void __fastcall TForm1::act_1Execute( TObject * Sender )
{
    ShowMessage( reinterpret_cast < TAction * > ( Sender )->Caption );
}
 
// ---------------------------------------------------------------------------
void __fastcall TForm1::btn_make_captionsClick( TObject * Sender )
{
    TButton * btn;
    TMenuItem * mni;
    for ( int i( 0 ), i_limit( mnu->Count ); i < i_limit; ++i )
    {
        mni = mnu->Items[ i ];
        btn = reinterpret_cast < TButton * > ( mni->Tag );
        btn->Action = mni->Action;
        btn->Caption = mni->Caption.UpperCase( );
    }
}
0
Миниатюры
Разный caption на кнопке и в меню   Разный caption на кнопке и в меню  
demmax2004
116 / 138 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
03.12.2014, 13:02 #13
У меня так

Разный caption на кнопке и в меню
0
Daniasons
0 / 0 / 0
Регистрация: 02.12.2014
Сообщений: 14
03.12.2014, 13:17  [ТС] #14
Цитата Сообщение от demmax2004 Посмотреть сообщение
У меня так
Для пробы новый проект создал

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
Button1->Caption = (TMenuItem->Items[1]->Caption).UpperCase();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------

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
//---------------------------------------------------------------------------
 
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include <Vcl.Menus.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
    TMainMenu *MainMenu1;
    TMenuItem *menu;
    TMenuItem *N1;
    TMenuItem *N2;
    TButton *Button1;
    void __fastcall Button1Click(TObject *Sender);
private:    // User declarations
public:     // User declarations
    __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif


ОШИБКИ
Checking project dependencies...
Compiling Project1.cbproj (Debug, Win32)
bcc32 command line for "Unit1.cpp"
c:\program files (x86)\embarcadero\studio\15.0\bin\bcc32.exe -D_DEBUG -DUSEPACKAGES -n.\Win32\Debug -I"c:\program files
(x86)\embarcadero\studio\15.0\include\windows\vcl";"c:\program files (x86)\embarcadero\studio\15.0\include";"c:\program files
(x86)\embarcadero\studio\15.0\include\dinkumware";"c:\program files (x86)\embarcadero\studio\15.0\include\windows\crtl";"c:\program files
(x86)\embarcadero\studio\15.0\include\windows\sdk";"c:\program files (x86)\embarcadero\studio\15.0\include\windows\rtl";"c:\program files
(x86)\embarcadero\studio\15.0\include\windows\vcl";"c:\program files (x86)\embarcadero\studio\15.0\include\windows\fmx";"C:\Program Files
(x86)\FastReports\LibD21";"C:\Program Files (x86)\Raize\CS5\Lib\RS-XE7\Win32";C:\Users\Public\Documents\Embarcadero\Studio\15.0\hpp\Win32 -y -Q -k
-r- -c -tR -tM -tU -tW -C8 -o.\Win32\Debug\Unit1.obj -w-par -Od -v -vi- -H=.\Win32\Debug\Project1.pch -H Unit1.cpp
[bcc32 Error] Unit1.cpp(15): E2108 Improper use of typedef 'TMenuItem'
Full parser context
Unit1.cpp(13): parsing: _fastcall TForm1::TForm1(TComponent *)
Failed
Elapsed time: 00:00:00.1
0
demmax2004
116 / 138 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
03.12.2014, 13:23 #15
откуда откуда взял TMenuItem ??? Я ума не приложу

C++
1
Button1->Caption = (TMenuItem->Items[1]->Caption).UpperCase();
0
BRcr
4015 / 2305 / 291
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
03.12.2014, 13:24 #16
Daniasons, TMenuItem замени на N1, N2 или что там еще...
0
Daniasons
0 / 0 / 0
Регистрация: 02.12.2014
Сообщений: 14
03.12.2014, 13:29  [ТС] #17
Цитата Сообщение от BRcr Посмотреть сообщение
TMenuItem замени на N1, N2 или что там еще...
всё так сделано как писали,и всё равно не компируеться
в архиве пробный проект
0
Вложения
Тип файла: rar Test1.rar (4.03 Мб, 2 просмотров)
Daniasons
0 / 0 / 0
Регистрация: 02.12.2014
Сообщений: 14
03.12.2014, 14:53  [ТС] #18
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::N1Click(TObject *Sender)
{
   Capt = ((TMenuItem *)Sender)->Caption;
   ((TMenuItem *)Sender)->Checked = true;
   X = ((TMenuItem *)Sender)->Tag;
   Button1->Caption = (N1->Items[1]->Caption).UpperCase();
   Button1->Enabled = true;
}
Код компилируется
При выборе пункта ошибка:menu index out of range
0
demmax2004
116 / 138 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
03.12.2014, 15:41 #19
Значит неправильный индекс используешь, ты проверял имеется у тебя пункт меню с индексом 1 ?
0
Daniasons
0 / 0 / 0
Регистрация: 02.12.2014
Сообщений: 14
03.12.2014, 15:53  [ТС] #20
Цитата Сообщение от demmax2004 Посмотреть сообщение
Значит неправильный индекс используешь, ты проверял имеется у тебя пункт меню с индексом 1 ?
Проверено, есть такой индекс!
0
03.12.2014, 15:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2014, 15:53

TGroupBox->Caption
Доброе время суток всем Вопрос в следующем: можно ли кэпшн гроупбокса...

Caption на арабском
Доброй ночи, скажите почему нельзя вести Caption на арабском языке?Шрифт...

Присвоение кнопке Caption
Есть MainMenu и кнопка. При нажатии на меню свойство Caption должно...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru