Aptem |
Отправлено: 30.01.2005, 18:32 |
|
Мастер участка
Группа: Участник
Сообщений: 349
|
Привет, Всем!
У меня такая проблема. Загружена страница с формой в TCppWebBrowser. Программно подставляю текст в поля, и меняю состояние radio button, однако если я делаю это программно (состояние radio button) после нажатия кнопки submit форма не понимает, что я выбрал другое состояние для radio.
Например, есть два radio, одно из них отмечено, нужно отметить другое, я делаю такCODE | IHTMLInputElement *pInput -> put_checked ( 1 ); | и нажимаю кнопку submit, однако форма думает, что по-прежнему стоит первое radio!
Что делать? Как решить эту проблему "непонимания"?
Спасибо за внимание.
|
|
GIZMO |
Отправлено: 03.02.2005, 14:59 |
|
Машинист паровоза
Группа: Участник
Сообщений: 174
|
QUOTE (Aptem @ 30/01/2005, 19:34) | я делаю так CODE | IHTMLInputElement *pInput -> put_checked ( 1 ); |
|
А ты точно так делаешь как написал? Ведь это просто указатель на интерфейс, а инициализировать? Приведи весь код.
|
|
Aptem |
Отправлено: 05.02.2005, 09:12 |
|
Мастер участка
Группа: Участник
Сообщений: 349
|
CODE | void __fastcall TForm1::PutDataIntoForm ( WideString UserID, WideString Password, TCppWebBrowser *WebBrowser )
{
IHTMLDocument2 *pHTMLDocument = NULL;
if ( SUCCEEDED ( WebBrowser -> Document -> QueryInterface ( IID_IHTMLDocument2, ( LPVOID* )&pHTMLDocument ) ) )
{
if ( pHTMLDocument != NULL )
{
IHTMLElementCollection *pAll = NULL;
if ( SUCCEEDED ( pHTMLDocument -> get_all ( &pAll ) ) && pAll )
{
TVariant vName1 = "txtLogin", vName2 = "txtPwd", vName3 = "chkSeller", vName4 = "chkBuyer";
TVariant vIndex = 0;
// put into input element <input...
// UserID
IDispatch *pDisp1 = NULL;
if ( SUCCEEDED ( pAll -> item ( vName1, vIndex, &pDisp1 ) ) && pDisp1 )
{
IHTMLInputElement *pInput = NULL;
if ( SUCCEEDED ( pDisp1 -> QueryInterface ( IID_IHTMLInputElement, ( LPVOID* )&pInput ) ) && pInput )
{
pInput -> put_value ( UserID );
pInput -> Release ();
}
pDisp1 -> Release ();
}
// put into input element <input...
// Password
IDispatch *pDisp2 = NULL;
if ( SUCCEEDED ( pAll -> item ( vName2, vIndex, &pDisp2 ) ) && pDisp2 )
{
IHTMLInputElement *pInput = NULL;
if ( SUCCEEDED ( pDisp2 -> QueryInterface ( IID_IHTMLInputElement, ( LPVOID* )&pInput ) ) && pInput )
{
pInput -> put_value ( Password );
pInput -> Release ();
}
pDisp2 -> Release ();
}
//-------------
// put into input element <input...
// Radio
IDispatch *pDisp4 = NULL;
if ( SUCCEEDED ( pAll -> item ( vName4, vIndex, &pDisp4 ) ) && pDisp4 )
{
IHTMLInputElement *pInput = NULL;
if ( SUCCEEDED ( pDisp4 -> QueryInterface ( IID_IHTMLInputElement, ( LPVOID* )&pInput ) ) && pInput )
{
pInput -> put_checked ( 0 );
pInput -> Release ();
}
pDisp4 -> Release ();
}
//-------------
//-------------
// put into input element <input...
// Radio
IDispatch *pDisp3 = NULL;
if ( SUCCEEDED ( pAll -> item ( vName3, vIndex, &pDisp3 ) ) && pDisp3 )
{
IHTMLInputElement *pInput = NULL;
if ( SUCCEEDED ( pDisp3 -> QueryInterface ( IID_IHTMLInputElement, ( LPVOID* )&pInput ) ) && pInput )
{
pInput -> put_checked ( 1 );
pInput -> Release ();
}
pDisp3 -> Release ();
}
//-------------
}
pAll -> Release ();
}
// click SUBMIT Button
IHTMLElementCollection *HTMLForms = NULL;
if ( SUCCEEDED ( pHTMLDocument -> get_forms ( &HTMLForms ) ) && HTMLForms )
{
// slHtmlFormName <form name="SignInForm...>
TVariant vName5 = "frmLogin";
TVariant vIndex5 = 0;
IDispatch *pDisp5 = NULL;
if ( SUCCEEDED ( HTMLForms -> item ( vName5, vIndex5, &pDisp5 ) ) && pDisp5 )
{
IHTMLFormElement *HTMLForm = NULL;
if ( SUCCEEDED ( pDisp5 -> QueryInterface ( IID_IHTMLFormElement, ( LPVOID* )&HTMLForm ) ) && HTMLForm )
{
// HTMLForm -> submit ();
HTMLForm -> Release ();
}
pDisp5 -> Release ();
}
HTMLForms -> Release ();
}
pHTMLDocument -> Release ();
}
} |
|
|
GIZMO |
Отправлено: 07.02.2005, 12:45 |
|
Машинист паровоза
Группа: Участник
Сообщений: 174
|
QUOTE (Aptem @ 05/02/2005, 10:14) | CODE | void __fastcall TForm1::PutDataIntoForm ( WideString UserID, WideString Password, TCppWebBrowser *WebBrowser )
{
...
} |
|
Да вроде правильно все на первый взгляд. Я попробовал у себя на странице справочника персонала вводить имя, указывать зависимость от регистра и нажимать кнопку все пашет, правда там чек-бокс. Найду с радио-баттонами попробую...
|
|
|