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 :

Comportement d'un TEdit en mode ReadOnly [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut Comportement d'un TEdit en mode ReadOnly
    Bonjour à toutes et à tous,

    Est-il possible, avec un TEdit en mode ReadOnly, de faire en sorte que, même si on clique dessus, le curseur texte ne s'affiche pas et que par balayage de la souris sur ce composant, le texte qui y est inscrit ne passe pas en surbrillance ?

    Cordialement.

    Pierre

  2. #2
    Membre prolifique Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 759
    Par défaut
    Pourquoi ne pas mettre le "enabled" à faux, dans ce cas ?

  3. #3
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 940
    Billets dans le blog
    6
    Par défaut
    TEdit.Enabled := False -> insensible, mais grisé
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  4. #4
    Membre Expert
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Billets dans le blog
    2
    Par défaut
    Salut

    Le TEDit dispose d'une propriété "HideSelection" et "AutoSelect" mais cela ne semble pas fonctionner du moins sous Windows

    Pour éviter la sélection via les événement "OnKeypress" OnMouseMove tu peux faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       Edit1.SelStart := -1;
       Edit1.SelLength := -1;
    Pour ce qui est du curseur. Sous Windows uniquement il existe la méthode HideCaret(handle)

    EDIT : Dans l'unité LCLIntf tu as la procedure HideCaret mais je ne sais pas si elle compatible avec Linux et autre OS

    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
     
     
    procedure TForm1.Edit1MouseEnter(Sender : TObject);
    begin
      Screen.cursor := crNone;
    end;
     
    procedure TForm1.Edit1MouseLeave(Sender : TObject);
    begin
       Screen.cursor := crDefault;
    end; 
     
    procedure TForm1.Edit1Enter(Sender : TObject);
    begin
      HideCaret(Edit1.Handle);
    end;    
     
    procedure TForm1.Edit1MouseMove(Sender : TObject; Shift : TShiftState; X, Y : Integer);
    begin
       Edit1.SelStart := -1;
       Edit1.SelLength := -1;
    end; 
     
    procedure TForm1.Edit1KeyPress(Sender : TObject; var Key : char);
    begin
      Edit1.SelStart := -1;
      Edit1.SelLength := -1;
    end;
    A+
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  5. #5
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    Merci BeanzMaster pour cette proposition.

    J'ai supprimé les deux fonctions effaçant et montrant le curseur car lorsque le curseur est au-dessus du TEdit, étant effacé, on ne sais plus où il est ; c'est plus gênant qu'autre chose.

    Cela fonctionne très bien sous Windows, mais malheureusement sous Linux, le caret ne s'efface pas.

    Je dévie un peu du sujet, mais ce genre d'opération ne peut-elle pas être gérée par ces fameux "Helpers" dont j'avoue ne pas avoir trop compris à quoi cela servait et comment s'en servir.

    Cordialement.

    Pierre

  6. #6
    Membre Expert
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Billets dans le blog
    2
    Par défaut
    Salut, je me doutais (un peu ) que cela ne fonctionnerait pas sous Linux
    Sinon concernant les assistants (helpers) non ça ne permet pas de rajouter un comportement, il servent à ajouter des méthodes. Si tu as beaucoup de TEdit dans ce genre dans ton application le mieux c'est de surcharger et de créer une nouvelle classe de composant

    A+
    Jérôme
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 940
    Par défaut
    Au plus simple c'est poser cet edit sur un panel et jouer avec le Enabled de ce dernier.

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

Discussions similaires

  1. QWebview::un champ est en mode ReadOnly
    Par Armelino dans le forum C++
    Réponses: 1
    Dernier message: 08/03/2016, 14h09
  2. Modifier le comportement d'un TEdit
    Par Moine dans le forum Composants VCL
    Réponses: 7
    Dernier message: 02/03/2009, 10h39
  3. Comportement différent selon Mode Execution
    Par MarronSuisse dans le forum C
    Réponses: 7
    Dernier message: 14/04/2008, 12h52
  4. Activé un champ en mode ReadOnly
    Par ludobado dans le forum Access
    Réponses: 3
    Dernier message: 21/04/2006, 12h06
  5. Réponses: 3
    Dernier message: 16/03/2005, 11h31

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