Einzelnen Beitrag anzeigen

Benutzerbild von TeTSuO
TeTSuO

Registriert seit: 26. Feb 2005
Ort: Ludwigshafen am Rhein
60 Beiträge
 
Delphi 7 Enterprise
 
#1

Tastaureingabe bei dyn. erstellter Form überwachen

  Alt 3. Apr 2005, 09:58
Hallo erastma

Wie kann ich bei einer dyn. erstellten Form das Ereignis OnKeyPress abfragen
mein Quelltext sieht folgendermasen aus:

Delphi-Quellcode:
interface
...

Function MsgBoxEx(Cap,Text: String;uType: Integer;
                  var appProperty: Boolean;appIniIdent,cbText: String):Integer;
Procedure KeyPressEvent(Sender: TObject; var Key: Char);

var
  AMsgDialog : TForm;

implementation

Function MsgBoxEx(Cap,Text: String;uType: Integer;
                  var appProperty: Boolean;appIniIdent,cbText: String):Integer;
// Eigene MessageBox mit CheckBox die Programmeinstellung anzeigt und setzt
// ------------------------------------------------------------------------
// Übergabewerte
// -------------
// Cap = Caption
// Text = Meldungstext
// uType = Erscheinung wie bei MessageBox
// appProperty = Programmeinstellung
// appIniIdent = unter welchem Eintrag wert in Ini speichern
// cbText = Text der CheckBox
//
// Rückgabewert
// ------------
// Je nach Benutzeraktion
var
  ACheckBox : TCheckBox;
Begin
  // Fenster mit Aussehen von MessageBox erstellen
  AMsgDialog := CreateMessageDialog(Cap, GetmtType(uType), Getbtns(uType));
  // CheckBox auf Fenster erstellen
  ACheckBox := TCheckBox.Create(AMsgDialog);
  with AMsgDialog do
    try
      // Tastatureingaben prüfen
      KeyPreview:=True;
      OnKeyPress:=KeyPressEvent; //<------- Das hier funzt net
      // kein Systemmenü für Form
      BorderIcons:=[];
      // Caption des Fensters auf Übergabewert
      Caption := Text;
      // Fenster vergrößern damit platz für Checkbox
      Height := 159;
      WITH ACheckBox DO
        // CheckBox konfigurieren
        BEGIN
          // Parent auf Fenster zuweisen
          Parent := AMsgDialog;
          // Text auf Übergabewert
          Caption := cbText;
          // an/aus auf Übergabewert
          Checked := appProperty;
          // positionieren
          top := 100;
          Left := 6;
        END;
      // Breite seperat auf Fenster setzten
      ACheckBox.Width := Width;
      // Fenster anzeigen auf Eingabe warten
      Result:=ShowModal;
      // Wenn "Ja","Nein" dann speichern
      if (Result = mrYes) or (ModalResult = mrNo) Then Begin
         appProperty:=ACheckBox.Checked;
         WriteIniB(appIniIdent,appProperty);
      End;
    Finally
      ACheckBox.Free;
      Free;
    End;
End;

Procedure KeyPressEvent(Sender: TObject; var Key: Char);
Begin
 // Wenn Esc bei Meldungsfenster Wert Cancel zurückgeben
 if Key=#27 then Begin
    AMsgDialog.ModalResult:=mrCancel;
    Close;
 End;
End;
”Wer immer nur das tut was er schon kann, wird immer das bleiden was er schon ist”

DiaSchau
  Mit Zitat antworten Zitat