AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Verhindern aus einem Memo zu kopieren
Thema durchsuchen
Ansicht
Themen-Optionen

Verhindern aus einem Memo zu kopieren

Ein Thema von dopeline · begonnen am 4. Mai 2003 · letzter Beitrag vom 6. Mai 2003
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von Catbytes
Catbytes

Registriert seit: 7. Sep 2002
Ort: Heckendalheim
353 Beiträge
 
Delphi XE5 Enterprise
 
#21
  Alt 5. Mai 2003, 18:37
Hi,

meine Lösung ist wohl etwas untergegangen:

Ich nehme an, in diesem Formular gibt es auch einen "OK" Button oder sowas ähnliches. Erzeuge einfach im OnEnter-Event der Memo folgenden Code:

Code:
ActiveControl:=Button1;
Catbytes
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#22
  Alt 6. Mai 2003, 07:31
Hallo,
mit folgendem Source sollte das Kopieren aus einem Memo nicht mehr möglich sein.
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ClipBrd, AppEvnts;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    ApplicationEvents1: TApplicationEvents;
    procedure ApplicationEvents1Deactivate(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Memo1Exit(Sender: TObject);
  private
    { Private-Deklarationen }
    FWndProc : TWndMethod;
    procedure MemoWndProc(var Msg: TMessage);
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ApplicationEvents1Deactivate(Sender: TObject);
begin
  ClipBoard.Clear; // Anwendungsübergreifendes kopieren verhindern
end;

procedure TForm1.MemoWndProc(var Msg: TMessage);
begin
  if Msg.Msg = WM_GETTEXT then
    begin
    Msg.Result := 1;
    end
      else FWndProc(Msg); // alte Fensterproceure aufrufen
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FWndProc := Memo1.WindowProc; // alte Fensterproceure merken
  Memo1.WindowProc := MemoWndProc; // Fensterproceure auf eigene Fensterprocedure umbiegen
end;

procedure TForm1.Memo1Exit(Sender: TObject);
begin
  ClipBoard.Clear; // Anwendungsinternes kopieren verhindern
end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#23
  Alt 6. Mai 2003, 07:34
Zitat von Jens Schumann:
Delphi-Quellcode:
procedure TForm1.Memo1Exit(Sender: TObject);
begin
  ClipBoard.Clear; // Anwendungsinternes kopieren verhindern
end;
Und was ist mit dem Inhalt der Zwischenablage, der aus eien anderen Programm stammt? Den verliere ich nämlich wenn ich deinen Code verwende.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#24
  Alt 6. Mai 2003, 07:46
Hallo
Zitat von Luckie:
Und was ist mit dem Inhalt der Zwischenablage, der aus eien anderen Programm stammt? Den verliere ich nämlich wenn ich deinen Code verwende.
Ja, das stimmt.
Wenn Du etwas aus einer anderen Anwendung in die eigene Anwendung kopieren willst und beim aktivieren der eigenen Anwendung Memo1 den Focus hat, dann lasse Memo1OnExit einfach weg, wenn Du den Inhalt der ZwA nicht in Memo1 kopieren möchtest.
Wenn Du aus Deiner Anwendung etwas in eine andere Anwendung kopieren möchtest, aber nur nicht aus Memo1 dann schreibe folgendes
Delphi-Quellcode:
procedure TForm1.ApplicationEvents1Deactivate(Sender: TObject);
begin
  If ActiveControl=Memo1 then
    ClipBoard.Clear; // Anwendungsübergreifendes kopieren verhindern
end;
  Mit Zitat antworten Zitat
Benutzerbild von Specialwork
Specialwork

Registriert seit: 10. Jan 2003
Ort: Schwall
71 Beiträge
 
Delphi 8 Professional
 
#25
  Alt 6. Mai 2003, 09:56
Hallo Dopeline,

Im Anhang findest Du ein Demoprojekt, das Dir ein wenig weiterhelfen wird.

Gruß, Tom

Angehängte Dateien
Dateityp: zip d6_deactivate_copy__cut_and_paste.zip (241,6 KB, 3x aufgerufen)
Thomas van Veen
Es gibt keine Probleme, nur Lösungen, auf die man nicht gleich kommt !
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#26
  Alt 6. Mai 2003, 10:37
Ich habe den Thread nicht mitverfolgt, aber es hat mich gerade mal in den Fingern gejuckt. Anbei eine kleine Komponente, welche wie das TMemo ist, allerdings copy, cut & paste nicht zulässt. Wenn es passt: schön; wenn nicht: na ja

Delphi-Quellcode:
unit NoCopyMemo;

interface

uses
  Windows, Messages, StdCtrls;

type
  TNoCopyMemo = class(TMemo)
  private
    procedure WMCOPY(var Msg: TWMCopy); message WM_COPY;
    procedure WMCUT(var Msg: TWMCut); message WM_CUT;
    procedure WMPASTE(var Msg: TWMPaste); message WM_PASTE;
    procedure WMGETTEXT(var Msg: TWMGetText); message WM_GETTEXT;
  end;

implementation

{ TNoCopyMemo }

procedure TNoCopyMemo.WMCOPY(var Msg: TWMCopy);
begin
  Msg.Result := -1;
end;

procedure TNoCopyMemo.WMCUT(var Msg: TWMCut);
begin
  Msg.Result := -1;
end;

procedure TNoCopyMemo.WMGETTEXT(var Msg: TWMGetText);
begin
  if Msg.TextMax >= 5 then
    StrPCopy(Msg.Text, 'doch')
  else
    Msg.TextMax := 5;
  Msg.Result := -1;
end;

procedure TNoCopyMemo.WMPASTE(var Msg: TWMPaste);
begin
  Msg.Result := -1;
end;

end.
......

P.S. Damit sind auch die Funktionen des Kontextmenüs inaktiv - auch wenn diese noch angezeigt werden. Das Kopieren und ähnliches läuft i.A. über entsprechende Windowsmessages, welche einfach abgefangen werden können.
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#27
  Alt 6. Mai 2003, 10:39
Hallo Sakura,
damit ist aber nocht nicht das WM_GETTEXT Problem gelöst.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#28
  Alt 6. Mai 2003, 10:43
Hi Jens,

ich sag doch, habe nicht alles durchgelesen. Gehts jetzt? Ich habe obiges Beispiel einfach mal angepasst und frech "doch" zurückliefern lassen

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 06:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz