Einzelnen Beitrag anzeigen

Benutzerbild von Danny92
Danny92

Registriert seit: 18. Aug 2014
55 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

Clipboard - Paste

  Alt 15. Aug 2015, 18:45
Wie bei den meisten üblichen Programmen, möchte ich auch in eines meiner Fenster in einem Editfeld Text aus der Zwischenablage mittels Strg+V hineinkopieren, im folgenden KeyDown-Ereignis der TEdit-Komponente:

Code:
procedure TForm1.EdEingabeKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  z: string;

begin
  if (Shift = [ssCtrl]) and (Key=ord('C')) then Clipboard.AsText:=EdEingabe.SelText else
  if (Shift = [ssCtrl]) and (Key=ord('X')) then begin
    Clipboard.AsText:=EdEingabe.SelText;
    z:=EdEingabe.Text;
    Delete(z, EdEingabe.SelStart+1, EdEingabe.SelLength);
    EdEingabe.Text:=z
  end else
  if (Shift = [ssCtrl]) and (Key=ord('A')) then EdEingabe.SelectAll else
  if (Shift = [ssCtrl]) and (Key=ord('V')) then
  begin
    {
    z:=EdEingabe.Text;
    //EdEingabe.Clear;
    Insert(Clipboard.AsText, z, EdEingabe.SelStart+1);
    EdEingabe.Text:=z
    }
  end
end;
Seltsamerweise habe ich nun inzwischen 2 verschiedene, mit Pascal implementierte Anwendungen, in denen beide Text in ein jeweiliges Editfeld mittels Strg-V wie gewollt aus der Zwischenablage eingefügt werden kann. Der Unterschied jedoch liegt darin, dass in einem der Anwendungen die Anweisungen auskommentiert wurden (siehe Code), der Paste-Vorgang jedoch trotzdem funktioniert, während, wenn ich in dem anderen Quellcode die entsprechende Stelle auskommentiere, logischerweise gar nichts passiert.
Warum ist das so?
Die drei Zeilen
Code:
z:=EdEingabe.Text;
Insert(Clipboard.AsText, z, EdEingabe.SelStart+1);
EdEingabe.Text:=z
sind in beiden Programmen komplett identisch!
Wenn ich in dem Fenster, in dem der Paste-Vorgang auch ohne diese Zeilen funktioniert, trotzdem reinschreibe, dann wird der Text aus der Zwischenablage doppelt in das Editfeld rein kopiert - einmal am Anfang des Editfelds und einmal an der Stelle EdEingabe.SelStart.
Hilfe...that's confusing?!

Geändert von Danny92 (15. Aug 2015 um 18:53 Uhr)
  Mit Zitat antworten Zitat