Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.30;
Скачать: 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 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.026 c
3-1148397089
Karburator
2006-05-23 19:11
2006.07.30
Помогите, не могу подключить сетевую базу


1-1150292191
Megabyte
2006-06-14 17:36
2006.07.30
Изменение формата ячеек Экселя в Дельфи


2-1152625504
Grotesque
2006-07-11 17:45
2006.07.30
Небольшой вопрос


6-1142779386
Godness
2006-03-19 17:43
2006.07.30
Узнать настройки прокси в explorer е


3-1148656387
SergeyGalat
2006-05-26 19:13
2006.07.30
Ошибка Table is Busy