Bonjour,
Comment désactive-t-on la fonction copier/coller dans un TEdit sous Windows et Linux ?
Cordialement.
Gilles
Bonjour,
Comment désactive-t-on la fonction copier/coller dans un TEdit sous Windows et Linux ?
Cordialement.
Gilles
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;
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.
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;
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...
Sous Win, l'Edit1 est bloqué au niveau de la sélection et un Edit2 a un comportement habituel.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 procedure TForm1.FormCreate(Sender: TObject); begin Edit1.DragMode := dmAutomatic; end;
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... 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 ?
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;
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.
Bonjour,
Complètement inopérant sous Nux. Il doit bien y avoir une méthode pour bloquer le glisser-déposer...
Cordialement. Gilles
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager