Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - TForm1.FormKeyPress Key:=Hotkey1.Hotkey
Premaider - Mo 27.02.12 16:53
Titel: TForm1.FormKeyPress Key:=Hotkey1.Hotkey
Hey Leute
Man setzt innerhalb der Form per Hotkey1 einen Hotkey. Sobald man Button1 drückt ändert sich sein tag auf 1.
So weit bin ich:
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin If ((Button1.Tag=1) and (Key=Hotkey1.HotKey)) Then Form1.close; end; |
Was ist daran falsch ?
Wie kann ich das lösen ?
€: Mein Informatiklehrer gab mir den Hinweiß das es nicht Char sein kann. Weil es mehrere Zeichen sind
Moderiert von
Narses: Topic aus Sonstiges (Delphi) verschoben am Mo 27.02.2012 um 16:35
Moderiert von
Martok: Quote- durch Delphi-Tags ersetzt
Tranx - Mo 27.02.12 17:00
Das stimmt. THotkey.Hotkey ist nicht CHAR, sondern TShortcut.
Premaider - Mo 27.02.12 17:11
Wenn ich TShortCut einsetze kommen diese Fehlermeldungen:
| Zitat: |
[Fehler] Unit1.pas(135): Deklaration von 'FormKeyPress' unterscheidet sich von vorheriger Deklaration
[Fehler] Unit1.pas(137): Undefinierter Bezeichner: 'Button1'
[Fehler] Unit1.pas(142): Anweisung erwartet, aber Dateiende gefunden
[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden
|
Tranx - Mo 27.02.12 17:19
Hast Du Button1 als Button auf deinem Formular? So wie es scheint, nicht.
Und dann ist ja Hotkey1.Hotkey nicht char, sondern TShortcut. So kann die Abfrage nicht funktionieren.
Hast Du noch eine Prozedure FormKeypress in deiner Unit? Schaue doch mal in der Definition deines Formulars nach.
Hast Du die Formkeypress-Prozedur über die Ereignisse des Formulars zugewiesen? Wahrscheinlich nicht. Denn ansonsten würde dieser Fehler nicht auftreten.
Premaider - Mo 27.02.12 17:49
Dann entsteht dieser Fehler. Egal auf was man klickt wenn man den Key dann drückt passiert nichts.
Moderiert von
Narses: Bild als Anhang hochgeladen.
Button1 ist dann visible:=false. Falls das was zu bedeuten hat. Könnte ihn auch 10.000 nach rechts verschieben
Tranx - Mo 27.02.12 17:57
Am Besten, Du entfernst den Verweis und erzeugst ihn neu. Mit F11 die Eigenschaft des Formulars FORM1 aussuchen und bei Ereignissen OnKeyPress entfernen und dann in ein anderes Ereignis wechseln. Dann wieder zurück in OnKeypress und mit Doppelklick die Prozedur erzeugen. Dann ist schon mal der Fehler weg.
Wofür aber benötigst Du überhaupt die Komponenten THotkey?
Wenn Du irgendeine Taste zum Beenden des Formulars verwenden willst, dann reicht doch, wenn Du in der OnKeyPress-Prozedur schreibst:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure TForm1.KeyPress(Sender : TObject; var key : Char); begin case Key of 'a'..'z','A'..'Z', '0'..'9', 'ä','ö','ü','ß' : Form1.Close; end; end; |
Dann ist THotkey überflüssig und mit dem Drücken von einem Buchstaben oder einer Ziffer wird das Formular beendet.
bummi - Mo 27.02.12 18:05
das was Du suchst ist nicht KeyPress sondern KeyDown
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| uses Menus; {$R *.dfm} procedure TForm2.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if ((Button1.Tag=1) and ( HotKey1.HotKey = ShortCut(Key,Shift)) then Close; end; |
Premaider - Mo 27.02.12 18:17
Das uses menus geht nicht (Delphi7)
Und dann der selbe Fehler.
Und ich will ja den Hotkey verwenden den man bei THotkey festlegt ;D
bummi - Mo 27.02.12 18:42
Probiers doch einfach aus .... der Anhang läuft unter D7
Premaider - Mo 27.02.12 18:54
Startet zwar aber keine Reaktion beim klicken.
Ich werd euch alles mal hochladen. Aber achtung
alles ist ziemlich komisch gemacht und unordentlich aber es geht :D
Nicht benutzen wenn ihr zu epileptischen anfällen neigt xD
Moderiert von
Narses: Binaries aus dem Anhang entfernt.
Premaider - Di 28.02.12 12:27
Kann mir niemand weiterhelfen ?
Waldheini - Do 01.03.12 00:52
Hallo, das Problem liegt warscheinlich daran, das der Start-Button den Focus hat, wenn mit ihm gestartet wird und nicht das Formular. Wenn Du FormKeyDown auch für den Start-Button setzt, müßte es gehen. Was Du warscheinlich noch machen mußt ist, den HotKey in einer globalen Variable zu speichern und damit in FormKeyDown vergleichen.
Ich habe es in D5 getestet und hatte bei HotKey1.HotKey immer den Wert 0, egal welche Taste ich eingegeben habe. Mit einer globalen Variable geht es.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!