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 :

Désactiver le copier/coller dans un TEdit


Sujet :

Lazarus Pascal

  1. #1
    Invité
    Invité(e)
    Par défaut Désactiver le copier/coller dans un TEdit
    Bonjour,

    Comment désactive-t-on la fonction copier/coller dans un TEdit sous Windows et Linux ?

    Cordialement.
    Gilles

  2. #2
    Membre éclairé Avatar de DOLPat®
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 426
    Points : 790
    Points
    790
    Par défaut
    Bonjour

    Pour Linux, je ne sais pas, mais je pense que le code Windows devrait aussi fonctionner:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    procedure TForm1.Edit1ContextPopup(Sender: TObject; MousePos: TPoint;
      var Handled: Boolean);
    begin
      Handled:=True; // Suppression du menu contextuel
    end;
     
    procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState
      );
    begin
      if ssCtrl in Shift then // Interception du Ctrl-A, Ctrl-X, Ctrl-C et Ctrl-V
        case Chr(key) of
          'A', 'X', 'C', 'V': key:=0;
        end;
    end;

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonsoir Patrick,

    J'avais bien pensé à cette solution mais elle n'est pas efficace. Je viens de vérifier avec le code que vous proposez.

    Par exemple, la combinaison Ctrl+Inser permet de copier sous Nux. Pire sous Nux, il suffit de sélectionner le contenu à la souris dans le TEdit, puis sans autre manipulation que le clic gauche enfoncé, de traîner la sélection dans (sur) un traitement de texte et de lâcher le bouton pour y coller la sélection...

    On peut évidemment condamner le ctrl+inser mais pour le "glissage" à la souris ?
    Je cherche donc s'il existe une solution fiable.

    Merci pour votre aide.
    Cordialement. Gilles
    Dernière modification par Invité ; 01/07/2011 à 21h29.

  4. #4
    Membre éclairé Avatar de DOLPat®
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 426
    Points : 790
    Points
    790
    Par défaut
    Citation Envoyé par selzig Voir le message
    On peut évidemment condamner le ctrl+inser mais pour le "glissage" à la souris ?
    Bizarre ce drag'n'drop non autorisé... Sous Windows Seven, je n'ai pas ce comportement... Bug Free Pascal !?!?!?

    Tu as essayé de dé-sélectionner le texte lors d'un clic souris ? Dans ce cas, il ne devrait plus y avoir de glisser/déposer y comprit lors d'une sélection clavier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      Edit1.SelLength:=0;
    end;
     
    procedure TForm1.Edit1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      if (ssLeft in Shift) or (ssRight in Shift) then
       Edit1.SelLength:=0;
    end;

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour Patrick,

    je n'ai pas regardé ce matin sur mon Ubuntu. J'ai lu votre réponse trop tard. J'ai réussi partiellement à bloquer autrement sous Win qui est probablement transposable à Nux et réglera "son" problème du glisser-déposer...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Edit1.DragMode := dmAutomatic;
    end;
    Sous Win, l'Edit1 est bloqué au niveau de la sélection et un Edit2 a un comportement habituel.

    Cependant, lors de l'affichage initial de l'Edit1 (dont le contenu par défaut est entièrement sélectionné),
    • soit on ajoute un code de ce genre pour neutraliser les Crtl C et cie
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      procedure TForm1.Edit1Enter(Sender: TObject);
      begin
        Edit1.SelStart := Length(Edit1.Text);
        Edit1.SelLength := 0;
      end;
    • soit on utilise votre proposition de blocage des combinaison des touches.

    Je vérifie ce soir sous Nux. Néanmoins, même si cette solution fonctionnait sous Nux, elle n'est pas très ergonomique. Elle bloque toute tentative de sélection avec la souris dans le TEdit avant même que l'on ne tente de copier... J'aurais préféré intercepter l'évènement "coller" et le bloquer à ce moment... Je passe peut-être à côté de la bonne solution : comment fonctionnent les TDragMessages (dmDragLeave et cancel) et les TDragStates (dsDragLeave,...) ?...

    Autre question, j'ai rencontré un code de ce type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    begin
       Accept := True;
       if Source is Tedit then
         if TEdit(Source).Name = 'Edit1' then
          Accept := False;
    end;
    ... en complément du Edit1.DragMode := dmAutomatic. Je ne pense pas qu'il s'agisse d'une redondance. Mais quelle est son action sachant qu'il semble que si Edit1.DragMode := dmManuel, le code en question soit sans effet ?

    Pour l'instant, j'en reste là car je ne peux pas reproduire sur la machine que j'utilise ici (Win7) le glisser-déposer de Nux.

    Cordialement. Gilles
    Dernière modification par Invité ; 03/07/2011 à 10h33.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Complètement inopérant sous Nux. Il doit bien y avoir une méthode pour bloquer le glisser-déposer...

    Cordialement. Gilles

Discussions similaires

  1. Désactiver copier/coller dans un Tedit
    Par youhibadelphi dans le forum Débuter
    Réponses: 22
    Dernier message: 12/01/2012, 15h10
  2. Réponses: 3
    Dernier message: 29/03/2005, 13h39
  3. gerer le copier/coller dans une richEdit
    Par SBP dans le forum MFC
    Réponses: 4
    Dernier message: 10/02/2005, 21h00
  4. Protéger Couper/Copier/Coller dans un Objet en développement
    Par tibi666 dans le forum Composants VCL
    Réponses: 14
    Dernier message: 06/12/2004, 14h52
  5. [Swing]copier coller... dans le menu.
    Par parksto dans le forum Composants
    Réponses: 3
    Dernier message: 10/05/2004, 22h56

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