AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TCustomEdit: Paste verhindern ohne Komponente

Ein Thema von Union · begonnen am 24. Okt 2005 · letzter Beitrag vom 26. Okt 2005
Antwort Antwort
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.406 Beiträge
 
Delphi 7 Enterprise
 
#1

TCustomEdit: Paste verhindern ohne Komponente

  Alt 24. Okt 2005, 20:43
Hallo,

wie kann ich in einem Edit-Feld Paste verhindern (Maus, Tastatur usw.) ohne extra Komponente?
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: TCustomEdit: Paste verhindern ohne Komponente

  Alt 24. Okt 2005, 21:56
Hallo Union,

ich würde es mit subclassing versuchen:

Delphi-Quellcode:
interface

type
  TDemoForm = class(TForm)
    Edit: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    OldEditProc: TWndMethod;
    procedure NewEditProc(var Message: TMessage);
  end;

var
  DemoForm: TDemoForm;

implementation

procedure TDemoForm.NewEditProc(var Message: TMessage);
begin
  if Message.Msg = WM_PASTE
    then Message.Result := 1
    else OldEditProc(Message);
end;

procedure TDemoForm.FormCreate(Sender: TObject);
begin
  OldEditProc := Edit.WindowProc;
  Edit.WindowProc := NewEditProc;
end;

procedure TDemoForm.FormDestroy(Sender: TObject);
begin
  Edit.WindowProc := OldEditProc;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.406 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: TCustomEdit: Paste verhindern ohne Komponente

  Alt 25. Okt 2005, 07:23
Hallo marabu,

das funktioniert gut. Manchmal sollte man sich eben an die gute alte Zeit erinnern
Wie kriege ich jetzt aber das Kontextmenü des Edit um die Cut/Paste-Einträge bereinigt? Ausschalten kann man es ja in OnContextPopup. Aber ich will nur den "Einfügen" Eintrag eliminieren oder wenigstens disabled anzeigen.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: TCustomEdit: Paste verhindern ohne Komponente

  Alt 25. Okt 2005, 20:22
Hallo Union,

entfernen kannst du das PasteItem so:
Deletemenu(hmContext, IDM_PASTE, MF_BYCOMMAND); Deaktivieren geht so:
EnableMenuItem(hmContext, IDM_PASTE, MF_BYCOMMAND or MF_GRAYED); An das Handle hmContext könntest du über einen message handler für WM_INITMENUPOPUP heran kommen, hat aber bei meinem Test eben nicht geklappt. Wenn alle Stricke reißen, dann schalte das standard context menu im event OnContextPopup() aus und schiebe ein custom popup menu ein.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.406 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: TCustomEdit: Paste verhindern ohne Komponente

  Alt 25. Okt 2005, 20:43
Hallo marabu,

es kommt nur die Message WM_CONTEXTMENU an. Dort kann ich mit Result := 1 die Darstellung blocken. Ein eigenes Menü kommt aber nicht in Frage, da mein Programm in 5 verschiedenen Sprachen läuft. Dann müsste ich das Menü auch lokalisieren. Aber ich will ja dass die normalen Windows-Texte der jeweiligen Installation verwendet werden. Wie komme ich also an das Handle von dem Standard-Kontextmenü?
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#6

Re: TCustomEdit: Paste verhindern ohne Komponente

  Alt 26. Okt 2005, 02:41
Zitat von Union:
Wie komme ich also an das Handle von dem Standard-Kontextmenü?
Mit MSDN-Library durchsuchenGetMenu.
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf