C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
ToolBar, Программно создать ToolBotton
Pan-SQL
Отправлено: 01.11.2006, 09:24


Ученик-кочегар

Группа: Участник
Сообщений: 22



Здравствуйте! Подскажите, как программно создать ToolButton на ToolBar. Заранее благодарен
Valdemar
Отправлено: 01.11.2006, 13:05


Мастер участка

Группа: Участник
Сообщений: 433



Читайте help.
Пример взят из справки:
CODE
void AddButtons(TToolBar *pToolBar, TStringList *pCaptions)
{
 for (int i = 0; i < pCaptions->Count; i++)
 {
   TToolButton *pButton = new TToolButton(pToolBar);
   pButton->Parent = pToolBar;
   pButton->Caption = pCaptions->Strings[i];
   if (pButton->Caption == "|")
     pButton->Style = tbsSeparator;
   else
     pButton->Style = tbsButton;
 }
}

void __fastcall TForm1::FormCreate(TObject *Sender)

{
 TToolBar *pToolBar = new TToolBar(this);
 pToolBar->Parent = this;
 TStringList *pCaptions = new TStringList();
 pCaptions->Add("New");
 pCaptions->Add("Save");
 pCaptions->Add("|");
 pCaptions->Add("Cut");
 pCaptions->Add("Copy");
 pCaptions->Add("Paste");
 AddButtons(pToolBar, pCaptions);
 delete pCaptions;
 pToolBar->ShowCaptions = True;
 pToolBar->Height = 40;
}
Pan-SQL
Отправлено: 28.11.2006, 14:14


Ученик-кочегар

Группа: Участник
Сообщений: 22



Спасибо! Заработало! Можно ли программно на эту кнопенцию поместить пикту (пиктограмму)?
Evil_Smile
Отправлено: 28.11.2006, 15:41


Дежурный стрелочник

Группа: Участник
Сообщений: 57



Немного модифицировать код из help-а
CODE

void AddButtons(TToolBar *pToolBar, TStringList *pCaptions)
{
for (int i = 0; i < pCaptions->Count; i++)
 {
   TToolButton *pButton = new TToolButton(pToolBar);
   pButton->Parent = pToolBar;
   pButton->Caption = pCaptions->Strings[i];
   if (pButton->Caption == "|")
       {
       pButton->Style = tbsSeparator;
       pButton->ImageIndex = -1;// для разделителя картинка не нужна
       }
   else
       {
       pButton->Style = tbsButton;
       pButton->ImageIndex = 1;// номер картинки с 0
       }
 }
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
TToolBar *pToolBar = new TToolBar(this);
pToolBar->Parent = this;
pToolBar->Images = ImageList1; // прикрепляем к toolbar-у уже заполненый imagelist
TStringList *pCaptions = new TStringList();
pCaptions->Add("New");
pCaptions->Add("Save");
pCaptions->Add("|");
pCaptions->Add("Cut");
pCaptions->Add("Copy");
pCaptions->Add("Paste");
AddButtons(pToolBar, pCaptions);
delete pCaptions;
pToolBar->ShowCaptions = True;
pToolBar->Height = 40;
Pan-SQL
Отправлено: 26.12.2006, 14:44


Ученик-кочегар

Группа: Участник
Сообщений: 22



Можно ли каким-либо образом переменную класса TToolButton объявить как глобальную, т. е. в разделе public?
olegenty
Отправлено: 26.12.2006, 15:00


Ветеран

Группа: Модератор
Сообщений: 2412



чё-то не наблюдаю связи между глобальностью и public.
да, можно. таким же образом, как и в любом другом месте.
Pan-SQL
Отправлено: 26.12.2006, 15:47


Ученик-кочегар

Группа: Участник
Сообщений: 22



Объявляю в заголовочном файле:

public
TToolBar *pToolBar;

Компилятор выдает ошибку
olegenty
Отправлено: 26.12.2006, 15:57


Ветеран

Группа: Модератор
Сообщений: 2412



какую? (всегда, когда говоришь об ошибке компилятора, не забывай её озвучивать, здесь телепатов нет)

двоеточие после public не пробовал ставить?
Pan-SQL
Отправлено: 16.01.2007, 14:43


Ученик-кочегар

Группа: Участник
Сообщений: 22



На форме имеется кнопка. Если переменная типа TtoolButton объявлена внутри события:

TToolButton *tbn=new TToolButton(Application);
tbn->Parent=MyTrackBar->ToolBar1;
tbn->AutoSize=false;
tbn->Height=50;
tbn->Width=200;
tbn->Visible=true;

все работает нормально, но когда я выношу строку TToolButton tbn в заголовочный файл в раздел public, то получаю сообщение: Type name expected

Вернуться в Вопросы программирования в C++Builder