AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi KeyPress unter Form2 funktioniert nicht.

KeyPress unter Form2 funktioniert nicht.

Ein Thema von akurka · begonnen am 10. Mai 2014 · letzter Beitrag vom 24. Mai 2014
Antwort Antwort
Seite 1 von 4  1 23     Letzte » 
Benutzerbild von akurka
akurka

Registriert seit: 30. Dez 2008
Ort: Schweiz, 8636 Wald ZH
81 Beiträge
 
Delphi 7 Personal
 
#1

KeyPress unter Form2 funktioniert nicht.

  Alt 10. Mai 2014, 15:58
Bin schon länger am suchen, kann mir jemand helfen ?

Die Methode Form1KeyPress funktioniert im Form1 problemlos.

Nach dem umschalten auf Form2 (Focus ist aktiv auf Form2) funktioniert die Methode Form2KeyPress nicht.
KeyPreview ist hier auch true.
Das Umschalten von Form1 zu Form2 wird gestartet mit Button1 auf
Form1. Ist das vielleicht ein Problem ?

Das Button1 startet eine neue Unit mit Form2.
Gelbe screen ist in Form2.Image2.
Das angehängte Bild zeigt die beiden Formulare, beim Form2 ist keine Tasteneingabe möglich. Warum ?
Miniaturansicht angehängter Grafiken
keypressproblem.jpg  
Anton Kurka
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.014 Beiträge
 
Delphi 12 Athens
 
#2

AW: KeyPress unter Form2 funktioniert nicht.

  Alt 10. Mai 2014, 18:27
Ist das Form2KeyPress auch dem OnKeyPress der Form2 zugewiesen?


Es gibt zwar ein paar Komponenten, welche die Events/Messages abfangen, bevor sie bei der Form ankommen, aber die sind recht selten.
Vorallem einige ActiveX-Komponenten betrifft das und am Liebsten machen welche von Adobe solch einen Mist.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (10. Mai 2014 um 18:31 Uhr)
  Mit Zitat antworten Zitat
vagtler

Registriert seit: 9. Jul 2010
Ort: Köln
667 Beiträge
 
Delphi 2010 Professional
 
#3

AW: KeyPress unter Form2 funktioniert nicht.

  Alt 10. Mai 2014, 18:29
Was heißt "funktioniert nicht"? Ist das Ereignis überhaupt verdrahtet? Kommt eine Fehlermeldung? Passiert gar nichts? Was sagt der Debugger? Wo ist der Quellcode? Wieso muss man sowas den Leuten immer aus der Nase ziehen? Was bedeutet "Das Umschalten von Form1 zu Form2 wird gestartet mit Button1 auf Form1."? Wie wird Form2 erzeugt? Warum werden Komponenten nicht vernünftig benannt?
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#4

AW: KeyPress unter Form2 funktioniert nicht.

  Alt 10. Mai 2014, 19:45
Wozu brauchst du das KeyPress-Event überhaupt?
Man kann z.B. auch eine ActionList mit Actions befüllen und jeder Action einen Shortcut (z.B. Funktionstasten) zuweisen.
Im Objektinspektor kann man dann bei Button und Menueitems eine Action eintragen und kann somit die Anwendung per Mausklick und per Tastatur bedienen ohne eine einzige Codezeile dafür geschrieben zu haben.
Man muss nur das OnExecute-Event der Actions befüllen - andernfalls sind die verknüpften Buttons/Menueitems deaktiviert.

http://www.entwickler-ecke.de/topic_...st_1662,0.html
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von akurka
akurka

Registriert seit: 30. Dez 2008
Ort: Schweiz, 8636 Wald ZH
81 Beiträge
 
Delphi 7 Personal
 
#5

AW: KeyPress unter Form2 funktioniert nicht.

  Alt 10. Mai 2014, 23:42
Der Quellcode ist sehr umfangreich, darum wollte ich niemand damit belästigen.
Mit dem Debugger wurde getestet, das Event wurde gar nicht ausgelöst
(breakpoint nicht erreicht im Form2KeyPress).
Ausserdem zeige ich der Zustand vom Zchg = Kopie von key am Display.
Umschalten von Form1 auf Form2 passiert folgendenmassen :
Der Button1 startet zuerst RS232 und damit kommen Meldungen von der CNC ( die sind auch sichtbar
auf dem Monitor (rote Zeichen unten). Wird eine bestimmte Meldung (genau die, welche beginnt mit 04)
empfangen (siehe Fehler Zeile) wird eine Procedur(MAN) in unit NCAS00 aufgerufen.
In der unit NCAS00 ist auch die Form2 deklariert, der ganze Aufbau von REF/MAN Menue wird unter
klasse Form2.Image2 gemacht, alle Anzeigen funktionieren laufend, nur das event für Form2KeyPress kommt beim Tastendruck nicht.
Bevor der Button1 aktiviert wurde, läuft programm in Wartestellung (siehe blaue Bildschirm oben)wo die Grafik in Form1.Image1 aufgebaut wurde. Hier gibt es methode Form1KeyPress die problemlos funktioniert .Form1KeyPress und Form2KeyPress sind praktisch
gleich aufgebaut: Zchg ist globale var typ Char.

procedure TForm2.Form2KeyPress(Sender: TObject; var Key: Char);
begin
Zchg := Key;
end;

resp.

procedure TForm1.Form1KeyPress(Sender: TObject; var Key: Char);
begin
Zchg := Key;
end;

Ich vermute das es etwas zu tun hat mit dem Button1 erreignis.
Wenn das Menue MAN/REF aufgebaut ist, ist der Focus auf die Form2 (das sieht man auf dem Screen).
Da sollte der KeyPress funzen, tut es aber nicht!
Ich verwende nur Standart Delphi7 Komponenten, für die RS232 dann die WinAPI Funktionen.
Ich denke ,dass sollte als Erklärung reichen, falls jemand mehr will gebe ich gern Auskunft.
Anton Kurka
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 4. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#6

AW: KeyPress unter Form2 funktioniert nicht.

  Alt 11. Mai 2014, 00:05
Hallo,

wenn Du mal das Form2 öffnest und Dir dann im OI die Eigenschaft KeyPreview bzw. das Ereignis OnKeyPress ansiehst, was steht denn da?
Ist dort wirklich: KeyPreview True, OnKeyPress Form2KeyPress? Irgendwie liest sich das, als ob per Copy/Paste Code dupliziert wurde, aber der Event nicht zugewiesen wurden.

Gruß
Volker Zeller
  Mit Zitat antworten Zitat
Benutzerbild von akurka
akurka

Registriert seit: 30. Dez 2008
Ort: Schweiz, 8636 Wald ZH
81 Beiträge
 
Delphi 7 Personal
 
#7

AW: KeyPress unter Form2 funktioniert nicht.

  Alt 11. Mai 2014, 09:34
Hallo
Ja KeyPreview ist im Oi gesetzt. das war das erste was ich gecheckt habe.Irgend etwas stimmt nicht mit dem Focus auf Form2. Das Form2 Fenster ist zwahr aktiv abe lässt sich nicht
mit der Maus bewegen. Form1 Fenster ist inaktiv (oben grau)
und lässt sich ebenfalls nicht mehr bewegen.
Vermutlich verstehe ich das nicht richtig wie das mit dem parent resp child funktioniert.
Bevor der Button1 aktiviert wurde konnte das form1 bewegt werden.
Ich sende Dir die Unit NCAS00 und NCAS30,in der procedur MAN wird das Menue MAN/REF aufgebaut. Da diese Units ursprünglich
von MS-Pascal Modulen stammen, ist dort noch viel auskomentiert.
Gestartet wird MAN durch das der Status.CNC.ZBETR (globale var (record)) wert 8 hat.Diese Record beinhaltet Meldunge
der von der rs232 eingelesen wurde.
Ich bin gespannt was Du dazu meinst.Vielen Dank.
Falls dich interessiert für was das ganze: http://www.antonkurka.ch/KurkaAGSeiten/Kurka_AG.htm
mfg Anton
Angehängte Dateien
Dateityp: pas NCAS00.pas (4,4 KB, 5x aufgerufen)
Dateityp: pas NCAS30.pas (6,7 KB, 4x aufgerufen)
Anton Kurka
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.014 Beiträge
 
Delphi 12 Athens
 
#8

AW: KeyPress unter Form2 funktioniert nicht.

  Alt 11. Mai 2014, 11:31
Gibt es vieleicht eine Exception, oder ein anderes Fenster, welches sich hinter den Fenstern versteckt und den Fokus wegschnappt? (ShowModal)

Wenn man Screen.OnActiveFormChange und Screen.OnActiveControlChange verwendet, dann kann man irgendwo loggen, wie und wo der Fokus umherwandert,
bzw. mit Screen.ActiveCustomForm und Screen.ActiveControl kann man auch im Debugger die aktuelle Position anzeigen lassen.

Zitat:
Delphi-Quellcode:
procedure TForm2.Form2KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
Taste:= Key;
  Refresh;
  Key:= 0;
  Label1.Caption:= IntToStr(Key);
end;
Ich weiß zwar nicht was Taste ist, aber im Label1 wird bestimmt nicht Ordentliches angezeigt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (11. Mai 2014 um 12:00 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von akurka
akurka

Registriert seit: 30. Dez 2008
Ort: Schweiz, 8636 Wald ZH
81 Beiträge
 
Delphi 7 Personal
 
#9

AW: KeyPress unter Form2 funktioniert nicht.

  Alt 11. Mai 2014, 12:13
Hallo Frank
Die Taste ist von Typ Word. Das mit dem TForm2.Form2KeyDown war ein Versuch (der auch nicht mit refresh funktioniert hat), ich möchte lieber aber die TForm2.Form2KeyPress verwenden, weil es key als Char liefert, dies kopiert in Zchg:char kann ich direkt Anzeigen und verwerten.
Die RS232 funktioniert jetzt tadellos, allerdings
mit der RSCOM version (benützt auch direkt WinAPI).
Komischeweise war die davon abgeleitete DLL Version viel langsammer, was auch die Unterbrüche beim Empfang ausgelöst hat.
Dein SimpleComPort konnte ich bis jetzt nicht einsetzen (obwohl es mir besser gefallen hat) weil es beim OPENCOM in Exception ging.
Dagegen habe ich festgestellt bei der RSCOM version das
beim OPENCOM Exceptionen gar nicht abgefangen werden, egentlich
sträflich, aber es funktioniert. Trotzdem wäre ich froh
Deine Version zu verwenden.
Gruss Anton
Angehängte Dateien
Dateityp: pas RSCOM.PAS (5,5 KB, 3x aufgerufen)
Anton Kurka
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.123 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: KeyPress unter Form2 funktioniert nicht.

  Alt 11. Mai 2014, 12:26
Das Form2 Fenster ist zwahr aktiv abe lässt sich nicht
mit der Maus bewegen.
Dann Fehlt ein Application.Processmessages weil sicherlich eine Routine nicht Event-gesteuert auf ein Ergebnis wartet.
Ein Windows Programm reagiert "nur", wenn Du auch in die Application Message-Routine zurückspringst.

Mavarik
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 13:29 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