Вниз
Скачать: CL | DM;

Использование "не-com" интерфейсов   Найти похожие ветки 

 
Як   (2006-07-10 14:50) [0]

Мне казалось, что раньше получалось.... может я что-то неправильно указал? Кто-то подобное делал? Или это недоброе влияние C#?

 IXMLWinControl = interface
   function GetXmlNodeName:string;
   property XmlNodeName: string read GetXmlNodeName;
 end;

 TXMLEdit = class(TEdit,IXMLWinControl)
 protected
   function GetXmlNodeName:string;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

{ TXMLEdit }

function TXMLEdit.GetXmlNodeName: string;
begin
 Result := "xxxxx";
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 XMLEdit : TXMLEdit;
begin
 XMLEdit := TXMLEdit.Create(Self);
 if XMLEdit is IXMLWinControl then
   MessageDlg((XMLEdit as IXMLWinControl).XmlNodeName , mtWarning, [mbOK], 0);
 XMLEdit.Free;
end;


Такое описание типов проглатывает без проблем. Однако функцию Button1Click() не компилит. Утверждает, что is и as использовать нельзя.


 
Як   (2006-07-10 15:38) [1]

Вопрос снимается....
Оказывается досточно написать.


var
 XMLEdit : TXMLEdit;
 pXMLWinControl : IXMLWinControl;
begin
 XMLEdit := TXMLEdit.Create(Self);
 pXMLWinControl := XMLEdit;
 MessageDlg(pXMLWinControl.XmlNodeName , mtWarning, [mbOK], 0);
 XMLEdit.Free;


 
Як   (2006-07-10 15:56) [2]

Вопрос возобновляется, т.к. в каждом конкретном случае, я не знаю, поддерживает, ли данный WinControl интерфейс IXMLWinControl.

А написать

var
XMLEdit : TWinControl;
pXMLWinControl : IXMLWinControl;
begin
XMLEdit := TXMLEdit.Create(Self);
pXMLWinControl := XMLEdit;
MessageDlg(pXMLWinControl.XmlNodeName , mtWarning, [mbOK], 0);
XMLEdit.Free;


Не дают
Хотелось бы иметь что-то типа

var
i : integer;
begin
 for i:=0 to ControlCount-1 do
   if Controls[i] is IXMLWinControl then
     MessageDlg((Controls[i] as IXMLWinControl).XmlNodeName , mtWarning, [mbOK], 0);
end;


Или это не возможно?


 
Джо ©   (2006-07-10 16:00) [3]

 if Controls[i].GetInterface(...) then


 
Як   (2006-07-10 19:12) [4]

ОК, спасибо, получилось



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.04 c
3-1148377107
DVM
2006-05-23 13:38
2006.07.30
Аналог TDBEdit c нормальной маской для ввода ip адреса.


2-1152177215
!!!!!
2006-07-06 13:13
2006.07.30
Память


15-1151572303
Ketmar
2006-06-29 13:11
2006.07.30
SMDR: opensource %-)


15-1151384777
Ega23
2006-06-27 09:06
2006.07.30
С Днём рождения! 27 июня


8-1139400515
AlexeyMir
2006-02-08 15:08
2006.07.30
Как можно оцифровать определенный кусок из песни в файл .wav




   Наверх