![]() |
Wie kann ich ein Return aus Memo entfernen?
Hallo und Hilfe!
Ich habe eine Anwendung, bei der sich auf der linken Fensterseite eine TMemo befindet, in die der Anwender ein Sql-Statement eingeben kann. Auf der rechten Seite wird dann das Ergebnis angezeigt. Nun soll die Query gestartet werden wie beim TOAD (Tool for Oracle Application Developer), d.h.: entweder mit F9 oder [Shift]+[Return] (ursprünglich [Strg]+{Return], aber egal!). Mein Problem: im Memo erzeugt der Return eine neue Zeile, bzw. wenn das Statement selektiert ist, wird es durch die Return-Eingabe überschrieben. Wie kann ich das verhindern? Habe schon im KeyDown bzw. KeyUp-Event herumprobiert, aber keinen Erfolg gehabt.
Delphi-Quellcode:
Was mach ich falsch?
procedure TForm1.Memo1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin IF ( Key = VK_F9 ) OR ( ( Shift = [ssShift] ) AND ( Key = VK_RETURN ) ) THEN BEGIN IF ( ( Shift = [ssShift] ) AND ( Key = VK_RETURN ) ) THEN // wie bekommt man nachtraeglich den Return wieder // aus dem Memo-Feld heraus ??? Key := VK_BACK; // Backspace fuehrt nicht zum gewuenschten Ergebnis // Routine zum Ausfuehren des SQL-Statements von Memo1 Form1.ExecSql; END; end; Gruß Gero |
Re: Wie kann ich ein Return aus Memo entfernen?
Di könntest ja mit
Delphi-Quellcode:
den Zeilenumbruch unterdrücken.
IF ( ( Shift = [ssShift] ) AND ( Key = VK_RETURN ) ) THEN Key := 0;
Wenn überhaupt keine Zeilenumbrüche in den Text reinsollen, dann könntest du ja auch die Eigenschaft WantReturns des Memo's auf False setzen. |
Re: Wie kann ich ein Return aus Memo entfernen?
Das 'Return' lässt sich in OnKeyPress unterdrücken:
Delphi-Quellcode:
Der Druck auf 'F9' ruft kein OnKeyPress hervor, dessen Behandlung ist also in OnKeyDown gut aufgehoben.
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin if (Key = Char(VK_RETURN)) and (GetKeyState(VK_SHIFT) < 0) then begin Key := #0; // DoSomething; end; end; MfG, Tryer |
Re: Wie kann ich ein Return aus Memo entfernen?
Hallo zusammen.
Ich danke Euch. Problem geloest. himitsu: funzt leider nicht - hatte ich schon versucht. Dropsden Danke :-) tryer: Excellent. Shift+Return im KeyPress, F9 im Up - laeuft. :hello: gero |
Re: Wie kann ich ein Return aus Memo entfernen?
Ist schon OK - aber wenn du 'ne Taste unterdrücken willst, dann macht sich Key := 0 (in OnKeyUp und OnKeyDown) und Key := #0 (in OnKeyPress) besser.
Ich hatte nur vergessen, das Return und einiges andere nicht über OnKeyUp und OnKeyDown geblockt werden können :? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:13 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