![]() |
Delphi 7 SynEdit - OnKeyDown - Ord('C') - löscht den Text .. soll aber Text kopieren
Hallo,
ich nutze die SynEdit Komponenten für Delphi. In der eigentlichen SynEdit Komponente fange ich ein OnKeyDown ab... Das Event löscht mir aber den Text, und kopiert nicht einfach. Woran kann das liegen ? Ich verwende folgenden Code:
Code:
procedure TFrame19.CopyButtonClick(Sender: TObject);
begin SynEdit1.CopyToClipboard; end; procedure TFrame19.SynEdit1KeyDown( Sender: TObject; var Key : Word; Shift : TShiftState); begin if ssCtrl in Shift then begin if key = Ord('C') then begin CopyButtonClick(Sender); exit; end; end; end; |
AW: Delphi 7 SynEdit - OnKeyDown - Ord('C') - löscht den Text .. soll aber Text kopie
Hallöle...8-)
Zitat:
SynEdit kann das von Haus aus...:wink: (Markieren des Textes vorausgesetzt) |
AW: Delphi 7 SynEdit - OnKeyDown - Ord('C') - löscht den Text .. soll aber Text kopie
Zitat:
Aber bei mir wird der Text gelöscht, und auch nicht kopiert, wenn ich den Code auskommentiere. |
AW: Delphi 7 SynEdit - OnKeyDown - Ord('C') - löscht den Text .. soll aber Text kopie
Unterschied D7 - Alexandria? :?
...auch bei einer Testform nur mit SynEdit drauf? |
AW: Delphi 7 SynEdit - OnKeyDown - Ord('C') - löscht den Text .. soll aber Text kopie
Zitat:
![]() Bis bald... Thomas |
AW: Delphi 7 SynEdit - OnKeyDown - Ord('C') - löscht den Text .. soll aber Text kopie
ja, habs mal getestet, indem ich Delphi und SynEdit neu installiert habe.
... geht ! irgendwie muss ich mir die Konfiguration zerschossen haben, nachdem ich versucht habe, SynEdit und andere Komponenten (wie Jedi, und Indy) mit der neuen Community Version von Delphi übersetzen und installieren wollte. So recht ist das noch nicht ausgefeilt mit so TestVersionen. Oder die Pakete ansich haben eine Public Platz, an dem alles abgelegt wird - egal was für eine Version vorliegt. Es war ja auch so, das ich die ToolsAPI in Delphi 20,21 verwendet habe, und die Quellen nicht gefunden habe, und dann einfach die Pfade von Delphi 7 übernommen hatte. Da kam dann der Fehler, das sich Variants.pas sich selbst beinhaltet - also so nen Quatsch. Nach verschwender-rischen 2 Stunden nach einer Lösung des Problems gesucht, weil ja auch die tollsten Sachen in StackOverflow angeboten werden ... ... mal eine Neuinstallation gemacht. Und siehe da, es geht. Uff, Wochende gerettet. |
AW: Delphi 7 SynEdit - OnKeyDown - Ord('C') - löscht den Text .. soll aber Text kopie
Wozu das Exit?
Und nun rate mal, warum das Eine ein VAR-Parameter ist. :zwinker:
Delphi-Quellcode:
if (Key = Ord('C')) and (ssCtrl in Shift) then begin
CopyButtonClick(Sender); Key := 0; end; |
AW: Delphi 7 SynEdit - OnKeyDown - Ord('C') - löscht den Text .. soll aber Text kopie
Warum ist dieses Konstrukt bei Tastaturabfragen falsch.
Delphi-Quellcode:
Es kann zu einem Seiteneffekt führen, der schwer zu erkennen ist.
if (Key = Ord('B')) and (ssCtrl in Shift) then // falsch
begin mach was; end; if (Key = Ord('B')) and ((ssAlt in Shift) and (ssCtrl in Shift)) then begin mach was anderes end; Den "mach was anderes" wird hier nie aufgerufen. Besser ist die Abfrage mit:
Delphi-Quellcode:
if (Key = Ord('B')) and ([ssCtrl] = Shift) then // richtig
begin mach was; end; if (Key = Ord('B')) and ([ssAlt, ssCtrl] = Shift) then begin mach was anderes end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz