Forum: Sonstige Fragen zu Delphi
Delphi
by jbg,
12. Jun 2002
Ich optimiere den Code noch einmal :)
procedure EnterTab(Sender: TObject; var Key: Word; Shift: TShiftState;
ClassAus: array of TClass; ObjectAus: array of TObject;
bESC_Close: Boolean = True);
var
Mgs: TMsg;
//_____________________________KAPSELUNG
function ClassObjectAusschliessen: Boolean;
var
Forum: Sonstige Fragen zu Delphi
Delphi
by jbg,
12. Jun 2002
Während ich meine zweite Idee eingearbeitet habe, hat MrSpock gepostet.
Der Parameter Sender ist im TForm1.FormKeyDown immer Form1, außer du rufst die Methode selbst mit anderem Parameter auf, oder du weist einer anderen Komponente diese Methode als OnKeyDown-Ereignis zu. Meine Lösung mit ActiveControl habe ich sowie deine mit Sender überprüft. Meine funktioniert, bei deiner ändert sich...
Forum: Sonstige Fragen zu Delphi
Delphi
by jbg,
12. Jun 2002
Dann muss man einfach für jede Edit-Komponente die Ereignisbehandlungsroutine (EventHandler ist viel kürzer) auf dieselbe Methode setzen und nicht mehr über das FormKeyDown-Ereignis alle abfangen.
Oder man prüft mit Hilfe der Eigenschaft ActiveControl von TForm, welche Komponente gerade den Focus hat.
Z.B.:if (ActiveControl <> nil) and not (ActiveControl is TMemo) then
begin
{ hier den...
Forum: Sonstige Fragen zu Delphi
Delphi
by jbg,
12. Jun 2002
Ich möchte mich ja nicht einmischen, aber den Code von PaulJr kann man noch ein wenig vereinfachen (gleiches zusammenfassen).
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var Mgs: TMsg;
begin
case Key of
VK_RETURN, VK_TAB: begin // ENTER oder TAB-Taste erkannt
Key := 0;
Perform(WM_NextDlgCtl, ord(Shift = ), 0);
...