Autor Beitrag
Premaider
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
If ((Button1.Tag=1and (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 user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Mo 27.02.2012 um 16:35
Moderiert von user profile iconMartok: Quote- durch Delphi-Tags ersetzt
Tranx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: Mo 27.02.12 17:00 
Das stimmt. THotkey.Hotkey ist nicht CHAR, sondern TShortcut.

_________________
Toleranz ist eine Grundvoraussetzung für das Leben.
Premaider Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: 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 user profile iconNarses: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: 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:


ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Mo 27.02.12 18:05 
das was Du suchst ist nicht KeyPress sondern KeyDown
ausblenden 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=1and ( HotKey1.HotKey = ShortCut(Key,Shift)) then Close;
end;

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Premaider Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: 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 user profile iconNarses: Binaries aus dem Anhang entfernt.
Einloggen, um Attachments anzusehen!
Premaider Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: Di 28.02.12 12:27 
Kann mir niemand weiterhelfen ?
Waldheini
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 32

Win 98SE, XP
D5 St., K3 Prof
BeitragVerfasst: 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.