OleContainer (вызов метода)
От: Lena_ki  
Дата: 11.10.06 06:42
Оценка:
Открываю новое приложение в C++ Builder 6. Беру произвольный, первый попавшийся ActiveX из тех, что есть на компьюторе. В данном случае это из папки System32 под названием vsf132.ocx Загружаю его в OleConteiner.


void __fastcall TForm1::Button1Click(TObject *Sender)
{
 OleContainer1->CreateObject("VCF1.VCF1Ctrl.1",false);
 OleContainer1->DoVerb(ovShow);
}


Просмотрев библиотеку типов этого vsf132.ocx пытаюсь вызвать его метод с двумя параметрами long.
[
propput,
id(0x00000115),
helpstring("Returns the number of the last occupied column for the specified row."),
helpcontext(0x00000807)
]
void LastColForRow(long nRow, long Param2 );

Вызов:
void __fastcall TForm1::Button2Click(TObject *Sender)
{
   Variant par1;
   Variant par2;

         long v1 = Edit1->Text.ToInt();
         long v2 = Edit2->Text.ToInt();

         par1.vt = VT_I4;
         par1.iVal = v1;

         par2.vt = VT_I4;
         par2.iVal = v2;

         TAutoArgs<2> args;
         args[1] = par1;
         args[2] = par2;



Form1->OleContainer1->OleObject.OlePropertySet("LastColForRow",static_cast<TAutoArgsBase&>(args));

}


Исключение 'Ошибка' на последней строке. Как исправить?


Пробую так:

TAutoArgs<2> args;
         args[1] = Variant(Edit1->Text.ToInt());
         args[2] = Variant(Edit2->Text.ToInt());
         Form1->OleContainer1->OleObject.OlePropertySet("LastColForRow",static_cast<TAutoArgsBase&>(args));


Тоже не работает. Исключение 'Ошибка'.
Интересно, что для этого метода не работает даже такое:
Form1->OleContainer1->OleObject.OlePropertySet("LastColForRow",Variant(2),Variant(3));
Получаю исключение 'Ошибка' и курсор мыши поподает сюда:


  template <class P1, class P2>
  void Variant::OlePropertySet(const String& name, P1 p1, P2 p2)
  {
    TAutoArgs<2> args;
    args[1] = p1;  args[2] = p2;
    OlePropertySet(name, static_cast<TAutoArgsBase&>(args)); //здесь!
  }


Как правильно передать два параметра long в моем случае?
Спасибо.
Re: OleContainer (вызов метода)
От: Аноним  
Дата: 12.10.06 06:22
Оценка:
Все, работает. Ошибка найдена. Вопрос закрыт.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.