C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Интерфейс HTML доки и компанента Формы, Это ответ а не вопрос
EXIS
  Отправлено: 06.12.2005, 18:29


Не зарегистрирован







Имеем html док

Test Script <script language=JavaScript> function ASTSend(data){ASTInterface.value=data;window.status="Send";window.status="";}

function startcode()
{
scroll();
}

var i = 0;
function scroll()
{
ASTSend(i);
i++;
setTimeout("scroll()", 10);
}




Кидаем док в папку с программой

кидаем на форму
TCppWebBrowser (Browser1)
Label1
Label2 (ASTStatus)
OnASTGetData = OnChangePropertys(Browser1)
ЧекБокс (RB1)
и две кнопки Button1 и Button2

// Автор Павлюшин Е.
#include

void GetFromAST()
{
WideString UserID="portal";
IHTMLDocument2 *pHTMLDocument = NULL;

if ( SUCCEEDED ( Form1->Browser1 -> Document -> QueryInterface ( IID_IHTMLDocument2, ( LPVOID* )&pHTMLDocument ) ) )
{
if ( pHTMLDocument != NULL )
{
IHTMLElementCollection *pAll = NULL;

if ( SUCCEEDED ( pHTMLDocument -> get_all ( &pAll ) ) && pAll )
{
TVariant vName1 = "ASTInterface";
TVariant vIndex = 0;

// put into input element // UserID
IDispatch *pDisp1 = NULL;
//Text1
if ( SUCCEEDED ( pAll -> item ( vName1, vIndex, &pDisp1 ) ) && pDisp1 )
{
IHTMLInputElement *pInput = NULL;

if ( SUCCEEDED ( pDisp1 -> QueryInterface ( IID_IHTMLInputElement, ( LPVOID* )&pInput ) ) && pInput )
{
WideString tt;
pInput->get_value(&tt);
Form1->Label1->Caption=tt;
//pInput->put_value(WideString("asdasas"));

pInput -> Release ();
}

pDisp1 -> Release ();
}


}

}
pHTMLDocument -> Release ();
}
}

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
// Пускаем код с самого начала!
TVariant path=GetCurrentDir()+"//1.htm"; //Переменная строки броузера
Browser1->Navigate2(path,0,0,0,0);//Пускаем броузер

}
//---------------------------------------------------------------------------


void __fastcall TForm1::OnASTGetData(TObject *Sender, BSTR URL)
{
if (URL[0]=='S' && URL[1]=='e' && URL[2]=='n' && URL[3]=='d')
{
GetFromAST();
RB1->Left=StrToInt(Label1->Caption);
}
ASTStatus->Caption=URL;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
GetFromAST();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (Browser1->Width==0)
{
Browser1->Width=600;
Browser1->Height=300;
}
else
{
Browser1->Width=0;
Browser1->Height=0;
}
}
//---------------------------------------------------------------------------

Может кого заинтерисует во время работы HTML Javascript управляет позицией чекбокса... чекбокс двигается в лево...
Если код не работает спрашивайте пока я сдесь....
EXIS
  Отправлено: 07.12.2005, 21:09


Не зарегистрирован







Вот полный код проги
два Labela
один CheckBox
Две Button
один TCppWebBrowser (Browser1)

CODE

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include <mshtml.h>

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "SHDocVw_OCX"
#pragma resource "*.dfm"
TForm1 *Form1;

void GetFromAST()
{
WideString UserID="portal";
IHTMLDocument2 *pHTMLDocument = NULL;

if ( SUCCEEDED ( Form1->Browser1 -> Document -> QueryInterface ( IID_IHTMLDocument2, ( LPVOID* )&pHTMLDocument ) ) )
{
if ( pHTMLDocument != NULL )
{
IHTMLElementCollection *pAll = NULL;

if ( SUCCEEDED ( pHTMLDocument -> get_all ( &pAll ) ) && pAll )
{
TVariant vName1 = "ASTInterface";
TVariant vIndex = 0;

// put into input element <input...
// UserID
IDispatch *pDisp1 = NULL;
//Text1
if ( SUCCEEDED ( pAll -> item ( vName1, vIndex, &pDisp1 ) ) && pDisp1 )
{
IHTMLInputElement *pInput = NULL;

 if ( SUCCEEDED ( pDisp1 -> QueryInterface ( IID_IHTMLInputElement, ( LPVOID* )&pInput ) ) && pInput )
 {
 WideString tt;
 pInput->get_value(&tt);
 Form1->Label1->Caption=tt;
 //pInput->put_value(WideString("asdasas"));

 pInput -> Release ();
 }

pDisp1 -> Release ();
}


}

}
pHTMLDocument -> Release ();
}
}

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
       : TForm(Owner)
{
// Ïóñêàåì êîä ñ ñàìîãî íà÷àëà!
TVariant path=GetCurrentDir()+"//1.htm"; //Ïåðåìåííàÿ ñòðîêè áðîóçåðà
Browser1->Navigate2(path,0,0,0,0);//Ïóñêàåì áðîóçåð

}
//---------------------------------------------------------------------------


void __fastcall TForm1::OnStatusTextChangeBrowser1(TObject *Sender, BSTR URL)
{
if (URL[0]=='S' && URL[1]=='e' && URL[2]=='n' && URL[3]=='d')
{
GetFromAST();
RB1->Left=StrToInt(Label1->Caption);
}
ASTStatus->Caption=URL;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
GetFromAST();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (Browser1->Width==0)
{
Browser1->Width=600;
Browser1->Height=300;
}
else
{
Browser1->Width=0;
Browser1->Height=0;
}
}
//---------------------------------------------------------------------------



А вот праильный код javascript клиента
CODE

<html><head><title>Test Script</title></head> <script language=JavaScript>    function ASTSend(data){ASTInterface.value=data;window.status="Send";window.status="";}

function startcode()
{
scroll();
}

var i = 0;
function scroll()
{
ASTSend(i);
i++;
setTimeout("scroll()", 10);
}

</SCRIPT><body onload=startcode()><p><input type="text" name="ASTInterface"></p></body></html>



Скролл двигается вправо надеюсь терь все правильно отобразится на форуме...

Вернуться в Вопросы программирования в C++Builder