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 :

Un Tlabel qui singe un Tedit


Sujet :

Composants FMX Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    2 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 2 304
    Par défaut Un Tlabel qui singe un Tedit
    Bonjour à tous,

    Dans le cadre d'un développement d'app particulier, je me suis vu dans l'obligation de remplacer l'usage de TEdit par un Tlabel qui singe le fonctionnement d'un TEdit (un champ permettant la saisie de caractères).

    Dans les grandes lignes, cela fonctionne parfaitement. A part que si je veux modifier une valeur saisie, je dois effacer les caractères du Tlabel qui suivent l'élément à corriger pour faire une modification.

    Exemple: Si j'ai dans le Tlabel la valeur "Le ciel et bleu" et que je veux corriger le "et" en "est", je dois effacer "t bleu", saisir un "s", puis ressaisir "t bleu".



    Question que je me pose: Serait-il possible de sélectionner dans la valeur affichée par le Tlabel un caractère particulier à l'aide d'un clic?

    Exemple: Si j'ai dans le Tlabel la valeur "Le ciel et bleu" et que je veux corriger le "et" en "est", je clique sur le caractère "e" et je saisis simplement un "s" pour obtenir ""Le ciel est bleu""

    Est-ce que quelqu'un a une idée pour démarrer?

    Merci d'avance

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 658
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    En première impression il me semble qu'il aurait été plus simple de modifier le style du TEdit .
    S'il s'agit d'un 'TLabelModifiable' à répéter créer un style personnalisé et enlever ou rendre invisible le background.
    Sans ajout TStylebook il est aussi possible d'accéder par programme au style utilisé de rendre invisible le backgroud du TEdit, je suis sûr que j'ai déjà abordé des trucs similaires sur le forum ou dans mon blog et vu ma petite forme je ne vais pas indiquer de code ici. Au besoin, demain est un autre jour

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    2 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 2 304
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bonjour,

    En première impression il me semble qu'il aurait été plus simple de modifier le style du TEdit .
    S'il s'agit d'un 'TLabelModifiable' à répéter créer un style personnalisé et enlever ou rendre invisible le background.
    Sans ajout TStylebook il est aussi possible d'accéder par programme au style utilisé de rendre invisible le backgroud du TEdit, je suis sûr que j'ai déjà abordé des trucs similaires sur le forum ou dans mon blog et vu ma petite forme je ne vais pas indiquer de code ici. Au besoin, demain est un autre jour
    En l’occurrence, ce n'est pas une histoire de background de TEdit qui m'a empêché de l'utiliser mais bien l'interaction entre le fonctionnement du TEdit et le clavier virtuel de l'appareil devant accueillir l'app développée. C'est pour cette raison que j'ai dû utiliser mon TLabel et des claviers virtuels développés sur-mesure sans faire appel aux claviers virtuels fournis par Android.

    PS: Ce n'est pas un code que je cherche (cela je m'en occupe ) mais d'avoir une idée de l'angle d'attaque pour y parvenir...

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 939
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 939
    Par défaut
    Pas vraiment d'autre choix qu'un Canvas.TextWidth en tronquant la chaîne jusqu'à trouver une taille inférieure à la position du clic (OnMouseDown en FMX ?).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function GetCaretPos(aLabel :TLabel; X :integer) :integer;
    begin
      var s :string := aLabel.Caption;
     
      while s.Length > 0 do
        if aLabel.Canvas.TextWidth(s) < X
        then Exit(s.Length +1)
        else s := s.Remove(s.Length -1);
     
      Result := 0;
    end;

  5. #5
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par Anselme45 Voir le message
    En l’occurrence, ce n'est pas une histoire de background de TEdit qui m'a empêché de l'utiliser mais bien l'interaction entre le fonctionnement du TEdit et le clavier virtuel de l'appareil devant accueillir l'app développée. C'est pour cette raison que j'ai dû utiliser mon TLabel et des claviers virtuels développés sur-mesure sans faire appel aux claviers virtuels fournis par Android.

    PS: Ce n'est pas un code que je cherche (cela je m'en occupe ) mais d'avoir une idée de l'angle d'attaque pour y parvenir...
    je n'ai pas compris le problème d'interaction...n'est-il pas plus simple de corriger ce problème d'interaction plutôt que de réinventer un éditeur de texte ? d'autant que TEdit TMemo etc..sont déjà des composants gérés par Delphi et possèdent cette gestion de modification de texte, il doit être possible de reprendre leur fonctionnement dans un TEdit sans clavier (c'est ça le problème ?) voir d'empêcher l'apparition du clavier, ça doit être jouable. Dans FMX.Types tu as VKAutoShowMode qui tu peux basculer à TVKAutoShowMode.Never si j'en crois une rapide recherche Google
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    2 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 2 304
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    je n'ai pas compris le problème d'interaction...n'est-il pas plus simple de corriger ce problème d'interaction plutôt que de réinventer un éditeur de texte ?
    Mon problème est de détourner un bug de l'appareil sur lequel doit fonctionner mon app: Il y a un bug dans le driver du fabricant qui permet de récupérer le code-barre lu par son lecteur intégré. Dès que l'utilisateur de l'app utilise un composant intégrant une fonction de saisie de données, le driver en question se met en erreur et il n'est plus possible de récupérer un code-barre.

    Il suffit que le fabricant corrige son driver me dira-t-on... Certes mais le fabricant ne le fait pas!

    Donc? Je fais de la saisie de données sans utiliser les composants qui permettent de le faire!

  7. #7
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    je persiste au risque de me répéter, les composants Delphi FMX (non natifs) n'ont pas d'existence au niveau de l'OS, ils sont dessinés par Delphi...donc il doit être possible de les utiliser sans jamais activer les fonctions de saisie de l'OS
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

Discussions similaires

  1. [Lazarus] TEdit, TLabel et BaseLine
    Par Invité dans le forum Lazarus
    Réponses: 4
    Dernier message: 01/12/2014, 18h40
  2. Réponses: 2
    Dernier message: 04/04/2013, 12h45
  3. Réponses: 2
    Dernier message: 16/05/2010, 19h47
  4. Un Tlabel qui s'affiche pas
    Par peter27x dans le forum Langage
    Réponses: 4
    Dernier message: 13/01/2009, 11h29
  5. Question Drag-Drop sur les TEdit qui m'aidez
    Par ghazaliove dans le forum Delphi
    Réponses: 1
    Dernier message: 01/11/2006, 08h46

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