AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Tastaureingabe bei dyn. erstellter Form überwachen
Thema durchsuchen
Ansicht
Themen-Optionen

Tastaureingabe bei dyn. erstellter Form überwachen

Ein Thema von TeTSuO · begonnen am 3. Apr 2005 · letzter Beitrag vom 3. Apr 2005
Antwort Antwort
Seite 1 von 2  1 2      
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
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Tastaureingabe bei dyn. erstellter Form überwachen

  Alt 3. Apr 2005, 10:13
form.onkeypress:=keypressevent; das "form" muss natürlich deine selbst erstellte messagebox sein.
Lukas Erlacher
  Mit Zitat antworten Zitat
Benutzerbild von TeTSuO
TeTSuO

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

Re: Tastaureingabe bei dyn. erstellter Form überwachen

  Alt 3. Apr 2005, 10:17
Zitat von DGL-luke:
form.onkeypress:=keypressevent; das "form" muss natürlich deine selbst erstellte messagebox sein.
Hab ich doch mit

Delphi-Quellcode:
  with AMsgDialog do
    try
      ...
      OnKeyPress:=KeyPressEvent; //<------- Das hier funzt net
das iss ja das was net funzt
”Wer immer nur das tut was er schon kann, wird immer das bleiden was er schon ist”

DiaSchau
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#4

Re: Tastaureingabe bei dyn. erstellter Form überwachen

  Alt 3. Apr 2005, 10:24
versuchs doch mal mit
@OnKeyPress := @KeyPressEvent; sollte eigentlich klappen, allerdings bekommst du dann meines Wissens nach KEINE der PARAMETER mit, die eigentlich an OnKeyPress übergeben werden.

ciao, Philipp
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
Benutzerbild von TeTSuO
TeTSuO

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

Re: Tastaureingabe bei dyn. erstellter Form überwachen

  Alt 3. Apr 2005, 10:29
Zitat von c113plpbr:
versuchs doch mal mit
@OnKeyPress := @KeyPressEvent;
Jetzt kann ich zwar kompilieren aber die Procedur wird einfach übersehen (Breakpoint funzt net)
bei Tasteneingabe.
”Wer immer nur das tut was er schon kann, wird immer das bleiden was er schon ist”

DiaSchau
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#6

Re: Tastaureingabe bei dyn. erstellter Form überwachen

  Alt 3. Apr 2005, 10:31
Zitat von TeTSuO:
Zitat von c113plpbr:
versuchs doch mal mit
@OnKeyPress := @KeyPressEvent;
Jetzt kann ich zwar kompilieren aber die Procedur wird einfach übersehen (Breakpoint funzt net)
bei Tasteneingabe.
Nein, übersehen wird sie nicht, nur, wie schon gesagt, bekommst du keine parameter mit, d.h. Key ist immer 0, genauso wie Sender immer nil ist, du wirst also so nur erfahren, dass etwas gedrückt wurde, aber nicht was ...

ciao, Philipp
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
Benutzerbild von TeTSuO
TeTSuO

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

Re: Tastaureingabe bei dyn. erstellter Form überwachen

  Alt 3. Apr 2005, 10:35
Das ist aber nicht das was ich brauche weil ich abfragen muss ob Esc (#27) gedrückt wurde damit die MsgBox einen anderen wert zurückgibt. Danke trotzdem
”Wer immer nur das tut was er schon kann, wird immer das bleiden was er schon ist”

DiaSchau
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Tastaureingabe bei dyn. erstellter Form überwachen

  Alt 3. Apr 2005, 10:52
deine OnKeyPress-Procedure muss eine Methode sein (also eine Procedure die in einer Klasse ist). Dann kannst du die zuweisung auch ohne "@" machen. Im übrigen werden die Parameter schon mitgeliefert, da aber deine procedure vom falschen typ ist stehen die parameter an der falschen Stelle im speicher so das du nicht ran kommst (eventuell zerschießt du dadurch sogar was)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von TeTSuO
TeTSuO

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

Re: Tastaureingabe bei dyn. erstellter Form überwachen

  Alt 3. Apr 2005, 11:37
Zitat von SirThornberry:
deine OnKeyPress-Procedure muss eine Methode sein (also eine Procedure die in einer Klasse ist). Dann kannst du die zuweisung auch ohne "@" machen. Im übrigen werden die Parameter schon mitgeliefert, da aber deine procedure vom falschen typ ist stehen die parameter an der falschen Stelle im speicher so das du nicht ran kommst (eventuell zerschießt du dadurch sogar was)
Wie kann ich das am einfachsten programmieren ohne jetz großartig viel zu ändern
”Wer immer nur das tut was er schon kann, wird immer das bleiden was er schon ist”

DiaSchau
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#10

Re: Tastaureingabe bei dyn. erstellter Form überwachen

  Alt 3. Apr 2005, 12:04
Zitat von TeTSuO:
Zitat von SirThornberry:
deine OnKeyPress-Procedure muss eine Methode sein (also eine Procedure die in einer Klasse ist). Dann kannst du die zuweisung auch ohne "@" machen. Im übrigen werden die Parameter schon mitgeliefert, da aber deine procedure vom falschen typ ist stehen die parameter an der falschen Stelle im speicher so das du nicht ran kommst (eventuell zerschießt du dadurch sogar was)
Wie kann ich das am einfachsten programmieren ohne jetz großartig viel zu ändern
Eine Klasse erstellen für dein Form. Im Public-Bereich werden dann alle Procedures und FUnktionen, die etwas mit deinem neuen Form machen deklariert, außerdem musst du deine Prozeduren so definieren:

Delphi-Quellcode:
proecedure TMeinNeuesFormMitEigenerKlasse.MeineProzedur(var EinIntegerParameter: integer);
begin
// hier Code hin
end;
Du solltest aber schon ein wenig Vorkentnisse in OOP haben, die du hier kriegen kannst
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:33 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