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 FMX Delphi Discussion :

mettre le focus sur un TEdit dans un TabControl


Sujet :

Composants FMX Delphi

  1. #1
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 934
    Points
    40 934
    Billets dans le blog
    62
    Par défaut mettre le focus sur un TEdit dans un TabControl
    Bonjour,

    c'est plus une question langage qu'autre chose mais comme il y a FMX en jeu, et que le comportement du changement d'onglet semble différent de VCL, je préfère poser dans ce forum.

    Comment, lors d'un changement d'onglet (tab) puis-je mettre le focus sur un élément particulier de la page ?
    par exemple : j'ai une forme avec un tabcontrol contenant 1 à n pages, pages contenant toutes un à n TEdit. Je veux que au changement d'onglet le premier TEdit ait le focus.
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  2. #2
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 339
    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 339
    Points : 3 107
    Points
    3 107
    Par défaut
    Bonjour,
    je n'y connais rien en FMX, mais est ce que tu ne peux pas utiliser la propriété Tag du premier TEdit de chaque onglet (en les mettant de 0 à 9 et en cherchant le TEdit qui a le même numéro de Tag que celui de l'onglet, puis setFocus ...)

    A+
    Charly

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 934
    Points
    40 934
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    Merci de t'y pencher mais ...
    Avant de poster j'ai bien sûr essayer ce genre de chose tag= ou même tagstring='mettrefocus' , je pensais ainsi pouvoir faire une recherche dans les enfants de la page

    ou aussi des choses comme TEdit(Bureau.ActivePage.Container.Children[0].Children[0]).SetFocus qui fonctionne parfaitement si je met ce code dans un bouton hors tabControl (le TEdit étant contenu dans un TLayout c'est pour cela qu'il y a 2 Children[])
    Nota : Bureau est un TMSFMXPageControl, je n'ai pas réussi à utiliser la même syntaxe avec un TTabControl (pas de container) mais je désespère pas ...

    Comme j'ai mis ce bouton, j'ai même tenté de coder le OnChangepage du pagecontrol avec un appel à ce code , rien ne se passe comme si la page n'était pas encore active au moment du onChange << c'est là le nœud du problème et comme il n'y a pas de AfterChange
    A noter, que même en VCL, mes tentatives ont été infructueuses

    J'ai même fait des tentatives avec des FindComponent mais alors là c'est pire ! j'ai du mal avec cette fonction entre TFMXObject et TComponent je m'y perd
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 658
    Points : 3 599
    Points
    3 599
    Billets dans le blog
    2
    Par défaut
    Bonjour Sergio,

    J'ai fait un petit essai avec un TabControl ayant 3 TabItem et chaque onglet contient 2 TEdit.

    J'ai implémenté le code suivant dans l'événement OnChange du TabControl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TForm1.TabControl1Change(Sender: TObject);
    begin
      if TabControl1.TabIndex <> -1 then
      begin
        case TabControl1.ActiveTab.Index of
          0: edit1.SetFocus;
          1: edit3.SetFocus;
          2: edit5.SetFocus;
        end;
      end;
    end;
    En changeant d'onglet, le premier TEdit de l'onglet ne prend pas le focus. En revanche, en modifiant à false la propriété CanFocus de chaque TabItem ça fonctionne.
    Mon site - Mes tutoriels - GitHub - N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  5. #5
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 410
    Points : 5 801
    Points
    5 801
    Par défaut
    salut

    le mieux serais peut etre de déplacer ton code dans le tabsheet et pas dans le TabControl
    allez soyons fou, peut être même dans le onshow du tabsheet
    ensuite dans ton layout met la propriété TabOrder à 0 sur l'objet que tu veut activer en premier
    de cette manière ce seras le premier composant avec le focus
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 934
    Points
    40 934
    Billets dans le blog
    62
    Par défaut
    @gbegreg
    Merci Gregory, intéressant ce CanFocus du tabset, j'ai testé mais ... plouf (du moins avec TMSFMXPageControl)
    Pour ce qui est de la partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      if TabControl1.TabIndex <> -1 then
      begin
        case TabControl1.ActiveTab.Index of
          0: edit1.SetFocus;
          1: edit3.SetFocus;
          2: edit5.SetFocus;
        end;
    Oui mais ... en fait, cela fait suite à mes posts sur le "docking de formes", mes pages sont crées "dynamiquement" ce qui fait que ma forme principale ne connait pas "Edit1, Edit3, Edit5" d'où mon utilisation des Children(s)

    A vous deux, j'ai bien sûr vérifié les ordres de tabulation

    @Anapurna (grande montagne), je n'ai pas tout compris de ton raisonnement mais je vais être fou, comme d'habitude lorsque je bute sur un problème, je fais une petite application à côté avec juste les points qui bloquent au prochain post je joindrai le zip, et encore plus fou je vais le faire avec un TTabcontrol pour qu'il n'y ait pas de soucis côté testeurs (s'il y en a)

    En attendant, pour vous donner une image plus "parlante" , l'objectif est de créer un programme pour le futur magasin d'usine (j'ai quand même caché son cartouche , le prix "farfelu" )
    la saisie se faisant en priorité au lecteur codes barres vous comprendrez pourquoi je veux mettre le focus sur la zone "article"
    Nom : Capture.PNG
Affichages : 758
Taille : 14,5 Ko
    Bien sûr je me casse peut être la tête pour rien, le plus souvent il n'y aura certainement qu'un seul onglet Vente mais maintenant que je suis engagé dans cette voie ...
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 429
    Points : 24 794
    Points
    24 794
    Par défaut
    Le TabOrder aurait comme pour Anapurna ma préférence

    Si tu veux le traiter de façon très objet, pourquoi ne pas faire une Interface ISMDockingForm
    Tes formes créés dynamiquement implémente cette interface (ou pas, utilise Supports)
    ISMDockingForm contient une méthode StartFocus() pour retomber dans le code de gbegreg

    Si tes fenêtres ont déjà une classe ancêtre non TForm, cela s'ajoute aussi


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm1.TabControl1Change(Sender: TObject);
    var
      Intf: ISMDockingForm;
    begin
      if TabControl1.TabIndex <> -1 then
        if Supports(FDockedForms[TabControl1.ActiveTab], Intf,  ISMDockingForm) then   
          Intf.StartFocus();
    end;
    FDockedForms est une TObjectList<TTabSheet, TForm> gérant la liste des fenêtres instanciées.
    Lorsque tu fais NewForm.Parent := TS1; tu ajoutes DockedForms.Add(TS1, NewForm);, mais peut-être que ActivePage.Container suffit, je ne connais pas assez FMX

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm1.TabControl1Change(Sender: TObject);
    var
      Intf: ISMDockingForm;
    begin
      if TabControl1.TabIndex <> -1 then
        if Supports(TabControl1.ActiveTab.Container, Intf,  ISMDockingForm) then   
          Intf.StartFocus();
    end;
    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

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 934
    Points
    40 934
    Billets dans le blog
    62
    Par défaut
    Re,

    @ShaiLeTroll la liste d'objet c'est un peu mon principe, j'ai utilisé un simple TDictionnary<String,TForm> moins sophistiquée que ta proposition de TObjectList<TTabSheet,TForm> et pas pensé au if Supports(....) parce que, pour l'instant un seul type de TForm est permis

    je n'avais pas pensé par contre à mettre une procédure StartFocus, beaucoup plus simple que mes Chidren[0].Children[1] que je n'aimais pas.

    Par contre, est-ce du à FMX ? c'est au niveau du onChange que ça coince , ce qui est incroyable c'est que si je clique sur le bouton [Button1] le focus se fait correctement
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 934
    Points
    40 934
    Billets dans le blog
    62
    Par défaut Un mieux
    Bon, j'avance pour ceux qui ne veulent pas ouvrir le zip

    en voici une réduction du code "principal"

    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
    29
    30
     
    procedure TMain.BureauChange(Sender: TObject);
    var Acomponent : TComponent;
        i : Integer;
    begin
    memo1.Lines.Add('Page '+Bureau.TabIndex.ToString);
    case Bureau.TabIndex of
     0 : Edit1.SetFocus;
     1 : Edit2.SetFocus;
     2 : Edit3.SetFocus;
     else begin
          // simplissime  
           TChild(Ft).StartFocus;
          // Sinon 
          // la partie "bourrin"
          // Bureau.ActiveTab.Controls[1] contenu de la page (le container de TTMSFMXPageControl ?)
          // Bureau.ActiveTab.Controls[1].Controls[0] le TRectangle qui contient les divers composants (dans ma question de départ c'est un TLayout mais je me suis
         //  amusé à changer la couleur pendant mes tests   
         {   for I := 0 to Bureau.ActiveTab.Controls[1].Controls[0].ControlsCount-1 do
              begin
               if (Bureau.ActiveTab.Controls[1].Controls[0].Controls[i].ClassName='Edit1') then // bien sur d'autre tests sont possibles
                begin
                  TEdit(Bureau.ActiveTab.Controls[1].Controls[0].Controls[i]).SetFocus;
                  Break;
                end;
              end;
          end;}
     end;
    end;
    end;
    Donc, ça ça fonctionne pour TTabcontrol (en faisant très attention aux CanFocus des onglets)
    Plus simple, la suggestion de ShaiLeTroll avec la procedure StartFocus

    Reste à tester la même chose avec TTMSFMXPageControl
    Fichiers attachés Fichiers attachés
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  10. #10
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 410
    Points : 5 801
    Points
    5 801
    Par défaut
    salut

    bon cela a bien changé depuis la vcl ^^

    tu a un evenement dans le tabitem qui est onactivate
    met avis que tu pourrait peut etre mettre ton code dans cette methode

    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
    procedure TMain.AddPageClick(Sender: TObject);
    var F : TChild;
        ATabItem : TTabItem;
    begin
      if Assigned(ft) then exit;
     
      F:=TChild.Create(Self);
      Ft:=F;
      ATabItem:=Bureau.Add();
      ATabItem.Text:=Format('Tab %d',[Bureau.TabCount]);
      ATabItem.CanFocus:=False;
      ATabItem.AddObject(F.Layout1);
      ATabItem.OnActivate := doactivate;
    end;
     
    procedure TMain.doactivate(sender : tobject);
    begin
    var
      Intf: ISMDockingForm;
    begin
       if Supports(FDockedForms[sender as TTabItem], Intf,  ISMDockingForm) then   
          Intf.StartFocus();
    end;
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  11. #11
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 934
    Points
    40 934
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par anapurna Voir le message
    bon cela a bien changé depuis la vcl ^^
    Ben oui , et encore c'est sans LiveBindings ni Style
    tu as un evenement dans le tabitem qui est onactivate
    Euh tu es sur de toi ? je dois être bigleux
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  12. #12
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 410
    Points : 5 801
    Points
    5 801
    Par défaut
    salut

    bin comment te dire ...
    le plus simple regarde ici
    tu verra que j'invente rien
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  13. #13
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 934
    Points
    40 934
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par anapurna Voir le message
    bin comment te dire ...
    Que je devais être très fatigué en fin de journée
    tu verras que j'invente rien
    Oui elle est bien dans la doc mais pas là ! d'où ma confusion
    Nom : Capture.PNG
Affichages : 688
Taille : 10,4 Ko
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  14. #14
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 934
    Points
    40 934
    Billets dans le blog
    62
    Par défaut
    Re,

    Pour ce qui est du TMSFMXPageControl j'ai vraiment été cherché des chemins détournés pour arriver au même résultat !

    le OnPageChange ne semblait pas fonctionner correctement (je pense peut être le signaler à TMS, en tout cas la question est déjà posée dans leur forum)
    j'ai trouvé une solution de contournement que je trouve "tirée par les cheveux" (ce qui me fait de la peine car je déplume ! chauve qui peut)
    J'ai utilisé l'évènement OnAfterDrawTabBackground (qui, hélas est bien trop souvent lancé)

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    procedure TMain.BureauPageAfterDrawTabBackground(Sender: TObject;
      AGraphics: TTMSFMXGraphics; ATabIndex: Integer; ARect: TRectF;
      AState: TTMSFMXTabSetTabState);
    begin
     if (ATabIndex= BureauPage.ActivePageIndex)
     // and BureauPage.IsFocused
      then begin
         // Debugmemo.Lines.Add('Drawtab '+Atabindex.tostring);
         ChangeFocus(ATabIndex);  // cette procédure remplaçant un appel à BureauPageChangePage(Sender,0,0)    
      end;
    end;
     
    {procedure TMain.BureauPageChangePage(Sender: TObject; APreviousPageIndex,
      ACurrentPageIndex: Integer);
    begin
    //DebugMemo.Lines.Add('Page '+BureauPage.ActivePageIndex.ToString);
    case BureauPage.ActivePageIndex of
      0 : Edit1.SetFocus;
      1 : Edit2.SetFocus;
      2 : Edit3.SetFocus;
      else begin
         TChild(FP).StartFocus;
         DebugMemo.Lines.Add('StartFocus');
      end;
     end;
    end;}
     
    procedure TMain.ChangeFocus(Index : Integer);
    begin
    case Index of
     -1 :;
      0 : Edit1.SetFocus;
      1 : Edit2.SetFocus;
      2 : Edit3.SetFocus;
      else begin
         TChild(FP).StartFocus;
       end;
     end;
    end;
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  15. #15
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 410
    Points : 5 801
    Points
    5 801
    Par défaut
    Salut

    l'image c'est un Ttabcontrol et pas un Ttabitem ^^
    c'est pour bientôt les vacances ?
    je parle bien des fiches interne du tabcontrol et pas du parent
    par principe j'essais d'appliquer les actions au plus prés de ceux que cela concerne
    l'affichage de ton layout ne concerne pas directement le tabcontrol mais bien le tabitem qui est son parent direct
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  16. #16
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 934
    Points
    40 934
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par anapurna Voir le message
    l'image c'est un Ttabcontrol et pas un Ttabitem ^^
    Oui, j'avais bien saisi
    c'est pour bientôt les vacances ?
    On en a jamais assez, je vise les très grandes vacances (retraite) mais avoir travailler à l'étranger me la repousse à 67 ans sauf si ....
    je parle bien des fiches interne du tabcontrol et pas du parent
    par principe j'essaye d'appliquer les actions au plus prés de ceux que cela concerne
    l'affichage de ton layout ne concerne pas directement le tabcontrol mais bien le tabitem qui est son parent direct
    une fois les réglages de canfocus, l'ajout de la procédure suggérée par ShaileTroll etc... le TTabControl ne me posait plus de soucis. (Post #9)
    J'ai tenté ton TTabControl.tabItem.onActivate mais le onChange fonctionnant, je n'ai pas trop vu le besoin.

    Par contre avec l'équivalent TMS soit le TMSFMXPageControl (ma finalité, cf mon image écran post #6) pas de onActivate ou alors très/trop bien caché
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

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

Discussions similaires

  1. [Toutes versions] Mettre le focus sur un champ dont le nom est contenu dans une variable
    Par possible924 dans le forum VBA Access
    Réponses: 2
    Dernier message: 07/04/2015, 22h32
  2. Mettre le focus sur un Control contenu dans un DataTemplate
    Par Xxbz3 dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 04/04/2011, 18h31
  3. Comment mettre le focus sur un TEdit
    Par El-Diablo- dans le forum C++Builder
    Réponses: 4
    Dernier message: 26/04/2007, 17h07
  4. Réponses: 2
    Dernier message: 01/05/2006, 19h02
  5. Ne jamais mettre le focus sur un tbutton, possible
    Par portu dans le forum Composants VCL
    Réponses: 4
    Dernier message: 03/07/2003, 16h06

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