AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Clipboard - Paste

Offene Frage von "Danny92"
Ein Thema von Danny92 · begonnen am 15. Aug 2015 · letzter Beitrag vom 15. Aug 2015
Antwort Antwort
Benutzerbild von Danny92
Danny92

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

Clipboard - Paste

  Alt 15. Aug 2015, 19: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 19:53 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.305 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Clipboard - Paste

  Alt 15. Aug 2015, 20:22
Wenn ich mich nicht sehr irre, beherrscht das TEdit Zwischenablage-Operationen bereits von Haus aus und verfügt auch über ein entsprechendes Kontextmenü. Von daher ist Dein Code nicht nur unnötig, sondern doppelt gemoppelt. Klappt es, wenn Du ihn mal komplett auskommentierst?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Danny92
Danny92

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

AW: Clipboard - Paste

  Alt 15. Aug 2015, 20:56
Ach!
Natürlich ziemlich dumm, wenn man den Tastendruck im OnKeyPress-Ereignis wieder abfängt:
Code:
procedure TForm1.EdGl1KeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in ['0'..'9','x','y','*','/','+','-','=',Char(VK_BACK),Char(VK_RETURN)]) then Key:=#0
  else if (Key=Char(VK_RETURN)) and (Length(EdGl2.Text)>0) then BtBerechnen.Click
end;
Und dies hatte ich in der anderen Form nicht, daher funktionierte der Paste-Befehl auch ohne mein manuelles Wiederhinzutun
Haach, ist das alles kompliziert

Ja, Auskommentieren hat geholfen, nur im falschen Ereignis
Vielen Dank!
  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 00:50 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