Delphi信息系统开发中下拉弹出窗体,或者按钮弹出窗体的开发思路
本文是Delphi盒子的一些文章集锦,仅供参考
DBGridEh如何自动弹出DropDownForm下拉列表,或按条件弹出?
如图,怎么在单元格里输入的时候,如何自动显示DropDownForm呢,
我在DBGridEh的事件里中可判断是否是‘商品名称’列,
如果是的话,怎么弹出DropDownForm呢?就行点击了下拉箭头一样。
或者是在一定条件下(如输入错误时)弹出DropDownForm?
TCombobox的下拉效果是否可以取消
想点击 下拉箭头时,自己放一个 TListBox到下面。
所以,想把 TCombobox本身的下拉效果取消。
目前设置 DropDownCount = 0,但还是有个 下拉的效果。
原先TCombobox里有数据,想点击下拉时,TListBox显示扩展的内容
刚才自己想到,索性TCombobox里不加载数据了,另外用个TStringList 。
因为我看 TCombobox里没有数据时,不会有下拉效果。呵呵
如果能用第三方解决,可以使用dev的 cxPopupEdit,自己搞,有很多消息要处理
是要类似ide编辑器的自动完成功能?
可以去看看IAutoComplete接口,是ie浏览器提供的自动完成组件,大概应用如下:
IUnknown *pUnk = NULL; HRESULT hResult = CoCreateInstance(CLSID_AutoComplete, NULL, CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER, IID_IUnknown, (void**)&pUnk); if (SUCCEEDED(hResult)) { IAutoComplete *pObj = NULL; IAutoComplete2 *pObjEx = NULL; if (S_OK == pUnk->QueryInterface(IID_IAutoComplete, (void**)&pObj)) { if (S_OK == pUnk->QueryInterface(IID_IAutoComplete2, (void**)&pObjEx)) { pObjEx->SetOptions(ACO_AUTOSUGGEST | ACO_FILTERPREFIXES | ACO_UPDOWNKEYDROPSLIST); pObjEx->Release(); } CArray<CString, CString &> *pList = new CArray<CString, CString &>(); pList->Add(CString(_T("adsf"))); pList->Add(CString(_T("ccasadf"))); pList->Add(CString(_T("caserwer"))); pList->Add(CString(_T("dfasdf"))); pList->Add(CString(_T("dde34"))); pList->Add(CString(_T("cvre43"))); pList->Add(CString(_T("sdfsfc"))); pList->Add(CString(_T("23423dsdfsfs"))); IEnumString *pEnumString = new CEnumString(pList); pObj->Init(m_edt1.GetSafeHwnd(), pEnumString, NULL, NULL); pEnumString->Release(); pList->RemoveAll(); delete pList; pObj->Release(); } else MessageBox(_T("不支持的对象类型")); pUnk->Release(); } else MessageBox(_T("com组件创建失败"));
当然还有扩展接口IAutoComplete2。
具体看msdn
combobox可以通过style来控制类型,有一个类型就是一个edit加一个listbox的模式,但是不能随时隐藏显示。
你实在不行就自己去用控件堆一个复合控件出来就是了。本身combobox就是复合控件。
说抓消息就甭想了,combobox内部的edit消息你抓不到的。除非你去hook
哪个控件有下拉多选框(TCheckComboBox)
哪个控件有类似cxGrid的下拉多选框(TCheckComboBox)?(如图)
Raize中好像没有。
下拉多选框中能支持多列显示更好(图中只有一列)。
记得DevExpress中有个TcxCheckComboBox,但它依赖DevExpress(用它得安装DevExpress,太大),有没有单独的控件,不依赖各控件包相关控件的?
TcxCheckComboBox以及tms有、jvcl也有的.. 才几mb.
Delphi 按钮单击下拉显示窗体
实现单击按钮下拉窗体,并计算显示窗体的位置和方向。
含源码下载:
按钮单击下拉显示窗体.rar (访问密码: 310772)
展示效果图:
编译不通过,提示
[dcc32 Fatal Error] SelFaceFrm.pas(7): F2613 Unit ‘Global’ not found.
删除Global该单元引用就可以了
就是因为mlskin的代码不给,所以自己写啊。 比mlskin使用简单多了
mlskin问题多多,窗体太多了地址报错的东西找不到原因。
如何实现类是combox下拉的操作但是下拉的列表是个GRID和button的组合
我做了一个,但在combox的change事件中执行打开dropdown,应为dropdown后其实是显示一个新窗体,可是这时combox的焦点也失去了 ,不能连续的输入筛选 ,简单的说就是点击一个combox后再起下方弹出个窗体 ,但combox不要失去焦点,该怎么写 我是delphi新手 麻烦 各位写的详细一点 急用 谢了
这个要控制 combox弹出框的焦点,具体看下combobox的源码,我很久以前折腾过
我用的是TEdit+TPanel,然后用edit的onchange+onexit搞的,TPanel可以放好多东西
用cxgrid只设一列伪装。
RzDBComboBox不知道能满足要求不?
这种下拉如何实现
输入前面的编号能自动定位到记录,输入后面的汉字也能自动定位到记录,请高手帮忙。
LoockUP
如何在按下回车时combobox就会显示出下拉列表
TComboBox->OnKeyPress
事件加入
if key=#13 then postMessage(Combobox1.handle,CB_SHOWDROPDOWN,1,0);
procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char); begin if Sender is TComboBox then with Sender as TComboBox do begin if (Key = #13) and not DroppedDown then begin Key:= #0; DroppedDown:= True; end; end; end;