本人初学 delphi, 我发现 TDBLookupComboBox 不能支持鼠标滚轮。所以就搜索了一下这里, 发现一个方法可以继承 TDBLookupComboBox , 重写他的 DoMouseWheel 事件。 但是我在实现滚动的函数里不知道那个属性是控制 TDBLookupComboBox 上下滚动的。没有 ItemIndex 属性可以用。以下是我的程序, 没有报错, 但是也没有预想的效果:unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DBCtrls, DB, DBTables, Grids, DBGrids, StdCtrls;// 继承 TDBLookupComboBox ,失败。 为什么不能支持 MouseWheel ??
type
  TDBLookupComboBox = class(DBCtrls.TDBLookupComboBox)
  public
    function DoMouseWheel(Shift: TShiftState; WheelData: integer; MousePos: TPoint): boolean; override;
  end;type
  TForm1 = class(TForm)
    Table1: TTable;
    DataSource1: TDataSource;
    DBLookupComboBox1: TDBLookupComboBox;
    Table1CustNo: TFloatField;
    Table1Company: TStringField;
    Table1Addr1: TStringField;
    Table1Addr2: TStringField;
    Table1City: TStringField;
    Table1State: TStringField;
    Table1Zip: TStringField;
    Table1Country: TStringField;
    Table1Phone: TStringField;
    Table1FAX: TStringField;
    Table1TaxRate: TFloatField;
    Table1Contact: TStringField;
    Table1LastInvoiceDate: TDateTimeField;
    Label1: TLabel;
    Query1: TQuery;
    DBGrid1: TDBGrid;
    DataSource2: TDataSource;
    procedure DBLookupComboBox1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.DBLookupComboBox1Click(Sender: TObject);
begin
  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add('select * from orders');
  Query1.SQL.Add(' where custno=:custno');
  Query1.ParamByName('CustNo').AsInteger := Table1CustNo.AsInteger;
  if Query1.Prepared = false then Query1.Prepare;
  Query1.Open;
end;{ TDBLookupComboBox }function TDBLookupComboBox.DoMouseWheel(Shift: TShiftState;
  WheelData: integer; MousePos: TPoint): boolean;
begin
  if WheelData < 0 then
    ListFieldIndex := ListFieldIndex - 1  // 这里不知道该用哪个属性??
  else
    ListFieldIndex := ListFieldIndex + 1; // 这里也是的
end;end.
请高手指点,不胜感激!

解决方案 »

  1.   

    不要睡觉!!喂!~~
    1,你没仔细研究阿信的代码,他用xmlhttp组件去读xml文件,是变相访问数据库的行为,你说“阿信的树一次生成就可以直接包含进来使用,完全是静态的东西。”是错误的。数据库无论是在服务器还是在本机下载过的xml中,都要尽量避免访问。2,你没仔细研究我的代码,你说“你的树每次都要写代码访问数据库”,是错误的,我的是一次全载,靠隐藏和显示来解决的。3,“没觉得你的树好在哪里”这种话是我不喜欢听,所以我直接骂了你,向你表示郑重道歉。我这种数据库设计方法可以避免开发大量脚本,如果你没觉得好在哪里,是你没细考虑,你都一个红星的人了,应该知道良好的数据库设计避免千行代码的优势吧?
      

  2.   

    你 睡觉了,所以我搜索你的帖子,没想到在delphi论坛上找到你了,这里我比你多一个绿三角哈!~~~~~