с тем, чтобы программисты могли
(типа Integer) специально введено в каждый компонент Delphi с тем, чтобы программисты могли использовать его по своему усмотрению. Назначим 0 свойству Tag
пункта “Прямоугольник”, 1 - пункту “Квадрат”, 2 - пункту “Закругленный прямоугольник” и т.д. Цель такого назначения будет объяснена позднее.
Два метода, созданные для подпунктов изменения цвета аналогичны тем, которые были в программе SHAPEDEM:
procedure TForm1.ShapeColorClick(Sender: TObject);
begin
if ColorDialog1.Execute then
Shape1.Brush.Color := ColorDialog1.Color;
end;
procedure TForm1.FormColorClick(Sender: TObject);
begin
if ColorDialog1.Execute then
Form1.Color := ColorDialog1.Color;
end;
Как Вы видите, ничего не изменилось по сравнению с первой версией программы, хотя данные методы уже вызываются из меню, а не из кнопок.
Аналогично, методы, реализующие реакцию на выбор подпунктов меню изменения вида фигуры также очень похожи на методы выбора фигуры через выпадающий список:
procedure TForm1.NewShapeClick(Sender: TObject);
begin
Shape1.Shape := TShapeType((Sender as TMenuItem).Tag);
end;
Этот код “работает” правильно благодаря тому, что перечислимый тип TShapeType
в качестве начального имеет значение 0 и в свойство Tag
подпунктов меню мы также записали порядковые номера, начинающиеся с нуля.
Отметим, что мы использовали оператор as, который позволяет надежно преобразовывать типы из одного в другой: в частности, преобразовать параметр Sender
(имеющий общий тип TObject) в тип TMenuItem. Как правило, параметр Sender
в Delphi - это управляющий элемент, посылающий сообщения функции, в которой он фигурирует. В данном случае, Sender
является пунктом меню, и, следовательно, Вы можете работать с этим параметром как если бы он был декларирован с типом TMenuItem.
Главная причина использования оператора as
состоит в том, что он обеспечивает очень ясный синтаксис, даже если Вы проводите сложное двухуровневое преобразование типов. Более того, оператор as
обеспечивает проверку преобразования в режиме выполнения программы. Когда Вы используете оператор as, Вы можете быть уверены в том, что преобразование Sender
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий