AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Enter wie bei OnKeyDown im Edit abfangen...
Thema durchsuchen
Ansicht
Themen-Optionen

Enter wie bei OnKeyDown im Edit abfangen...

Ein Thema von Dark Templar · begonnen am 25. Aug 2004 · letzter Beitrag vom 31. Aug 2004
Antwort Antwort
Dark Templar

Registriert seit: 11. Jul 2004
20 Beiträge
 
#1

Enter wie bei OnKeyDown im Edit abfangen...

  Alt 25. Aug 2004, 15:21
Ich will, dass ein bestimmter code ausgeführt wird, wenn der User in meinem Edit-Control die Eingabetaste drückt, so wie beim VCL OnKeyDown Event.

Die Message dazu wäre ja WM_KEYDOWN, aber wie muss ich die einsetzen, um auch wirklich nur die eingaben in dem bestimmten control abzufangen?
It's not a bug - it's a feature!

Check out www.darktemplar.npx.de
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Enter wie bei OnKeyDown im Edit abfangen...

  Alt 25. Aug 2004, 15:59
Im OnKeyPress schauen, ob Key=#13 und los geht's.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#3

Re: Enter wie bei OnKeyDown im Edit abfangen...

  Alt 25. Aug 2004, 16:19
WinAPI!!!
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4

Re: Enter wie bei OnKeyDown im Edit abfangen...

  Alt 25. Aug 2004, 16:28
Die WinApi braucht man für so was nun wirklich nicht. Wie Toxman schreibt : Im OnKeyPress abfangen !
Gruß
Hansa
  Mit Zitat antworten Zitat
Dark Templar

Registriert seit: 11. Jul 2004
20 Beiträge
 
#5

Re: Enter wie bei OnKeyDown im Edit abfangen...

  Alt 25. Aug 2004, 17:03
Ähem... könnten sich die VCL Junkies mal bitte da heraushalten?
Das Edit-Control, dass mit der WinAPI erstellt wurde, ist in keiner Klasse wie TEdit zusammengefasst, demzufolge kann ich auch nicht auf Notification-Properties zurückgreifen.
It's not a bug - it's a feature!

Check out www.darktemplar.npx.de
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Enter wie bei OnKeyDown im Edit abfangen...

  Alt 25. Aug 2004, 20:10
Du musst das Edit Subclassen:
Delphi-Quellcode:
function EditWndProc(hEdit, uMsg, wParam, lParam: DWORD): DWORD; stdcall;
begin
  Result := 0;
  case uMsg of
    WM_CHAR:
      case Byte(wParam) of
        Byte('0')..Byte('9'),
          Byte(','), VK_DELETE,
          VK_BACK:
          CallWindowProc(OldWndProc, hEdit, uMsg, wParam, lParam);
      end;
  else
    Result := CallWindowProc(OldWndProc, hEdit, uMsg, wParam, lParam);
  end;
end;
OldWndProc := Pointer(SetWindowLong(GetDlgItem(hWnd, 103), GWL_WNDPROC, Integer(@EditWndProc))); Obiges Fensterprozedur läst nur Ziffern in einem Edit zu.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#7

Re: Enter wie bei OnKeyDown im Edit abfangen...

  Alt 25. Aug 2004, 20:17
Hier werden Sie geholfen
Gruß
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Dark Templar

Registriert seit: 11. Jul 2004
20 Beiträge
 
#8

Re: Enter wie bei OnKeyDown im Edit abfangen...

  Alt 27. Aug 2004, 12:35
thx
It's not a bug - it's a feature!

Check out www.darktemplar.npx.de
  Mit Zitat antworten Zitat
Dark Templar

Registriert seit: 11. Jul 2004
20 Beiträge
 
#9

Re: Enter wie bei OnKeyDown im Edit abfangen...

  Alt 31. Aug 2004, 15:22
Ich hab jetzt einen extra Typen für das EditControl entworfen, bei dem die WndProc als private deklariert wurde.

Der constructor soll nun die alte Proc auf die neue umstellen, was dann in etwa so aussehen sollte:

FOldWndProc:= Pointer(SetWindowLong(FHandle, GWL_WNDPROC, Integer(@Self.WndProc))); Der Compiler meckert jetzt herum, weil er eine Variable beim dritten Parameter erwartet. Aber warum erkennt er die klasseninterne Funktion nicht an?
It's not a bug - it's a feature!

Check out www.darktemplar.npx.de
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#10

Re: Enter wie bei OnKeyDown im Edit abfangen...

  Alt 31. Aug 2004, 15:32
Das lässt sich einfach erklären du kannst nur globale Funktionen (mit eindeutigen Adressen) verwenden. Schau dir mal die funktion allocatehWnd von Delphi an.

Diese erzeugt für eine Objekt-Funktion eine eindeutige Speicheradresse.
Somit ist es möglich dass 2 Objekte (mit Fenster) initialisiert werden
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:15 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