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

Lazarus Pascal Discussion :

Problème de SetFocus sur bouton dans TabSheet inopérant au PageControl.OnChange [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 164
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 164
    Par défaut Problème de SetFocus sur bouton dans TabSheet inopérant au PageControl.OnChange
    Bonsoir,

    tout est dans le titre : un PageControl, 4 TabSheets, sur le troisième un bouton et d'autres trucs, et l'événement OnChange du PageControl comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TMainform.pgChange(Sender: TObject);
    begin
      Application.ProcessMessages; // rajouté mais ne change rien
      case pg.ActivePageIndex of
        0: ;
        1: ;
        2: btnBrowse.SetFocus; // pas de focus... :-(
        3: ;
      end;
      Application.ProcessMessages; // rajouté mais ne change rien
    end;
    Debian 7/32, Laz 1.0.10
    Une idée ?
    Merci,

  2. #2
    Membre expérimenté
    Profil pro
    au repos
    Inscrit en
    Février 2013
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : Saint-Pierre-Et-Miq.

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2013
    Messages : 161
    Par défaut
    bonjour,

    essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TMainform.pgChange(Sender: TObject);
    begin
     case pg.ActivePageIndex of
        0: ;
        1: ;
        2: begin
            pg.ActivePage.SetFocus;     
            btnBrowse.SetFocus; //  focus ou non ? 
            end;
        3: ;
      end;
    end;
    Amicalement, nullosse

  3. #3
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 164
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 164
    Par défaut
    Bonjour nullosse (et les autres),

    bien tenté, mais désolé, pas mieux...
    Perso, j'ai aussi tenté dans le OnShow du TabSheet, sans plus de résultat

    Une autre idée ?
    Bonne journée,

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Que votre TButton appartienne ou pas au TPageControl, je proposerais plutôt une action au niveau de la souris.
    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
    procedure TForm1.pgMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
       case pg.ActivePageIndex of
          0:  ActiveControl:= pg;
          1:  ActiveControl:= pg;
          2:  ActiveControl:= btnBrowse;
          3:  ActiveControl:= pg;
        end;
     end;
     
    procedure TForm1.btnBrowseClick(Sender: TObject);
    begin
      showmessage('');
    end;
    Vous remarquerez que
    • le code initial (dans pgChange) donne bien le focus au TButton (c'est imperceptible)... puis rend le focus au PageControl...
    • votre TButton a bien le focus : Pour s'en convaincre, après avoir cliqué sur le 3ème onglet qui sélectionne le TButton, il suffit d'appuyer sur la touche [Entrée] du clavier pour voir apparaître le ShowMessage de btnBrowseClick()


    Cordialement. Gilles

    Code testé sous Ubuntu 12.04.3-64 bits - Lazarus 1.2RC2 du 10/01/2014 - FPC 2.6.2 Rév SVN 43686
    Dernière modification par Invité ; 20/01/2014 à 12h49.

  5. #5
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 164
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 164
    Par défaut
    Citation Envoyé par selzig Voir le message
    Bonjour,

    Si comme je le suppose, votre TButton n'appartient pas au TPageControl, je proposerais plutôt une action au niveau de la souris. (...)
    Mon TButton appartient à un TPanel posé (en alTop) sur le TTabSheet concerné.

    Et malgré ce code, le focus ne passe toujours pas au bouton

    Citation Envoyé par selzig Voir le message
    (...) Vous remarquerez que le code initial (dans pgChange) donne bien le focus au TButton (c'est imperceptible)... puis rend le focus au PageControl...

    Cordialement. Gilles

    Code testé sous Ubuntu 12.04.3-64 bits - Lazarus 1.2RC2 du 10/01/2014 - FPC 2.6.2 Rév SVN 43686
    Je ne vois rien, ou alors faut le voir en pas-à-pas ? Mais ça ne changera pas mon problème, qui doit être puis rend le focus au PageControl...
    Truc de ouf'

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    On le voit mieux (mais c'est toujours presque imperceptible) s'il est placé en dehors du PageControl.

    Le TPanel n'a pas d'influence. Je n'ai pas de Debian ici pour tester, et définitivement pas de 32 . Je place le projet sur mon serveur ftp pour test. Mais ici, cela fonctionne -> La sélection du troisième onglet (le 2), donne bien le focus au TButton.

    C'est très curieux votre histoire. Il n'y a pas d'autre code qui puisse modifier le comportement du PageControl ou de la Form ?

    Je viens de vérifier sous Gnome Shell (le projet était sous Unity) : le comportement est identique. RAS.

    Cordialement. Gilles
    Dernière modification par Invité ; 20/01/2014 à 13h20.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 13/11/2012, 09h17
  2. Réponses: 15
    Dernier message: 13/03/2007, 18h25
  3. [VBA-E] SetFocus sur TextBox dans UserForm_Initialize ne fonctionne pas ?
    Par Jipété dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 27/11/2006, 12h39
  4. [FLASH 8 Pro] OnRelease sur bouton dans un SWF chargé!!
    Par Julien.alkaza dans le forum Flash
    Réponses: 14
    Dernier message: 13/04/2006, 08h55
  5. [CSS]problème centrage texte de bouton dans une boîte
    Par Aurelius dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 06/09/2005, 17h01

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