CreateControl(Type: IForeNETRuntimeType): Boolean;
Type - тип, содержащий описание .NET-компонента, который необходимо создать.
Метод CreateControl создает .NET-компонент, по описанию типа, передаваемому посредством параметра Type и отображает его в компонент NetControlBox.
Для выполнения примера предполагается наличие формы, расположенной на ней кнопки с наименованием "Button1" и двух компонентов NetControlBox с наименованиями "NetControlBox1" и "NetControlBox2".
Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Var
Run: IForeNETRuntime;
AsmSys: String;
Asm: IForeNETRuntimeAssembly;
Type1, Type2: IForeNETRuntimeType;
Begin
Run := ForeNETAssemblyClass.Runtime;
AsmSys := "Microsoft.VisualBasic.Compatibility, Version=7.0.5000.0, Culture=Neutral,PublicKeyToken=b03f5f7f11d50a3a";
Asm := Run.SystemAssembly(AsmSys);
//Создаем DirListBox в первом NetControlBox
Type1 := Asm.Type("Microsoft.VisualBasic.Compatibility.VB6.DirListBox");
NetControlBox1.CreateControl(Type1);
NetControlBox1.AttachHandler("DoubleClick");
//Создаем FileListBox во втором NetControlBox
Type2 := Asm.Type("Microsoft.VisualBasic.Compatibility.VB6.FileListBox");
NetControlBox2.CreateControl(Type2);
End Sub Button1OnClick;
Sub NetControlBox1OnEvent(Sender: Object; Args: INetControlBoxEventArgs);
Var
Run: IForeNETRuntime;
AsmSys: IForeNETRuntimeAssembly;
Instance1, Instance2: IForeNETRuntimeObjectInstance;
Type1, Type2: IForeNETRuntimeType;
Binding: IForeNETRuntimeMethodBinding;
Method: IForeNETRuntimeMethod;
Args1: IForeNETRuntimeMethodArgs;
s: String;
Begin
If Args.EventName = "DoubleClick" Then
//Получаем путь, выбранный в DirListBox
Run := ForeNETAssemblyClass.Runtime;
Instance1 := NetControlBox1.Control;
Type1 := Instance1.GetType;
Method := Type1.Method("get_Path");
s := Run.ObjectToVariant(Method.Invoke(Instance1));
//Устанавливаем путь в FileListBox для просмотра файлов в данной папке
//Библиотека для работы с типами данных
AsmSys := Run.SystemAssembly("mscorlib, PublicKeyToken=b77a5c561934e089");
Instance2 := NetControlBox2.Control;
Type2 := Instance2.GetType;
Binding := Type2.Assembly.Runtime.CreateBinding(1);
Binding.Types.Item(0) := AsmSys.Type("System.String");
Method := Type2.Method("set_Path", Binding);
Args1 := Method.CreateArgs;
Args1.Value(0) := s;
Method.Invoke(Instance2, Args1);
End If;
End Sub NetControlBox1OnEvent;
После выполнения примера при нажатии на кнопку в компонентах "NetControlBox1" и "NetControlBox2" будут созданы .NET-компоненты "DirListBox" и "FileListBox", используемые для выбора папки на диске и просмотра содержимого папки, соответственно. Для компонента "DirListBox" будет подключено отслеживание события "DoubleClick". При обработке данного события для компонента "FileListBox" будет устанавливаться путь, выбранный в компоненте "DirListBox".
См. также: