Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #3  
Старый 05.12.2007, 16:23
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

Создайте наследника от одного из стандартных классов и будет у вас сразу инкапсуляция и наследование. Для демонстрации полиморфизма нужно перекрыть один из виртуальных методов класса-предка.

Вот пример наследника TLabel, который по щелчку мыши открывает заданную страницу в браузере:
Код:
unit Unit2;

interface

uses
  Windows, Classes, StdCtrls, ShellAPI;

Type
  TLinkLabel = class(TLabel)
  private
    FLink: String;
  protected
  public
    constructor Create(AOwner: TComponent; ALink: String);
    procedure Click; override;

    property Link: String read FLink write FLink;
  end;

implementation

{ TLinkLabel }

procedure TLinkLabel.Click;
begin
  inherited;
  if FLink <> '' then
    ShellExecute(Parent.Handle, 'open', PChar(FLink), nil, nil, SW_SHOW);
end;

constructor TLinkLabel.Create(AOwner: TComponent; ALink: String);
begin
  inherited Create(AOwner);
  FLink := ALink;
end;

end.

Потом в главной форме пишем, например, так:
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
  L: TLabel;
begin
  // Создаем объект
  L         := TLinkLabel.Create(Self, 'http://www.delphisources.ru');
  L.Top     := 10;
  L.Left    := 10;
  L.Caption := 'DelphiSources';
  L.Parent  := Self;
end

Полиморфизм здесь в том, что переменная L объявлена как TLabel, тем не менее после присвоения ей значения типа TLinkLabel, она корректно вызывает переопределенный метод Click.

Пример, конечно, абсолютно высосанный из пальца и не жызненный.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:10.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter