IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

VCL / tEdit / Focus


Sujet :

Composants VCL Delphi

  1. #1
    Membre confirmé Avatar de Galet
    Homme Profil pro
    Consultant/Programmeur Robotique industrielle
    Inscrit en
    Mars 2010
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant/Programmeur Robotique industrielle

    Informations forums :
    Inscription : Mars 2010
    Messages : 323
    Points : 484
    Points
    484
    Par défaut VCL / tEdit / Focus
    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 :
    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;
    avec :
    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;
    J'ai tenté un SetFocus après le traitement mais le champ complet est alors sélectionné.

    Merci pour votre aide...
    Windows 10 / Delphi Tokyo
    "Les choses ne changent pas. Change ta façon de les voir, cela suffit" Lao Tseu

  2. #2
    Membre confirmé Avatar de Galet
    Homme Profil pro
    Consultant/Programmeur Robotique industrielle
    Inscrit en
    Mars 2010
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant/Programmeur Robotique industrielle

    Informations forums :
    Inscription : Mars 2010
    Messages : 323
    Points : 484
    Points
    484
    Par défaut
    Bon finalement, j'ai trouvé une solution...juste après avoir appelé à l'aide :

    Mettre, après l'appel de la procédure de traitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        tEdTmp.SetFocus; // Redonne le focus
        tEdTmp.SelStart := length(tEdTmp.Text); // replace le curseur
    C'était devant moi...
    J'attend un peu avant de mettre le status Resolu ... au cas où une meilleure solution serait proposée !

    Belle journée à tous,
    Windows 10 / Delphi Tokyo
    "Les choses ne changent pas. Change ta façon de les voir, cela suffit" Lao Tseu

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 452
    Points : 24 863
    Points
    24 863
    Par défaut
    Cela me fait penser à AutoSelect qui reprend tout le text de l'edit comme selectionné à chaque entrée-sortie du controle
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Membre confirmé Avatar de Galet
    Homme Profil pro
    Consultant/Programmeur Robotique industrielle
    Inscrit en
    Mars 2010
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant/Programmeur Robotique industrielle

    Informations forums :
    Inscription : Mars 2010
    Messages : 323
    Points : 484
    Points
    484
    Par défaut
    Merci ShaiLeTroll de t'être penché sur le sujet.
    Comme pas d'autres suggestions, je clos...
    Belle soirée,
    Windows 10 / Delphi Tokyo
    "Les choses ne changent pas. Change ta façon de les voir, cela suffit" Lao Tseu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Composants VCL (Tedit)
    Par fz.saida dans le forum Débuter
    Réponses: 6
    Dernier message: 10/06/2013, 09h47
  2. Focus sur un TEdit
    Par looping dans le forum Langage
    Réponses: 1
    Dernier message: 24/04/2008, 20h44
  3. gestion de la perte de focus dans un TEdit
    Par PtiteDéveloppeuse dans le forum Composants VCL
    Réponses: 19
    Dernier message: 07/04/2008, 14h41
  4. Comment savoir si le TEdit a le focus ?
    Par SOPSOU dans le forum Langage
    Réponses: 3
    Dernier message: 10/09/2007, 20h57
  5. Comment mettre le focus sur un TEdit
    Par El-Diablo- dans le forum C++Builder
    Réponses: 4
    Dernier message: 26/04/2007, 16h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo