Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.01.15;
Скачать: CL | DM;

Вниз

Delphi and Interface   Найти похожие ветки 

 
crossmark   (2010-07-19 15:54) [0]

Здравствуйте!
вот решил изучать технологию 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.

Спасибо!


 
~AQUARIUS~ ©   (2010-07-19 20:02) [1]


> вот здесь при компиляции говорит о том что не знает Beep

Конечно же не знает. И правильно делает что говорит. Вы сказали компилятору, что ваш класс будет реализовывать интерфейсы ITest и ITest2, у них обоих есть метод Beep, который ДОЛЖЕН быть реадизованный в вашем классе. Но поскольку класс больше не содержит ничего, компилятор ес-но ругается.


> вот здесь по примеру он подключается, но у меня ошибка

Телепатов нет, так что давайте текст ошибки (копировать вот эту свору кода лень). Ну и опять же, смотрим первое замечание


 
_Юрий   (2010-08-02 20:07) [2]


> > вот здесь по примеру он подключается, но у меня ошибка
>
> Телепатов нет, так что давайте текст ошибки (копировать
> вот эту свору кода лень). Ну и опять же, смотрим первое
> замечание


Телепаты есть.
Компилятор не видит идентификатор IToolBarCommands потому, что соответствующий юнит находится в uses-секции implementation, а идентификатор задействован в секции interface



Страницы: 1 вся ветка

Текущий архив: 2012.01.15;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.008 c
15-1316959585
Pit
2011-09-25 18:06
2012.01.15
Несколько вопросов по Android


15-1317372179
oxffff
2011-09-30 12:42
2012.01.15
Вопрос по MDX запросам


15-1317241802
Юрий
2011-09-29 00:30
2012.01.15
С днем рождения ! 29 сентября 2011 четверг


6-1249385626
Polkin
2009-08-04 15:33
2012.01.15
проблема с ISA-прокси


2-1317972414
ЕД
2011-10-07 11:26
2012.01.15
TcxDBLookUpComboBox в TcxDBVerticalGrid