Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.07.2010, 16:14   #1
crossmark
Пользователь
 
Регистрация: 13.03.2010
Сообщений: 27
По умолчанию Delphi and Interface

Здравствуйте!
вот решил изучать технологию Com.
столкнулся с проблемой аж с самого начала...
набирал код из книги

Код:
unit Unit2;
interface
uses Windows;
type
   ITest=interface
      ['{9B187C91-1300-4546-B74E-944CAB86058D}']
      procedure Beep;
   end;
   ITest2=interface
      ['{AFC8CFE7-A7BF-4A49-A6E7-0FF319F95FA1}']
      procedure Beep;
   end;

   TTest2=class(TInterfacedObject,ITest,ITest2)
   procedure MyBeep;
   procedure ITest.Beep=MyBeep;
   procedure ITest2.Beep=MyBeep;
   end;

type
   TBeeper=class
     procedure Beep;
   end;
   TMessager=class
     procedure ShowMessage(const S:string);
   end;

   TTest3=class(TinterfacedObject,ITest,ITest2)
   private
     FBeeper:TBeeper; --------------------------> вот здесь при компиляции говорит о том что не знает 
                                                  Beep
end;
implementation

{ TTest2 }

procedure TTest2.MyBeep;
begin
 //
end;

{ TBeeper }

procedure TBeeper.Beep;
begin
 Windows.Beep(0,0);
end;

{ TMessager }

procedure TMessager.ShowMessage(const S: string);
begin
  MessageBox(0,PChar(S),nil,0);
end;

end.

И еще вопросик:

Смысл в том что, создаем в модуле Интерфейс
Код:
unit ToolberInterface;

interface
type
   TCommandType=(ctSave,ctLoad,ctClear);
   TCommandTypes=set of TCommandType;
   TSaveType=(stSave,stSaveAs);

   IToolBarCommands=interface
   ['{0C7A6137-8EE5-4D4B-801B-EF196E10187C}']
     function SupporedCommands:TCommandTypes ;
     function Save(AType:TSaveType):Boolean ;
     procedure Load;
     procedure Clear;
   end;   
implementation

uses Unit2;

end.
теперь его надо подключить в Форму
Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm2 = class(TForm, IToolBarCommands) ------------> вот здесь по примеру он подключается, но у меня 
                                                         ошибка
  private
    { Private declarations }
    function SupportedCommands:TCommandTypes ;
  public
    { Public declarations }
  end;


var
  Form2: TForm2;

implementation

uses ToolberInterface, Unit1;

{$R *.dfm}

{ TForm2 }

function TForm2.SupportedCommands: TCommandTypes;
begin
//
end;

end.
Спасибо!

Последний раз редактировалось Stilet; 19.07.2010 в 16:44.
crossmark вне форума Ответить с цитированием
Старый 19.07.2010, 21:58   #2
Karabash
Форумчанин
 
Регистрация: 26.07.2009
Сообщений: 216
По умолчанию

Особенность в том, что в классе, использующий интерфейс должны быть объявлены и реализованы ВСЕ методы интерфейса. Реализация, при необходимости, может быть пустой.
Karabash вне форума Ответить с цитированием
Старый 20.07.2010, 12:32   #3
Sanprof
Форумчанин
 
Аватар для Sanprof
 
Регистрация: 28.01.2008
Сообщений: 267
По умолчанию

по первому вопросу:
Код:
TTest3=class(TinterfacedObject,ITest,ITest2)
   private
     FBeeper:TBeeper;
     procedure ITest.Beep=FBeeper.Beep;//точно не уверен, но сначала нужно закриэйтить Fbeeper
     procedure ITest2.Beep=FBeeper.Beep;
end;
По второму вопросу:
uses ToolberInterface, Unit1; - ToolberInterface от сюда убрать и добавить в Uses реализации Interface.
Не забываем говорить спасибо за помощь - это ведь так приятно
Sanprof вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализация interface Syltan Общие вопросы C/C++ 4 15.06.2010 13:19
раздел interface . vedro-compota Общие вопросы Delphi 4 24.04.2010 12:33
Задача в interface среде Delphi akialex Помощь студентам 1 12.12.2009 19:50
Delphi. Как нарисовать в Delphi два движущиеся шара с определенной скоростью? redred Общие вопросы Delphi 10 11.12.2007 10:43
Как открыть БД, написанную в Delphi если нf другой машине Delphi нет? dagarik БД в Delphi 7 22.10.2007 17:54