想法是:在许多相同的DBcbx_sex控件(dbcombobox)中,如果按下了回车键,
就把数据库中找到的内容赋值到这个控件的text属性。
难点:很多控件都要实现这种功能,但是不想用复制代码的方式,(太多了)
谢谢,
procedure TfrmBasic.DBcbx_sexKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key = integer(#13) then
  begin
    DBcbx_sex.Text := DM.ADODataSet_Help.FieldValues['tiaomu'];
    SelectNext(ActiveControl, True, True); 
  end;
end;

解决方案 »

  1.   

    扩展TDBComboBox:
    unit DBComboBoxEx;interfaceuses
      SysUtils, Classes, Controls, StdCtrls, DBCtrls, Forms;type
      TDBComboBoxEx = class(TDBComboBox)
      private
        { Private declarations }
      protected
        { Protected declarations }
      public
        { Public declarations }
        procedure KeyUp(var Key: Word; Shift: TShiftState); override;
      published
        { Published declarations }
      end;procedure Register;implementationprocedure Register;
    begin
      RegisterComponents('Samples', [TDBComboBoxEx]);
    end;{ TDBComboBoxEx }procedure TDBComboBoxEx.KeyUp(var Key: Word; Shift: TShiftState);
    begin
      inherited;
      if key = integer(#13) then
      begin
        Application.MessageBox('', '');
        // 如何传数据你要考虑一个
      end;
    end;end.
      

  2.   

    就是传数据的问题比较麻烦~~也就是赋值给指定的控件比较麻烦。
    要求是DBComboBoxEx1按下的时候赋值给DBComboBoxEx1
    要求是DBComboBoxEx2按下的时候赋值给DBComboBoxEx2,
      

  3.   

    把这个控件放到frame控件上 然后通过form使用就行了
      

  4.   

    另一种方法:
    多个DBComboBox控件共用一个处理方法,把Sender对象转换成相应的控件。dTDBComboBox(Sender).Text := DM.ADODataSet_Help.FieldValues[dTDBComboBox(Sender).DataField];
      

  5.   

    定义一个keyup方法
    procedure TfrmBasic.OnComboboxKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if key = integer(#13) then
      begin
        TDBComboBox(Sender).Text := DM.ADODataSet_Help.FieldValues[dTDBComboBox(Sender).DataField];
        SelectNext(ActiveControl, True, True); 
      end;
    end;再FormCreate中循环把TDBComboBox的OnKeyUp事件都赋成OnComboboxKeyUp就可以了
    AdbCombobox.OnkeyUp=OnComboboxKeyUp
      

  6.   

    把控件写好代码,选中-component菜单-create component...
    以后用的时候代码会自动生成