Пример Редактора Компонент
В качестве примера создадим Редактор Компонент для класса TButton. Этот Редактор будет показывать сообщение и изменять свойство Caption у объекта TButton. В данном примере это будет срабатывать и при двойном щелчке мыши, и через контекстное меню.
Объявление нового класса Редактора Компонент:
TButtonEditor = class(TComponentEditor)
private
procedure HiThere;
public
procedure Edit; override;
procedure ExecuteVerb(Index: Integer); override;
function GetVerb(Index: Integer): string; override;
function GetVerbCount: Integer; override;
end;
Процедура HiThere будет показывать сообщение и изменять свойство Caption:
procedure TButtonEditor.HiThere;
begin
MessageDlg('Hi! It replaces Default Component Editor.',
mtInformation, [mbOK], 0);
(Component as TButton).Caption:='Hi!';
Designer.Modified;
end;
Процедуры Edit и ExecuteVerb тольковызывают HiThere:
procedure TButtonEditor.Edit;
begin
HiThere;
end;
procedure TButtonEditor.ExecuteVerb(Index: Integer);
begin
if Index = 0 then HiThere;
end;
Процедуры GetVerb и GetVerbCount определяют вид контекстного меню:
function TButtonEditor.GetVerb(Index: Integer): string;
begin
result:='&Get message ...'
end;
function TButtonEditor.GetVerbCount: Integer;
begin
result:=1;
end;
Здесь в контекстное меню добавляется один пункт "Get message :".
Редактор Компонент готов. Теперь необходимо зарегистрировать новый Редактор Компонент, это делается аналогично регистрации Редактора Свойств:
procedure Register;
begin
RegisterComponentEditor(TButton, TButtonEditor);
end;
После подключения нового Редактора Компонент в среду Delphi (пункт меню "Options|Install Components"), создайте новый проект, положите на форму объект TButton и щелкните дважды на нем - появится диалог:
После того, как Вы нажмете "OK", текст на кнопке изменится.
Созданный Редактор Компонент заместит Редактор по умолчанию для всех объектов класса TButton и его наследников, например, TBitBtn.
Контрольные вопросы
1. Для чего предназначены Редакторы Свойств?
2. Какие стандартные Редакторы Свойств существуют в Delphi?
3. Какой класс является базовым для Редакторов Свойств?
4. Длячегоиспользуютсяметоды Activate, AllEqual, Edit, GetAttributes, GetComponent, GetEditLimit, GetName, GetProperties, GetPropType, GetValue, GetValues, Initialize, SetValue(Value), Modified, GetXxxValue, SetXxxValue, свойства PrivateDirectory и Valueкласса TPropertyEditor?
5. Как можно редактировать значение свойства в Инспекторе Объектов?
6. Какие основные этапы выделяют при создании Редактора Свойств?
7. Какая процедура используется для регистрации Редактора Свойств? Что указывается в каждом ее параметре?
8. Как производится установка Редактора свойств?
9. Для чего предназначен Редактор Компонента?
10. Какой класс берется в качестве родительского при создании собственного Редактора Компонента? Где располагается данный класс?
11. Для чего предназначены методы Create, Edit, GetVerbCount, GetVerb и ExecuteVerb Редактора Компонента?
12. Что выполняет Редактор Компонента по умолчанию (TDefaultEditor) при двойном щелчке по компоненту?
13. Что переопределяется при создании Редактора Компонента?
14. Какие процедуры обеспечивают регистрацию Редактора Компонента?
15. Как созданный Редактор Компонента подключается в среде Delphi?
Лекция 17
ТЕМА:Отладка программ. Инструменты. Методика отладки.
Литература: 1. Культин Н. Б. Основы программирования в Delphi 7. – СПб.: БХВ-Петербург, 2010.
2. http://www.helloworld.ru/texts/comp/lang/delphi/delphi4/DebugerDelphi.htm
Конечная цель программиста заключается в написании правильно работающей программы, но, к сожалению, в 99 случаях из 100 первая попытка использования программы приводит к появлению предупреждения диалогового окна с кодом ошибки, неверного результата или в худшем случае к зависанию компьютера. Приблизительно так начинается отладка программы.
Определение 1.Отладка программы — это специальный этап в разработке программы, состоящий в выявлении и устранении программных ошибок, факт существования которых уже установлен.
Программные ошибки, как правило, делятся на три вида:
1. Синтаксическая ошибка. Неправильное употребление синтаксических конструкций, например употребление оператора цикла For без Tо.
Дата добавления: 2015-09-07; просмотров: 916;