Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции.doc
Скачиваний:
17
Добавлен:
14.02.2015
Размер:
641.54 Кб
Скачать

Урок 8. Работаем с контекстным меню (класс tPopupMenu)

Компонент PopupMenu расположен на вкладке Standard Палитры компонентов:

Перенесите его двойным щелчком на форму. Добавление пунктов для него происходит точно так же, как и для главного меню, рассмотренного на прошлом уроке. Добавление обработчиков тоже делается точно так же.

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

После чего при щелчке правой кнопкой мыши на компоненте контекстное меню и появится.

При необходимости контекстное меню можно вызывать и другим способом. Например, нам надо, чтобы оно появлялось не всегда, а только при выполнении некоторого условия (скажем, если мы щелкнули на определенном месте формы). В этом случае нам надо для показа меню вызвать его метод Popup. У этого метода два параметра - X и Y того места, где контекстное меню должно появится. Вот пример использования этого метода:

void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,

TShiftState Shift, int X, int Y)

{

if (X<30)

{

//Преобразовываем кооринаты

TPoint point = ClientToScreen(Point(X, Y));

//Показываем меню

PopupMenu1->Popup(point.x, point.y);

}

}

В приведенном примере контекстное меню появится только если мы щелкнули на форме на расстоянии не больше чем 30 пикселов от левого края. Еще раз обратите внимание, что параметры X и Y у метода Popup контекстного меню - это координаты относительно всего экрана. В метод же FormMouseDown передаются координаты щелчка мыши относительно формы. Для преобразования одних координат в другие используем метод ClientToScreen.

Урок 9. Компонент Edit

Компонент Edit предназначен для ввода текста. Расположен он на вкладке Standard Палитры компонентов:

Основное его свойство - это Text. Оно позволяет читать и записывать некоторый текст в Edit. Обратите внимание, что это свойство имеет строковый тип (вернее тип AnsiString, но сейчас это уточнение не столь важно). Это означает, что если пользователь вводит в edit некоторое число, то необходимо дополнительное преобразование. Делается это приблизитетльно так:

int z= StrToInt(Edit1->Text);

Кроме функции StrToInt есть обратная к ней IntToStr. Они переводят строку в целое число и целое число в строку соответственно. Кроме этой пары функций имеется пара StrToFloat и FloatToStr, котрые работают с вещественными числами.

Основное событие для edit'а - это Change. Возникает при изменении свойства Text.

Кроме того, часто используются такие события как KeyPress (возникает при вводе каждого символа), KeyDown и KeyUp (возникают при нажатии и отпускании клавиши). Вот так, например, можно ограничить пользовательский ввод только символами из некоторого набора:

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)

{

if (Key!='a' && Key!='b' && Key!='c')

{

Key=0x0; //Обнуляем символ

MessageBeep(-1); //Звуковой сигнал

}

}

В этом примере пользователь сможет ввести только символы a, b и c. При любом другом символе раздастся звуковой сигнал. Параметр Key тут передается по ссылке, что и позволяет нам изменить его. Событие KeyPress возникает принажатии алфавитно-цифровых клавиш. Если же вам надо отследить нажатие других клавиш (например, F1 или клавиш со стрелочками), то используйте события KeyDown и KeyUp. Они, крроме того, позволяют определить нажатие клавиш-модификаторов (Atl, Ctrl и Shift).

Из полезных свойств отметим еще некоторые.

Свойство CharCase. Возможные значения для него - ecNormal (вводимый текст автоматически не преобразуется), ecLowerCase (текст преобразуется к нижнему регистру) и ecUpperCase (текст преобразуется к верхнему регистру).

Свойство MaxLenght. Задает максимально возможное число символов в edit'е. По умолчанию равно нулю, что означает, что количество вводимых символов не ограничено.

Свойство ParentFont. Может принимать значение true (в edit'е будет использоваться шрифт формы) и false (edit будет использоваться собственный шрифт).

Свойство PasswordChar. Позволяет задать символ-заменитель для ввода пароля. Чаще всего для этих целей используют звездочку. Свойство text при этом все равно будет содержать вводимый пользователем пароль.