![]() |
Form reagiert nicht auf Sender in der procedure onkeypress
Ich habe ein seltsames Problem. Bei der Routine onkeypress des Formulars möchte ich je nach Sender eine andere Routine abarbeiten. Aber der Sender (Absender) wird nicht erkannt, also z.b. if sender =maskedit1 then... wird schlicht übergangen. Gibt's irgendeine Einstellung, die vielleicht falsch ist? Gelegentlich (bei anderen Routinen in kleinen Testprogrammen) hat diese Anweisung funktioniert.
|
Du musst die Eigenschaft KeyPreview des Forms auf True setzen.
|
die Eigenschaft keypreview ist auf true. Funktioniert trotzdem nicht.
|
Ich verstehe nicht, wie das funktionieren soll. Der Sender, der bei einem OnClick-Ereignis übergeben wird, ist doch immer das Objekt, auf das geklickt wurde. Das ist in diesem Fall immer das Formular, so daß es meiner Meinung nach gar keinen Sinn macht, den Sender mit irgendeinem Objekt zu vergleichen. Oder sehe ich das falsch?
|
Oops, ich glaube ich habe da was überlesen. Wenn es Dir um den Sender geht, so müsste dieser im Form1.OnKeyPress immer das Form sein, da dessen Eireignisschleife dieses Ereignis feuert. Erst die Handler für die einzelnen Objekte setzen den Sender entsprechend. Versuch mal den aktuellen "Sender-Möchte-Ich" über Form1.ActiveControl zu ermitteln.
|
danke für die Tips. Tatsächlich ist immer das Formular Sender, wenn ich den Sender abfrage. Da bin ich völlig schief gelegen und habe das falsch verstanden... Wozu dient denn eigentlich diese Abfrage nach dem Sender?
|
Die Abfrage nach dem Sender wird in dem Moment interessant, wenn man mehreren Objekten die gleiche Ereignisroutine zuweist. Z.B.: Du hast mehrere Editfelder, wo die Werte numerisch sein müssen dann kannst Du folgendes im OnExit Ereignis machen
Delphi-Quellcode:
procedure Form1.NumEditOnExit(Sender: TObject);
begin if Sender is TEdit then try StrToInt(TEdit(Sender).Text); except ShowMessage('Der angegebene Wert ist nicht numerisch!'); TEdit(Sender).SetFocus; end end; |
klappt tatsächlich so. merci
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:43 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-2025 by Thomas Breitkreuz