Я не проверял это, но я предполагаю, что вы должны использовать SetFocus в событии OnShow формы, чтобы активировать элемент управления.
procedure TForm2.FormShow(Sender: TObject);
begin
DBLookupListBox1.SetFocus;
end;
Установка значения по умолчанию немного сложнее, потому что DBLookupListBox поддерживает DB.
Один из подходов заключается в установке значений по умолчанию в событии DataSets 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;
ИМХО:
Установка значений по умолчанию должна рассматриваться как бизнес-логика и, следовательно, относится к модулю данных.
Установка подходящего фокуса является GUI-логикой и должна быть выполнена в виде.