Avatar billede klasker Nybegynder
13. oktober 2003 - 13:48 Der er 6 kommentarer og
1 løsning

Kan man forhindre paste funktionen?

Jeg laver et komponent der nedarver fra TRichEdit og jeg vil gerne selv bestemme hvad der sker når man paster noget ind i den.
Jeg har skrevet KeyDown proceduren om sådan:

uses Clipbrd;

procedure TSyntaxEdit.KeyDown(var Key: Word; Shift: TShiftState);
var
  s: string;
  Clip: TClipboard;
begin
  if (Key = Word('V')) and (ssCtrl in Shift) and Enabled and not ReadOnly then
    begin
      Clip := Clipboard;
      s := Clip.AsText;
      SelText := s;
    end
  else
    inherited KeyDown(Key, Shift);
end;

Men når jeg paster noget ind i den kommer det bare frem to gange. Jeg kan godt selv regne ud hvorfor der gør det, men hvordan forhindrer jeg det?

Hvorfor fanden vil jeg gerne ændre på Paste funktionen? Jo, for hvis du prøver at paste noget ind fra Internet Explorer i en TRichEdit finder du vist ud af hvorfor.
Avatar billede Slettet bruger
13. oktober 2003 - 14:02 #1
Prøv at skrive Exit; efter SelText := s;
Avatar billede klasker Nybegynder
13. oktober 2003 - 14:18 #2
Jeg kan ikke se hvad det skulle gøre godt for. Der står jo else foran inherited, så SelText := s; vil være det sidste der bliver udført ligemeget hvad.
Avatar billede klasker Nybegynder
13. oktober 2003 - 14:18 #3
PS. Jeg prøvede alligevel da du jo plejer at have ret, men det virkede ikke :(
Avatar billede athlon-pascal Juniormester
13. oktober 2003 - 17:32 #4
Måske det her (ikke testet):

procedure TSyntaxEdit.KeyDown(var Key: Word; Shift: TShiftState);
var
  s: string;
  Clip: TClipboard;
begin
  if (Key = Word('V')) and (ssCtrl in Shift) and Enabled and not ReadOnly then
    begin
      Clip := Clipboard;
      s := Clip.AsText;
      SelText := s;
      Key := 0;
    end
  else
    inherited KeyDown(Key, Shift);
end;
Avatar billede athlon-pascal Juniormester
13. oktober 2003 - 17:40 #5
Det er nu testet, og derfor et svar :-)
Avatar billede athlon-pascal Juniormester
13. oktober 2003 - 17:43 #6
I øvrigt er der ingen grund til alle de omveje:

procedure TSyntaxEdit.KeyDown(var Key: Word; Shift: TShiftState);
begin
  if (Key = Word('V')) and (ssCtrl in Shift) and Enabled and not ReadOnly then
    begin
      SelText := Clipboard.AsText;
      Key := 0;
      Exit;
    end;
  inherited KeyDown(Key, Shift);
end;
Avatar billede klasker Nybegynder
14. oktober 2003 - 10:20 #7
Tak for hjælpen, det virker perfekt :D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester