Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Wie kann ich ein Return aus Memo entfernen? (https://www.delphipraxis.net/20149-wie-kann-ich-ein-return-aus-memo-entfernen.html)

geronilsmo 14. Apr 2004 08:30


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:
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;
Was mach ich falsch?

Gruß
Gero

himitsu 14. Apr 2004 08:56

Re: Wie kann ich ein Return aus Memo entfernen?
 
Di könntest ja mit
Delphi-Quellcode:
IF ( ( Shift = [ssShift] ) AND ( Key = VK_RETURN ) ) THEN Key := 0;
den Zeilenumbruch unterdrücken.


Wenn überhaupt keine Zeilenumbrüche in den Text reinsollen, dann könntest du ja auch die Eigenschaft WantReturns des Memo's auf False setzen.

Tryer 14. Apr 2004 09:27

Re: Wie kann ich ein Return aus Memo entfernen?
 
Das 'Return' lässt sich in OnKeyPress unterdrücken:
Delphi-Quellcode:
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;
Der Druck auf 'F9' ruft kein OnKeyPress hervor, dessen Behandlung ist also in OnKeyDown gut aufgehoben.

MfG,
Tryer

geronilsmo 14. Apr 2004 09:59

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

himitsu 14. Apr 2004 10:33

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