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 :

Saisie de caractères spéciaux i.e ß mais aussi æ,œ


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 046
    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 046
    Points : 40 962
    Points
    40 962
    Billets dans le blog
    62
    Par défaut Saisie de caractères spéciaux i.e ß mais aussi æ,œ
    Bonjour,

    J'ai été surpris de faire une simple application desktop et de ne pouvoir faire Alt+225 dans une zone de saisie (TEdit ou TMemo), ni d'ailleurs Alt+0223 soit le caractère ß.
    Y a t-il une astuce particulière, une proriété que je n'ai pas vue ?
    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 pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    à l'exécution ou dans l'IDE ?

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 046
    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 046
    Points : 40 962
    Points
    40 962
    Billets dans le blog
    62
    Par défaut
    Bonjour Patrick,

    à l'exécution.
    J'imagine que l'on peut utiliser les évènmements OnKeyDown et OnKeyUp, j'ai fait une tentative en ce sens hier en fin d'après-midi mais après ma séance de kiné c'était plutôt raté
    Je pense que cela pas été pris en compte en FMX (à signaler ?) , j'ai testé en VCL le Alt+225 fonctionne, le Alt+0223 non il y a là une subtilité qui m'échappe mais ce n'est pas le sujet
    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
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    bug ou oubli d'implémentation dans l'idée que FMX était multiplateforme et que ces combinaisons de touches ne sont pas susceptibles d'être utilisées ailleurs que windows, en tout cas c'est signalé :

    https://quality.embarcadero.com/browse/RSP-16168

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 046
    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 046
    Points : 40 962
    Points
    40 962
    Billets dans le blog
    62
    Par défaut
    Signalé depuis 2016 et par Bruno Fierens en plus je crois qu'il va me falloir pondre un truc, si même les TMSFMX ne prenne pas le truc en compte !
    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

  6. #6
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    En fait c'est verrouillé par la gestion des raccourcis claviers qui intercepte le ALT, reste la possibilité de voter pour cette demande pour la booster un peu sur les TODO listes.

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 046
    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 046
    Points : 40 962
    Points
    40 962
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par pprem Voir le message
    reste la possibilité de voter pour cette demande pour la booster un peu
    Fait, mais je crois que je vais devoir plancher sur le sujet à mes temps perdus
    J'ai déjà une base
    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
     
    private
      Alt : boolean;
      Schar : String;
    ...
    procedure TForm3.Edit1KeyDown(Sender: TObject; var Key: Word; var KeyChar: Char;
      Shift: TShiftState);
    begin
    if ssAlt in Shift then
      begin
        if not Alt then
        begin
          Alt:=true;
          SChar:='';
        end;
        Schar:=Schar+KeyChar;  // c'est là que ça déconne
      end
    end;
     
    procedure TForm3.Edit1KeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
      Shift: TShiftState);
    begin
    if ssAlt in Shift then
     begin
      Key:=schar.ToInteger;   // et là j'ai des doutes  il y a une différence subtile selon 0 de début ou pas Alt+225 et Alt+0223 
     // ou KeyChar(Schar.tointeger) 
     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

  8. #8
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    Dans le up ne devrais tu pas plutôt tester ton "alt" plutôt que les combinaisons de touches ?

    Si tu as le code ASCII/Unicode du caractère, c'est plutôt keychar qui serait à remplir avec un chr() ou équivalent et 0 à mettre dans Key, non ?

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 046
    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 046
    Points : 40 962
    Points
    40 962
    Billets dans le blog
    62
    Par défaut
    Comme je l'ai écrit, en fin de journée mes codes ne sont pas toujours au point.

    Durant la nuit j'ai même eu l'idée d'afficher un clavier spécifique, ça aussi, ce pourrait être "drôle" à réaliser
    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
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Comme je l'ai écrit, en fin de journée mes codes ne sont pas toujours au point.

    Durant la nuit j'ai même eu l'idée d'afficher un clavier spécifique, ça aussi, ce pourrait être "drôle" à réaliser
    me demande s'il ne serait pas déjà possible d'utiliser l'application qui existait dans les vieilles versions de Windows pour ce genre de choses, un peu à l'image du chargement forcé du "clavier tactile" : https://en.wikipedia.org/wiki/Character_Map_(Windows)

  11. #11
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 046
    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 046
    Points : 40 962
    Points
    40 962
    Billets dans le blog
    62
    Par défaut
    Le fameux Charmap ? Oui, bien sûr c'est une possibilité pour windows mais quid des autres OS ?
    Au moins le clavier virtuel peut proposer des autocorrections, à voir ...

    Et maintenant il y a les emojis qui s'invitent à la fête
    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
    Membre éprouvé
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Points : 1 072
    Points
    1 072
    Par défaut
    Bonjour,

    sous Win c'est facile il suffit de passer la propriété "ControlStyle" du TMemo à "Platform"
    mais pour les autres Os je ne sais pas !

    Cordialement,

    @+

  13. #13
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 046
    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 046
    Points : 40 962
    Points
    40 962
    Billets dans le blog
    62
    Par défaut
    sous Win c'est facile il suffit de passer la propriété "ControlStyle" du TMemo à "Platform"
    Effectivement c'est parfait.

    Mais pour les autres plateformes ?
    - Sous Android, l'autocorrection devrait proposer les ligatures "classiques" (i.e œufs) je doute pour le ß donc pas de soucis
    - Sous Linux je vais pouvoir faire un essai

    Reste que le fait de mettre le control style à platform fout en l'air toute utilisation de style et l'utilisation de bouton type Tedit, TClear, Tpassword, etc..

    J'opterai plutôt pour un pseudo clavier virtuel (à moins que je puisse définir une clavier virtule avec touches, il me semble que c'est possible)
    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 046
    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 046
    Points : 40 962
    Points
    40 962
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Toujours dans mon délire weekend oblige, j'ai fait un test (réussi) en utilisant un TPopup
    Nom : Capture_1.PNG
Affichages : 108
Taille : 3,2 Ko
    que j'ai voulu améliorer ainsi
    Nom : Capture.PNG
Affichages : 109
Taille : 2,6 Ko
    Pour ce deuxième popup ( utilisant un gridlayout) je me suis dit : "et si je dessinais les touches dans un cadre"
    Sitôt pensé, sitôt fait mais le cadre ne s'affiche pas
    Une idée ? Quelqu'un a-t-il déjà essayé un TFrame dans un TPopup en FMX ?
    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
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 046
    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 046
    Points : 40 962
    Points
    40 962
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Sitôt pensé, sitôt fait mais le cadre ne s'affiche pas
    Une idée ? Quelqu'un a-t-il déjà essayé un TFrame dans un TPopup en FMX ?
    en créant la frame dans l'évènement OnPopup
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    procedure TForm1.Popup2Popup(Sender: TObject);
    var aFrame : TFrame;
    begin
    aFrame := TMyKeyboard.Create(Popup2);
    aFrame.Parent:=Popup2;
    end;
    Nom : Capture.PNG
Affichages : 98
Taille : 2,7 Ko Nom : Capture_1.PNG
Affichages : 90
Taille : 2,6 Ko

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    unit keypadframe;
     
    interface
     
    uses
      System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
      FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,
      FMX.Controls.Presentation, FMX.Layouts, FMX.Memo.Types, FMX.ScrollBox,
      FMX.Memo, FMX.Edit;
     
    type
      TMyKeyboard = class(TFrame)
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        Btnshift: TButton;
        FlowLayout1: TFlowLayout;
        procedure BtnshiftClick(Sender: TObject);
        procedure keyclick(Sender: TObject);
      private
        { Déclarations privées }
        upkeys : boolean;
        aMemo : TMemo;
        aEdit : TEdit;
        procedure drawkeys;
      public
        { Déclarations publiques }
        constructor Create(AOwner: TComponent) ; override;
      end;
     
    const C_Lower : TArray<Char>=[Char($00DF),Char($00E6),Char($0153),Char($2191)];
    const C_Upper : TArray<Char>=[Char($1E9E),Char($00C6),Char($0152),Char($2191)];
     
    implementation
     
    {$R *.fmx}
     
    procedure TMyKeyboard.BtnshiftClick(Sender: TObject);
    begin
    upKeys:=not UpKeys;
    DrawKeys;
    end;
     
    constructor TMyKeyboard.Create(AOwner: TComponent);
    begin
      inherited;
      upkeys:=False;
      if Tpopup(AOwner).PlacementTarget is TEdit then AEdit:=TEdit(Tpopup(AOwner).PlacementTarget);
      if Tpopup(AOwner).PlacementTarget is TMemo then AMemo:=TMemo(Tpopup(AOwner).PlacementTarget);
      drawkeys;
    end;
     
    procedure TMyKeyboard.drawkeys;
    var i : integer;
    begin
      for I := 0 to FlowLayout1.Controls.Count-1 do
       if FlowLayout1.Controls[i] is TButton then
        begin
          if Upkeys then TButton(FlowLayout1.Controls[i]).Text:=Char(C_Upper[i])
                    else TButton(FlowLayout1.Controls[i]).Text:=Char(C_lower[i])
        end;
    end;
     
    procedure TMyKeyboard.keyclick(Sender: TObject);
    begin
    If Assigned(AMemo) then AMemo.Text:=AMemo.text+TButton(Sender).Text;
    if Assigned(AEdit) then AEdit.Text:=AEdit.text+TButton(Sender).Text;
    end;
     
    end.
    Il me reste maintenant à mettre le caractère en bonne position en cas d'insertion

    Du coup j'ai fait un tour du côté de TFrameStand d'Andréa Magni, ça vaut le déplacement pourquoi réinventer une roue fort bien lissée

    Toutes ces expériences pourraient faire l'objet d'un billet dans mon blog si j'ai le courage : de finir mes divers tests et de rédiger le billet
    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

Discussions similaires

  1. [XL-2010] Empêcher la saisie de caractère spéciaux dans Inputbox()
    Par baptou42 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 19/05/2014, 08h19
  2. [Débutant] Empêcher la saisie de caractère spéciaux dans une textbox
    Par jyves47 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 05/02/2014, 20h00
  3. Réponses: 0
    Dernier message: 06/07/2011, 23h45
  4. Réponses: 1
    Dernier message: 18/01/2007, 14h24
  5. [VB.NET] Empecher la saisie de caractère spéciaux
    Par bloody22 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 28/07/2005, 11h09

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