问========================================
张老师,您好! 看了您的老文章??TWebBrowser编程简述,觉得非常有帮助。 我现在碰到了一个难题, 请问怎么样编程控制一个联动的下拉列表呢?例如省、县联动的select,从外边用程序控制自动输入某些值, 期待您的帮助,
2004-10-14
答========================================
1、设置IHTMLSelectElement接口的selectedIndex属性可以改变选中的列表项。 2、动态添加列表项。 先调用IHTMLDocument2::createElement创建一个option对象, HRESULT createElement( BSTR eTag, //标签名,可以是img, area, option(ie4), frame, iframe(ie5) IHTMLElement **newElem //返回对象指针 );
再调用IHTMLSelectElement::add将创建的option对象添加到列表中 HRESULT add( IHTMLElement *element, VARIANT before //添加到哪个位置,VT_I4类型的VARIANT );
更详细的内容参阅MSDN。
3、要操纵列表中每个项,先从IHTMLSelectElement的item属性得到列表项的集合,再通过IHTMLOptionElement接口来操纵。下面的例子演示了如何将下拉列表每一项的文字添加到一个BSTR数组pszOptText中。
HRESULT GetOptions(IHTMLSelectElement *ppvSelect, BSTR *pszOptText, long *plItems) { IDispatch *ppvdispOption; IHTMLOptionElement *ppvOption; HRESULT hResult;
// 取得select对象中optoin对象的数目 ppvSelect->get_length(plItems); for (long i=0;i<*plItems;i++){
// 获取IDispatch指针 _variant_t index = i; hResult = ppvSelect->item( index, index, &ppvdispOption ); if FAILED(hResult) return(hResult);
// 得到IHTMLOptionElement接口. hResult = ppvdispOption->QueryInterface( IID_IHTMLOptionElement, (void **) &ppvOption); ppvdispOption->Release(); if FAILED(hResult) return(hResult);
// 把文字添加到BSTR数组. hResult = ppvOption->get_text(&(pszOptText[i])); ppvOption->Release(); if FAILED(hResult) return(hResult); } return S_OK; }
引用地址:FAQ:操纵下拉列表

|