Je n'ai pas testé, mais je suppose que vous devez utiliser SetFocus dans l'événement OnShow du formulaire pour activer le contrôle.
procedure TForm2.FormShow(Sender: TObject);
begin
DBLookupListBox1.SetFocus;
end;
Définition d'une valeur par défaut est un peu plus compliqué parce que le DBLookupListBox est DB-aware. Une approche consiste à définir les valeurs par défaut dans les jeux de données OnNewRecord événement ou AfterInsert événement:
procedure TMyDataModule.cdsMyClientDataSetNewRecord(DataSet: TDataSet);
begin
cdsMyClientDataSetMYPERSISTENTFIELDNAME.Value := 0;
end;
Si vous souhaitez tout de même faire du formulaire:
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;
à mon humble avis:
La définition de valeurs par défaut doit être considérée comme une logique métier et appartient donc au DataModule.
Le réglage du focus approprié est GUI-logic et doit être fait dans le formulaire.
Avez-vous essayé SetFocus dans l'événement OnActivate? – Wodzu
Que voulez-vous dire par "higlight"? Voulez-vous dire la mise au point? Ou voulez-vous dire sélectionner la première entrée dans la boîte de recherche? –
J'ai essayé DBLookupListBox1.SetFocus; onActive, il montre la "boîte" autour du 1er élément, mais elle n'est pas mise en surbrillance. – Brad