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 :

[XE4] un tedit avec que des majuscules + une forme modale au centre de la fiche appelante [Windows]


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 042
    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 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut [XE4] un tedit avec que des majuscules + une forme modale au centre de la fiche appelante
    Bonjour,


    plus ça va , plus je bute sur des trucs simples . Je savais que avec FMX , il fallait revoir beaucoup de choses , mais là , je trouve que cela fait beaucoup

    1- je veux faire un TEdit simple qui n'accepte/n'affiche que des majuscules : question où est l'équivalent de charcase ? il est quand même incroyable que je sois obligé d'utiliser le Edit de TMS (TMSFMXEdit) ou de coder l'event OnChangeTracking ?

    2- idem , je veux qu'une forme modale s'affiche au centre de sa forme appelante en gros ainsi
    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
     
    procedure TMainForm.SettingsClick(Sender: TObject);
    {$REGION 'Documentation'}
    {*------------------------------------------------------------------------------
      Répertoire Serveur (normalement ne change pas)
    ------------------------------------------------------------------------------*}
    {$ENDREGION}
    var F : TStartForm;
    begin
      F:=TStartForm.Create(Self);
      try
        F.Position:=TFormPosition.poScreenCenter; //<< sauf que là , je veux que ce soit au centre de ma fenêtre 
        if F.ShowModal=mrOk then
         begin
           Dimensions.Text:=Format('Dimensions Largeur %s x Hauteur %s',
                            [F.Largeur.Text,F.Hauteur.Text]);
           DestinationDir.Text:=F.ImagesDir.Text;
           // Changer Taille Rectangle & Selection de Base
           Rectangle1.Width:=F.Largeur.Value;
           Rectangle1.Height:=F.Hauteur.Value;
           Selection1.Width:=F.Largeur.Value;
           Selection1.Height:=F.Hauteur.Value;
         end;
      finally
        F.Free;
      end;
    end;
    j'ai beau essayer les TFormPosition.poMainFormCenter ou TFormPosition.poOwnerFormCenter , soit sur les propriétés de la fiche , soit comme indiqué dans le code : rien y fait

    je désespère d'arriver a coder un jour une application de gestion aussi simplement avec FMX qu'avec VCL
    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
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    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 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Essaye FMX.Edit.TCustomEdit.FilterChar

    Par exemple, si vous définissez FilterChar sur '123abc', l'utilisateur est autorisé à taper uniquement les lettres a, b et c et les numéros 1, 2 et 3 dans ce contrôle d'édition. Tous les autres caractères sont ignorés. Cependant, notez que les versions majuscules de a, b et c ne sont pas autorisées par cette chaîne de filtrage. Si vous voulez ajouter des variantes majuscules, FilterChar devrait être définie sur '123abcABC'.
    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

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    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 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Pour TFormPosition.poOwnerFormCenter, en lisant le code de XE2 l'un des seuls qui semblent être géré c'est poScreenCenter pour le Show !

    Pour le modale, la version Win32 ne contient rien ! et la version MacOS rien de plus !
    Et le ShowModal fini par appeler le Show(), on en revient juste à poScreenCenter !

    Grosse flemme des développeurs qui n'ont codé QUE celui qu'ils utilisent pour FMX.Dialogs.InputQuery et FMX.Dialogs.MessageDlg

    C'est triste à dire mais retour en "TFormPosition.poDesigned" et ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
              CenterForm := TForm(Owner);
              if Assigned(CenterForm)then
              begin
                X := ((CenterForm.Width - Width) div 2) + CenterForm.Left;
                Y := ((CenterForm.Height - Height) div 2) + CenterForm.Top;
              end;
              SetBounds(X, Y, Width, Height);
    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
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    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 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    C'est triste à dire mais retour en "TFormPosition.poDesigned" et le code
    Oui , c'est triste à dire

    j'ai l'impression que FMX est trop pensé application mobiles et pas assez desktop ! c'est un sacré challenge de faire des applications de gestion
    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

  5. #5
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour,

    1- je veux faire un TEdit simple qui n'accepte/n'affiche que des majuscules
    Depuis Delphi 1 ça ce fait ainsi :
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
    if Key in ['a'..'z'] then Key := UpCase(Key);
    end;
    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  6. #6
    Rédacteur/Modérateur

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

    bien sur Gilbert quoique en FMX que le onkeypress n'existe pas

    mon code est légèrement différent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TMainForm.ModeleChangeTracking(Sender: TObject);
    {$REGION 'Documentation'}
    {*------------------------------------------------------------------------------
     procedure ModeleChangeTracking
     mise en majuscule du nom du modèle
     @param Sender TEdit Modele
    ------------------------------------------------------------------------------*}
    {$ENDREGION}
    begin
    Modele.Text:=Uppercase(Modele.Text);
    end;
    j'aurais aussi pu le faire sur onKeyDown aussi
    en fait, pour la partie Edit, c'est plus "un coup de gueule" de frustration . A le voir , l'outil semble beau , à l'utiliser il faut beaucoup d'exercice pour obtenir la même chose que la VCL (je ne parle même pas des Grilles, Boutons avec Image etc..) . Bref , pour l'instant , j'ai l'impression qu'un passage a FMX se paye par un temps de dev beaucoup plus long ce qui est donc, de mon point de vue, fortement contre-productif .
    Aurais-je donc pris de mauvaises habitudes avec la VCL ? il me semble , en tout cas au vue de mon test QT , c'est sûr.

    Pour en revenir à FMX , je vais assister au Webinar de Marco Cantù aujourd'hui pour essayer d'avoir les idées plus claires . Le problème de toutes les vidéos sur ces sujets est que l'on y montre des applications 'simples' , même le fishfactory n'est qu'un exemple simple de programme de gestion : peu de records , interface 'simpliste' dès que l'on dépasse certaines limites :
    plus de 200 records dans une grille
    un fichu Combobox (cf. un autre de mes posts)
    interface visuelle un peu plus chiadée (le simple bitbtn VCL par exemple ....)
    ça se corse .
    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 459
    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 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    mon code est légèrement différent
    c'est donc que FMX.Edit.TCustomEdit.FilterChar ne fonctionne pas ?
    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 042
    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 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    @ShaiLeTroll
    cela ne fait pas la même chose dans le sens ou cela ne transforme pas une minuscule en majuscule
    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
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour,


    SergioMaster: bien sur Gilbert quoique en FMX que le onkeypress n'existe pas
    Le onKeyPress était pourtant simple, quelle idée saugrenue que de ne pas l'avoir conservé en FMX !!!
    Cela ne donne vraiment pas envie de passer à XE4 !!!

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  10. #10
    Membre émérite
    Avatar de Thierry Laborde
    Homme Profil pro
    N/A
    Inscrit en
    Avril 2002
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : N/A

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 391
    Points : 2 529
    Points
    2 529
    Par défaut
    Citation Envoyé par Gilbert Geyer Voir le message
    Le onKeyPress était pourtant simple, quelle idée saugrenue que de ne pas l'avoir conservé en FMX !!!
    Tout simplement car tout ce qui est dans Firemonkey doit être multiplateforme et doit donc fonctionner sur Windows, OSX, iOS et Android. Vous ne voyez que votre côté avec Windows, mais il faut se souvenir que Firemonkey est pensé Multiplateforme.

  11. #11
    Membre émérite
    Avatar de Thierry Laborde
    Homme Profil pro
    N/A
    Inscrit en
    Avril 2002
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : N/A

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 391
    Points : 2 529
    Points
    2 529
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    2- idem , je veux qu'une forme modale s'affiche au centre de sa forme appelante
    Je ne sais pas comment est l'application ni ce qu'elle fait. Mais Est-ce que la solution ne peut pas être d'afficher un Layout (Qui peut être à la base sur une autre Form) avec tout ce que contient votre Form en align center ?

  12. #12
    Rédacteur/Modérateur

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

    Je me demandais quand tu allais réagir Thierry

    pour l'histoire de OnKeyPress remplacé par OnChangeTracking je dirais que cela ne me gêne pas trop .

    Pour ce qui est ce la solution que tu proposes
    Mais Est-ce que la solution ne peut pas être d'afficher un Layout (Qui peut être à la base sur une autre Form) avec tout ce que contient votre Form en align center ?
    c'est vrai que je n'ai toujours pas ce réflexe, je suis encore très VCL ... .

    Du coup je dirais également pourquoi pas dans un Frame . Cependant , il s'agit d'une application desktop contenant déjà un bon nombre de Layouts (sans parler d'un scaledlayout) et je ne suis pas sur qu'une solution de ce genre empêche la saisie en dehors de la fenêtre voulue (en gros l'équivalent d'un showmessage)

    à ce propos ,du showmessage , j'ai bien compris qu'il s'agissait d'une construction via un appel OS , du coup pas de style , il est dommage qu'il n'y ait pas (du moins s'il existe je n'ai pas trouvé) un FMXMessageDialog ou FMXShowMessage qui lui réagirait aux styles (donc une simple fenêtre en show modal , centrée soit sur la forme soit sur l'écran) pour ne garder les ShowMessages et MessageDialogs systèmes que pour des 'vrais' problèmes systèmes (ou considérés tels)

    Mais surtout, ce que je pointe c'est que ces options (TFormPosition.poMainFormCenter ou TFormPosition.poOwnerFormCenter ....) sont proposées donc on s'attend a ce quelles soient "utilisables" . Comme ShaiLeTroll l'a fait remarquer

    Pour TFormPosition.poOwnerFormCenter, en lisant le code de XE2 l'un des seuls qui semblent être géré c'est poScreenCenter pour le Show !

    Pour le modale, la version Win32 ne contient rien ! et la version MacOS rien de plus !
    Et le ShowModal fini par appeler le Show(), on en revient juste à poScreenCenter !

    Grosse flemme des développeurs qui n'ont codé QUE celui qu'ils utilisent pour FMX.Dialogs.InputQuery et FMX.Dialogs.MessageDlg
    (bon , un troll ça a toujours été un peu méchant) .

    Je dois avouer ne pas avoir été pioché dans le code (pressé par le temps et d'autre réalisations "urgentes" à faire) et me suis rabattu sur la solution "manuelle"
    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. Réponses: 7
    Dernier message: 02/10/2014, 17h13
  2. forcer un formulaire à n'accepter que des majuscules
    Par teen6517 dans le forum Langage
    Réponses: 6
    Dernier message: 30/03/2007, 09h14
  3. Interaction avec la bordure d'une forme
    Par SkYsO dans le forum Langage
    Réponses: 2
    Dernier message: 01/05/2006, 18h28
  4. Réponses: 3
    Dernier message: 22/11/2005, 20h42
  5. [C#] Travailler efficacement avec les panels dans une forme
    Par WwiloO dans le forum Windows Forms
    Réponses: 8
    Dernier message: 27/06/2005, 15h33

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