Урок 16 Пользовательские функции.Программное создание на форме различных визуальных и невизуальных компонентов. No title

April 2, 2006
в колонках играет Johny Clegg & Savuka-Scatterlings Of Africa


Здраствуйте, сегодняшний урок очень важный и он вам поможет перейти на новый этап в программированиии на С++ Builder. Теперь вы будете не просто менять свойства тех или иных компонентов, но и научитесь их программно вставлять на форму.

Начнём с простого примера.Программными средствами мы создадим крнпку, при нажатии на которую будет появляться сообщение.
Создадим новый проект.два раза кликнем по форме и вобработчике событий формы onCreate напишем следующий код:

void __fastcall TForm1::FormCreate(TObject *Sender)
{
TButton *But1 = new TButton(this);
//Эту строку можно заменить на TButton *But1;But1=new TButton (this);
But1->Parent=this;
//это св-во указывает на то , где будет располагаться наша кнопка, потом можно будет указать Form1 или Panel1 ну и т.д.
But1->Name="Button1";//даём нашей кнопке имя
But1->Caption="МОя кнопка!";//меняем надпись на кнопке
//здесь можно менять любые св-ва, которые принадлежат TButton, то есть обычной кнопке, которую мы раньше просто перетаскивали с панели компонентов
But1->OnClick=SuperClick;//при событии onClick нашей созданной кнопки , будет выполняться функция SuperClick
}

Теперь создадим функцию SuperClick , которая будет вызываться при нажатии на кнопку.

void __fastcall TForm1::SuperClick(TObject *Sender)
{
TButton *tmp =(TButton*)Sender;
// переменной(tmp) типа TButton присваиваем кнопку, которая вызвала эту функцию
//Теперь, всё, что мы будем творить с tmp, будет происходить и с нашей кнопкой

tmp->Caption="ого!";
//меняем надпись на кнопке
//тут можно поменять любые св-ва кнопки
ShowMessage(tmp->Name);
//показывает сообщение с именем кнопки, которая вызвала событие SuperClick
}


теперь функцию SuperClick надо объявить в файле Unit1.h, иначе компилятор будет выдавать ошибку

void __fastcall SuperClick(TObject *Sender);

Вот что должно получится.


А файл unit1.cpp, должен выглядеть так:



В следующем уроке я продолжу эту тему....

Если есть вопросы по этому материалу или вопросы в принципе, пишите на мыло, ответы постараюсь выложить в последующих уроках.


Author of article - MA F*CKA CREW 2006
www.builderhelper.3dn.ru
builder.helper@rambler.ru