Einzelnen Beitrag anzeigen

Delphimagnet

Registriert seit: 16. Sep 2004
16 Beiträge
 
Delphi 7 Enterprise
 
#1

Eingabefelder zur Laufzeit onKeyPress zuweisen

  Alt 21. Okt 2004, 08:19
Morgen,

Ich hab ein kleines Problem, allerdings komm ich grad auf keine Lösung.

Ich arbeite gerade ein einem Projekt das doch schon so an die 20 Forms enthält.
Unter diesen Forms befinden sich viele Suchmasken, also ein ganzer Dialog voller Input Felder und eine Suche kann gestartet werden in dem ich auf einen Suchenknopf drücke.

Jetzt hatte ich mir aber gedacht das ich das doch komfortabler machen könnte indem ich es dem Benutzer ermögliche durch einen Druck der Enter-Taste in jedem der Eingabefelder die Suche auszulösen.

Allerdings bin ich zu faul dazu für jeden TEdit oder TLabeledEdit ein eigenes onKeyPress zu schreiben das einfach nur prüft ob die gedrückte Taste "Enter" ist und dann die Suche-Funktion startet.

Also hab ich mir gedacht ich schreib eine kleine Funktion die mir alle Inputs auf der Form zusammen sucht und ihnen die entsprechende Funktion zuweist (prüfe auf Enter und dann Suche starten).

Delphi-Quellcode:
// Weist allen input Feldern auf der Sendernform (Dialog) ihre dazugehörige Suchenfunktion zu
procedure assignOnEnterSearch (Sender : TForm);
var
  iCompCount : integer;
  tmpComp : TComponent;


begin
  // Gehe alle Komponenten durch
  For iCompCount := Sender.ComponentCount-1 downTo 0 do
  begin
    tmpComp := Sender.Components[iCompCount];

    // Prüfe ob die Komponente ein Inputfeld ist
    if (tmpComp is TEdit) or (tmpComp is TLabeledEdit) then
    begin
      TCustomEdit(tmpComp).onKeyUp := {spätere Funktion};


    end;
  end;
end;
Jetzt erhalte ich allerdings immer die Nachricht (vom Compiler) das onKeyUp ein undefinierter Bezeichner ist.

Erster Gedanke: "Klar, da fehlt nur noch die entsprechende Unit beim Uses."

Also gleich mal nachgeschaut woher TCustomEdit seine Ereignisse erbt, von TWinControl.
Und das stammt aus der Unit Controls und das steht inzwischen in meinem Uses, aber immer noch die gleiche Compilermeldung.

Delphi-Quellcode:
uses SysUtils, Dialogs, StrUtils, DBTables, Variants, Math, records,
     Forms, StdCtrls, ExtCtrls, Classes, Controls;
Muss ich das anderst deklarieren oder hab ich sonst was übersehen?

Bin auch offen wenn irgendjemand ne Idee hat um das ganze Problem eleganter zu lösen...
  Mit Zitat antworten Zitat