如何在没有最终用户突出显示DBLookupListBox的情况下自动突出显示第一个条目。
procedure TForm2.FormCreate(Sender: TObject);
begin
Form2.ActiveControl := DBLookupListBox1;
end;
但这不起作用,我也尝试在表单create上创建DBLookupListBox1.setfocus,但这会产生错误,因为还没有创建DBLookupListBox。
由于
-Brad
答案 0 :(得分:1)
我没有对此进行测试,但我认为您应该在表单的OnShow事件中使用SetFocus来激活控件。
procedure TForm2.FormShow(Sender: TObject);
begin
DBLookupListBox1.SetFocus;
end;
设置默认值有点复杂,因为DBLookupListBox可识别数据库。
一种方法是在DataSet的OnNewRecord事件或AfterInsert事件中设置默认值:
procedure TMyDataModule.cdsMyClientDataSetNewRecord(DataSet: TDataSet);
begin
cdsMyClientDataSetMYPERSISTENTFIELDNAME.Value := 0;
end;
如果您仍希望从表单中执行此操作:
procedure TForm2.FormShow(Sender: TObject);
const
DEFAULT = 0;
var
S: String;
begin
S := DBLookupListBox1.DataField;
if DBLookupListBox1.DataSource.DataSet.FieldByName(S).IsNull then
begin
DBLookupListBox1.DataSource.DataSet.Edit;
DBLookupListBox1.DataSource.DataSet.FieldByName(S).Value := DEFAULT;
DBLookupListBox1.DataSource.DataSet.Post;
end;
end;
恕我直言:
设置默认值应视为业务逻辑,因此属于DataModule。
设置适当的焦点是GUI逻辑,应该在表单中完成。