| Autor |
Beitrag |
Premaider
      
Beiträge: 51
|
Verfasst: Mo 27.02.12 16:53
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
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: Mo 27.02.12 17:00
Das stimmt. THotkey.Hotkey ist nicht CHAR, sondern TShortcut.
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
|
|
Premaider 
      
Beiträge: 51
|
Verfasst: 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
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: 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.
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
|
|
Premaider 
      
Beiträge: 51
|
Verfasst: 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
Einloggen, um Attachments anzusehen!
|
|
Tranx
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: 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.
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: 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; |
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
Premaider 
      
Beiträge: 51
|
Verfasst: 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
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Mo 27.02.12 18:42
Probiers doch einfach aus .... der Anhang läuft unter D7
Einloggen, um Attachments anzusehen!
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
Premaider 
      
Beiträge: 51
|
Verfasst: 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
Nicht benutzen wenn ihr zu epileptischen anfällen neigt xD
Moderiert von Narses: Binaries aus dem Anhang entfernt.
Einloggen, um Attachments anzusehen!
|
|
Premaider 
      
Beiträge: 51
|
Verfasst: Di 28.02.12 12:27
Kann mir niemand weiterhelfen ?
|
|
Waldheini
      
Beiträge: 32
Win 98SE, XP
D5 St., K3 Prof
|
Verfasst: 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.
|
|