Серж Гончаров из AlphaControls предложил очень мрачное (но оперативное) решение этой проблемы. Он включает в себя доступ к двум верхним частным переменным TDBLookupControl, FDataList и FButtonWidth.
Его решение работает следующим образом:
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. Очень некрасиво, но это сработало.