Форум: "Начинающим";
Текущий архив: 2006.07.30;
Скачать: [xml.tar.bz2];
ВнизИспользование "не-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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.015 c