13. oktober 2003 - 13:48Der 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.
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.
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;
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;
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.