AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Behandlung von RETURN im Memo Feld

Ein Thema von raena · begonnen am 17. Jul 2008 · letzter Beitrag vom 17. Jul 2008
Antwort Antwort
raena

Registriert seit: 30. Dez 2007
124 Beiträge
 
#1

Behandlung von RETURN im Memo Feld

  Alt 17. Jul 2008, 15:56
Hallo,

ich komme einfach nicht drauf. Ich benutze ein Memo Feld bei dem mit CTRL-Enter eine Aktion
erfolgreich ausgeführt wird.
Wir kann ich verhindern, dass das Drücken von CTRL-Enter einen Wagenrücklauf und Zeilenvorschub erzeugt? Ich habe es probiert mit:
Delphi-Quellcode:
unit Unit1;

interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ADODB, Grids, DBGrids, DB, StdCtrls, StrUtils, Menus, Tabs, DBTables,ShellAPI,
  ExtCtrls, COMObj, math, ExtDlgs;

type
  TForm1 = class(TForm)
    Mem_SQL_Input: TMemo;
  procedure EditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;


var
  Form1: TForm1;



implementation

{$R *.dfm}


procedure TForm1.EditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var i:integer;

begin

   if (Shift = [ssCtrl]) and (Key = ord(13)) then begin
     key :=0;
     showmessage('Crtl-Shift erkannt.');
     end;
     end;



     
procedure TForm1.formcreate(Sender: TObject);
begin
 Mem_SQL_Input.Text:='';
end;

end.
Aber leider ohne Erfolg. Danke.
  Mit Zitat antworten Zitat
Butch87

Registriert seit: 3. Mai 2007
70 Beiträge
 
#2

Re: Behandlung von RETURN im Memo Feld

  Alt 17. Jul 2008, 16:01
mach das ganze mal im OnKeyPress
  Mit Zitat antworten Zitat
Benutzerbild von Der.Kaktus
Der.Kaktus

Registriert seit: 22. Jan 2008
Ort: Erfurt
958 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Behandlung von RETURN im Memo Feld

  Alt 17. Jul 2008, 16:02
Hallo, nimm an stelle von 13 "#13"..geht prima
Gruss Kaki

Repeat Until true=false;
  Mit Zitat antworten Zitat
raena

Registriert seit: 30. Dez 2007
124 Beiträge
 
#4

Re: Behandlung von RETURN im Memo Feld

  Alt 17. Jul 2008, 16:09
mach das ganze mal im OnKeyPress
--------------------------------
da sagt er, dass die Methode or Property nicht kompatible sind. Das hab ich schon probiert.


Hallo, nimm an stelle von 13 "#13"..geht prima Wink
---------------------------------------------------
dann muss ich den Datentyp von key ändern. Danach kann ich die procedure nicht mehr als
event vom memo auswählen.
  Mit Zitat antworten Zitat
Relicted

Registriert seit: 24. Jan 2006
Ort: Iserlohn
646 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Behandlung von RETURN im Memo Feld

  Alt 17. Jul 2008, 16:10
Enter hat im KeyPress, wenn es "normal" gedrückt wird die #13 -> nimmt man Strg dazu kommt eine #10 raus. k.A. ob das ganze noch Nebenwirkungen hat. Bei meinem kurzen Test hat es funktioniert.

Delphi-Quellcode:
procedure TForm12.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
  if key = #10 then
    key := #0
end;
Zitat von Der.Kaktus:
Hallo, nimm an stelle von 13 "#13"..geht prima
Schonmal nem Word ne #13 zugewiesen?
Da kommt dann etwas was so heißt "Inkompatible Typen Word und Char".

Deine KeyDown Methode kannst du dann rausschmeißen.
Und nochwas zur Formatierung des Quelltexts: schrecklich!


Sähe das so nicht besser aus?

Delphi-Quellcode:
procedure TForm1.EditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
  i:integer;
begin
  if (Shift = [ssCtrl]) and (Key = ord(13)) then
  begin
    key :=0;
    showmessage('Crtl-Shift erkannt.');
  end;
end;
Gruß
Reli
  Mit Zitat antworten Zitat
Butch87

Registriert seit: 3. Mai 2007
70 Beiträge
 
#6

Re: Behandlung von RETURN im Memo Feld

  Alt 17. Jul 2008, 16:15
wieso wirdn da ne #10 draus?! kannste das mal bitte näher erklären...
  Mit Zitat antworten Zitat
Benutzerbild von Der.Kaktus
Der.Kaktus

Registriert seit: 22. Jan 2008
Ort: Erfurt
958 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Behandlung von RETURN im Memo Feld

  Alt 17. Jul 2008, 16:18
Zitat von Reli:
...
Zitat von Der.Kaktus:
Hallo, nimm an stelle von 13 "#13"..geht prima
Schonmal nem Word ne #13 zugewiesen?
Da kommt dann etwas was so heißt "Inkompatible Typen Word und Char".

Deine KeyDown Methode kannst du dann rausschmeißen.
Und nochwas zur Formatierung des Quelltexts: schrecklich!
...


Gruß
Reli
Ich schrieb "#13" als Ersatz fuer 13 im  Ord(..)
Gruss Kaki

Repeat Until true=false;
  Mit Zitat antworten Zitat
Relicted

Registriert seit: 24. Jan 2006
Ort: Iserlohn
646 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Behandlung von RETURN im Memo Feld

  Alt 17. Jul 2008, 16:23
Warum das so implementiert wurde kann ich dir nicht sagen. Ich kann dir nur sagen, dass es in der Windows und Unix Welt unterschiedliche "Zeilenumbrüche" gibt. In der Windowswelt ist es CRLF (Caridge Return Line Feed) also #13#10 -> in der Unix Welt reicht ein Line Feed aus. Scheinbar ist das Tastaturlayout dahingehend angepasst (evtl. nur im Windows?). Mehr kann ich dazu ned sagen und 100% sicher ist die Aussage nicht. Ist halt nur ne Vermutung.

Und wie ich das rausbekommen habe? Debuggen


Hups sorry Kaktus das hab ich so ned gedeutet!


Gruß
Reli
  Mit Zitat antworten Zitat
raena

Registriert seit: 30. Dez 2007
124 Beiträge
 
#9

Re: Behandlung von RETURN im Memo Feld

  Alt 17. Jul 2008, 16:28
@Relicted

vielen Dank, dein Vorschlag funktioniert einwandfrei. Woher kann man schon wissen, dass CTRL Enter
#10 ergibt Aber gut.

Vielen Dank, schönen Feierabend.


Delphi-Quellcode:
unit Unit1;

interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ADODB, Grids, DBGrids, DB, StdCtrls, StrUtils, Menus, Tabs, DBTables,ShellAPI,
  ExtCtrls, COMObj, math, ExtDlgs;

type
  TForm1 = class(TForm)
    Mem_SQL_Input: TMemo;


  procedure FormCreate(Sender: TObject);
procedure Mem_SQL_InputKeyPress(Sender: TObject; var Key: Char);

  private
    { Private declarations }
  public
    { Public declarations }
  end;


var
  Form1: TForm1;



implementation

{$R *.dfm}


procedure tform1.Mem_SQL_InputKeyPress(Sender: TObject; var Key: Char);
var i:integer;
begin

 if Key = #10 then begin
     key :=#0;
     showmessage('Crtl-Shift erkannt.');
     end;
     end;

procedure TForm1.formcreate(Sender: TObject);
begin
 Mem_SQL_Input.Text:='';
end;

end.
  Mit Zitat antworten Zitat
17. Jul 2008, 17:35
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "VCL / WinForms / Controls" verschoben.
Delphi-Frage
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 10:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz