我试图隐藏从TComboBox派生的第三方组件中的下拉按钮。
我尝试将样式设置为csSimple,但此解决方案对我不起作用...第三方组件中的代码在各个位置检查csSimple。我不想改变这段代码。
从其他帖子中我可以看到,其他人建议使用不同的组件,例如文本框,或覆盖下拉箭头以隐藏它。我也想避免这些解决方案。
还有其他方法吗?我想也许有一种方法可以使用PostMessage / SendMessage来做到这一点,但我不知道要传递什么作为params。
谢谢
答案 0 :(得分:0)
他的解决方案如下:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DBCtrls, sDBLookupComboBox, StdCtrls, sCheckBox, XPMan,
sSkinProvider, sSkinManager;
type
TForm1 = class(TForm)
DBLookupComboBox1: TDBLookupComboBox;
CheckBox1: TCheckBox;
procedure CheckBox1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
StoredWidth: integer;
implementation
{$R *.dfm}
type
TAccessLookUpCombo = class(TDBLookupControl)
public
FDataList: TPopupDataList;
FButtonWidth: Integer;
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Checked then
TAccessLookUpCombo(DBLookupComboBox1).FButtonWidth := StoredWidth
else begin
StoredWidth := TAccessLookUpCombo(DBLookupComboBox1).FButtonWidth;
TAccessLookUpCombo(DBLookupComboBox1).FButtonWidth := 0;
end;
DBLookupComboBox1.Invalidate;
end;
end.
使用TAccessLookUpCombo(DBLookupComboBox1)构造,可以访问父级的TDBLookupControl顶级值。确实非常难看,但它确实有效。