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

 Delphi Discussion :

Question de focus


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Par défaut Question de focus
    Bonjour,

    Dans mon appli, une fiche s'ouvre en modale.
    A sa fermeture, la fiche qui est restée visible dessous ne focus sur aucun contrôle.
    Comment pourrais faire que le focus se place sur un Tedit à la fermeture de la fiche modale?

    Le code d'appel de la fiche modale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    frmPlnSelector.ShowModal;
    Code de validation de la fiche modale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    Procedure TfrmPlnSelector.Validate;
    begin
      lblMessage.Caption:= 'Loading route... Please wait...';
      if fmControlPanel.chkRwyAutoSel.Checked then
       lblMessage.Caption:=
       'Loading route... Please wait, runway auto select may take a few more seconds...';
      Application.ProcessMessages;
      btnOK.Enabled:= False;
      if lbxPln.Items[lbxPln.ItemIndex] = 'No *.PLN file found...' then
      begin
        btnOK.Enabled:= False;
        frmTripPlanner.edIcaoCode.Text:= '';
        ResetAirportData;
        Self.ModalResult:= mrOK;
        Exit;
      end;
      GstrFlightPlan:= GstrPlanFolder + '\' + lbxPln.Items[lbxPln.ItemIndex];
      GetFlightPlan;
      if GbooFpFound then
      begin
        btnOK.Enabled:= True;
      end
      else
      begin
        lblMessage.Caption:= 'Departure airport (' + GstrIcaoDep + ') mismatch...';
      end;
    end;
    Si je fais:
    Après l'appel de la fiche modale, il n'y a pas de prise de focus par le contrôle edIcaoCode.

    Le code d'annulation fonctionne parfaitement et le focus va bien au contrôle souhaité.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    procedure TfrmPlnSelector.Cancellation;
    begin
      frmTripPlanner.edIcaoCode.Text:= '';
      ResetAirportData;
      frmTripPlanner.pnlStatusLeft.Color:= clRed;
      frmTripPlanner.pnlStatusLeft.Caption:= 'Waiting';
      frmTripPlanner.pnlStatusRight.Caption:= '   Select departure airport...';
      Self.ModalResult:= mrCancel;
    end;

    Merci de vos conseils

    Cordialement
    Pierre

  2. #2
    Invité
    Invité(e)
    Par défaut
    Tu le fais ou le focus exactement ? Je ne vois pas ou est faites la création et libération de ta fenêtre ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    procedure MainForm..
    begin
      try
        MaForm := TMaForm.Create;
        MaForm.ShowModal;
     
        if MaForm.ModalResult = mrOk then
        // ...
        else
          // ...
     
        edIcaoCode.SetFocus;
      finally
       FreeAndNil(MaForm);
      end;
    end;

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Par défaut
    Merci de cette réponse.

    La fiche modale est créée à au lancement du programme.
    A la fermeture j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    frmPlnSelector.ShowModal;
    edIcaoCode.SetFocus;
    En pas à pas je passe bien par edIcaoCode.SetFocus; mais le focus n'est pas donné au contrôle.

    Une idée?

    Cordialement
    Pierre

  4. #4
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 522
    Par défaut
    Bonjour,

    j'ai fait un test avec D7. Je n'ai pas de problème avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       Form2.ShowModal ;
       Edit2.SetFocus ;
    Le focus va bien sur Edit2, même s'il n'y est pas au départ.

    ça marche en fermant Form2 par Close, self.modalResult := mrOk ou mrCancel

    et avec TabStop de Edit2 à True ou False

    A+
    Charly

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Par défaut
    Bonjour,

    merci de votre aide.

    J'ai trouvé la solution à ce problème:
    Ailleurs dans le code, un form.show empêchait le focus.
    une fois supprimé, tout va bien.

    Tous mes meilleurs vœux pour 2017

    Cordialement
    Pierre

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

Discussions similaires

  1. Question sur focus, enfin je crois
    Par sp2308 dans le forum Débuter
    Réponses: 4
    Dernier message: 10/02/2013, 23h04
  2. Question à propos du focus.
    Par DCCreation dans le forum Windows Presentation Foundation
    Réponses: 9
    Dernier message: 16/03/2010, 21h19
  3. Question Focus & KeyListener
    Par martini37 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 20/03/2007, 14h28
  4. Réponses: 5
    Dernier message: 08/02/2007, 18h05
  5. question de focus?
    Par jadey dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 07/09/2006, 16h09

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