Bonjour à tous,
La modification du texte de tEdit doit mettre à jour d'autres composants de la même fiche.
2 cas se présentent :
A- Le tEdit est placé sur la fiche et l’événement OnChange est complété
B- Le tEdit est créé dynamiquement, un événement OnChange est affecté et complété par le même appel de procédure que le cas A.
A la modification du tEdit de type A, les autres composants sont bien mis à jour et le focus est bien conservé sur le composant (pas besoin de le re-selectionner à chaque frappe).
Dans le cas B, les composants sont bien traités mais le tEdit perd le focus, obligeant à re-cliquer entre chaque lettre !
Mon code pour la création dynamique :
avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 // Champ Value edPlcCdSpyValue[nIdx] := TEdit.Create(gbPlcEquation); with edPlcCdSpyValue[nIdx] do begin Parent := gbPlcEquation; Visible := false; name := cPlcComponent[cPlcEdVal] + intToStr(nIdx); Text := ''; OnChange := tCbChangeObj.ComboBoxHandlerChange; end;
J'ai tenté un SetFocus après le traitement mais le champ complet est alors sélectionné.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 class procedure tCbChangeObj.ComboBoxHandlerChnge(Sender: TObject); var tCbTmp: TComboBox; begin if Sender is TComboBox then begin tCbTmp := Sender as TComboBox; frmMain.ReadEvent; // Traitement end; end;
Merci pour votre aide...
Partager