AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi KeyDown: welches Zeichen steht hinter "Key"
Thema durchsuchen
Ansicht
Themen-Optionen

KeyDown: welches Zeichen steht hinter "Key"

Ein Thema von Helmi · begonnen am 19. Jan 2007 · letzter Beitrag vom 19. Jan 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.336 Beiträge
 
Delphi XE2 Professional
 
#1

KeyDown: welches Zeichen steht hinter "Key"

  Alt 19. Jan 2007, 01:56
Hallo,

bei OnKeyDown wird das gedrückte Zeichen in " Key: Word" angegeben.

Nur, wie komm ich im OnKeyDown an dieses Zeichen dran:

Mit "Chr(Key)" komm ich zwar dran, nur sind die daraus resulitierenden Zeichen immer groß geschrieben

Was mach ich falsch?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#2

Re: KeyDown: welches Zeichen steht hinter "Key"

  Alt 19. Jan 2007, 05:43
Das Verstaendnis der Vrogaenge ist falsch. Taste ist nicht Buchstabe.
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#3

Re: KeyDown: welches Zeichen steht hinter "Key"

  Alt 19. Jan 2007, 07:06
Moin!

So könnte man das machen:

Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
   Case Char(Key) of
      'A'..'Z': If (ssShift in Shift) then Label1.Caption:=Char(Key) else Label1.Caption:=LowerCase(Char(Key));
      '0'..'9': Label1.Caption:=LowerCase(Char(Key));
      '+', '-', '*', '/': Label1.Caption:=Char(Key);
      else Label1.Caption:='Nicht dabei :(';
   end;
end;
Über Sinn und Unsinn sag' ich lieber nix

Grüßle!
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.336 Beiträge
 
Delphi XE2 Professional
 
#4

Re: KeyDown: welches Zeichen steht hinter "Key"

  Alt 19. Jan 2007, 09:44
mmh,

dann hab ich ein Problem,

ich würd ja gerne OnKeyPress verwenden - nur dort erhalt ich z. B. die Entf-Taste nicht
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: KeyDown: welches Zeichen steht hinter "Key"

  Alt 19. Jan 2007, 10:08
Hallo,

wenn es dir um die Entf-Taste geht:

Delphi-Quellcode:
procedure TDemoForm.StringGridKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  with Sender as TStringGrid do
  begin
    case Key of
      VK_DELETE: Cells[Col, Row] := '';
      else Exit;
    end;
    Key := 0;
  end;
end;
Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.336 Beiträge
 
Delphi XE2 Professional
 
#6

Re: KeyDown: welches Zeichen steht hinter "Key"

  Alt 19. Jan 2007, 11:12
Hallo,

ich möcht mein Problem nochmal schildern - denn ich denke, dass ich es nicht wirklich richtig rübergebracht habe:

wie in meinem anderen Thread hervorgeht, will ich eine Zelle beim Tippen weiterspringen.

Das funktioniert auch bestens.

Dies mach ich im OnKeyPress so:
Delphi-Quellcode:
procedure TForm2.StringGridKeyPress(Sender: TObject; var Key: Char);
var
  Zeile : Integer;
  Spalte: Integer;

begin
  with StringGrid do
    begin
      //
      Zeile := Selection.Top;
      Spalte := Selection.Left;
      
      If (Key in [#13]) then
        exit;

      If Key = #8 then
        begin
          If (Pred(Spalte) > 0) then
            Spalte := Spalte - 1
          else
            If (Spalte = 1) and (Zeile > 1) then
              begin
                Zeile := Zeile - 1;
                Spalte := 40;
              end;

          StringGrid.Cells[Spalte, Zeile] := '';
          StringGrid.Col := Spalte;

          StringGrid.Row := Zeile;

          exit;
        end;

      If (Zeile > 0) and (Spalte > 0) then
        begin
          StringGrid.Cells[Spalte, Zeile] := Key;

          If Spalte < 40 then
            StringGrid.Col := Spalte + 1
          else
            If Zeile <= 3 then
              begin
                StringGrid.Col := 1;
                StringGrid.Row := Zeile + 1;
              end;
        end;
    end;
end;
Soweit so gut, es wird also jede Taste angenommen bis auf die Entertaste (#13).
Nur, soll neben der Entertaste auch auf die Entf-Taste, Tab-Taste geprüft werden, ob diese gedrückt wurden, wenn ja, dann die Procedure beenden.

Leider gibt Key in OnKeyPress für die entf und Tab-Taste nichts zurück, deshalb kann ich nicht einfach darauf prüfen.

Es würde im OnKeyDown funktionieren, nur da hab ich das Problem, dass Key kein Char ist und ich deshalb nicht weiss, welches Zeichen gedrückt wurde.
Ich brauch dies ja hier:
Delphi-Quellcode:
      If (Zeile > 0) and (Spalte > 0) then
        begin
          StringGrid.Cells[Spalte, Zeile] := Key; //<----
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: KeyDown: welches Zeichen steht hinter "Key"

  Alt 19. Jan 2007, 11:22
Ich dachte, du würdest in meinem Code erkennen, dass du auf virtual keys testen musst: VK_DELETE, VK_TAB, ...
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.946 Beiträge
 
Delphi 12 Athens
 
#8

Re: KeyDown: welches Zeichen steht hinter "Key"

  Alt 19. Jan 2007, 11:35
Ausser dem must du den Code Aufteilen.
Alle Steuerzeichen holst du dir aus dem Onkeydown
on alle anderen aus dem KeyPress
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.336 Beiträge
 
Delphi XE2 Professional
 
#9

Re: KeyDown: welches Zeichen steht hinter "Key"

  Alt 19. Jan 2007, 11:38
Zitat von marabu:
Ich dachte, du würdest in meinem Code erkennen, dass du auf virtual keys testen musst: VK_DELETE, VK_TAB, ...
Hallo Marabu,
das hab ich schon erkannt - nur leider löst dies nicht mein Problem.
Ich kann natürlich mit den viertual keys auf die "Sondertasten" prüfen, nur muss ich irgendwann auch mal das Key in die Zelle schreiben, nämlich hier:

Delphi-Quellcode:
If (Zeile > 0) and (Spalte > 0) then
        begin
          StringGrid.Cells[Spalte, Zeile] := Key; //<----
In OnKeyPress ist Key ein Char - also kein Problem, da wird das in die Zeile geschrieben, das ich auch gedrückt habe.
Nur im In KeyDown ist Key ein Word und kein Char und da funktioniert das nicht mehr wie im OnKeyPress.
Mit chr(Key) erhalt ich nur Schwachsinn.

Anders gesagt:
In OnKeyPress erhalt ich das Key als Char aber keine virtual keys
Im OnKeyDown erhalt ich zwar die virtual keys, aber Key nicht als char sondern als word
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#10

Re: KeyDown: welches Zeichen steht hinter "Key"

  Alt 19. Jan 2007, 12:00
Zitat von Helmi:
Mit chr(Key) erhalt ich nur Schwachsinn.
Was logisch ist, oder kennst du ein Symbol für die TAB oder DEL Taste? Es gibt keine - daher kannst du es schlecht als Zeichen ausgeben. Du könntest dir aber statt dessen einen String in das StringGrid eintragen (DEL, ESC, TAB, ...), weil das nunmal Steuercodes/-tasten sind. Es gibt nunmal keine Übersetzung in Zeichen.

Schreib doch mal lieber, warum du überhaupt das Zeichen in das StringGrid packen willst. Was ist der Sinn dahinter? Und warum trennst du nicht die Daten von der Oberfläche?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:06 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 by Thomas Breitkreuz