| Autor |
Beitrag |
stigge
      
Beiträge: 426
WinXP
Delphi 2007
|
Verfasst: Do 29.03.07 21:14
Kann man Hotkeys sozusagen "pausieren"?
Also wenn ich eingetragen habe, das bei Druck auf F eine Dialogbox kommt, das sie dann nicht mehr kommt?
Beispiel:
Druck auf F --> Dialogbox kommt
Hotkey wird pausiert
Druck auf F --> Dialogbox kommt NICHT
Hotkey wird wieder aktiviert
Druck auf F --> Dialogbox kommt WIEDER
Gibt es da irgendeinen Befehl?
|
|
jakobwenzel
      
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: Do 29.03.07 21:16
Wieso probierste die Antwort, die du im anderen Thema bekommen hast, nicht einfach mal aus anstatt ein neues Thema zu machen? 
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
Bondfreak
      
Beiträge: 21
Win XP Prof, Kubuntu Dapper Drake
Delphi 6 (besitze auch 2005 und 2006)
|
Verfasst: Do 29.03.07 21:17
einen befehl kenne ich direkt nich, du kannst aber beim aktivieren des hotkeys eine globale variable vom typ boolean auf true setzen und dann beim hotkeydruck prüfen, welchen status diese variable hat.
bei true = hotkey geht nich, bei false = hotkey geht...
|
|
stigge 
      
Beiträge: 426
WinXP
Delphi 2007
|
Verfasst: Do 29.03.07 21:25
Bondfreak hat folgendes geschrieben: | einen befehl kenne ich direkt nich, du kannst aber beim aktivieren des hotkeys eine globale variable vom typ boolean auf true setzen und dann beim hotkeydruck prüfen, welchen status diese variable hat.
bei true = hotkey geht nich, bei false = hotkey geht... |
Das ist ja gar nicht das Problem. Weil wenn ich den Hotkey lösche, weiß ich später, wenn ich ihn wieder einfüge, nicht mehr, was darin gestanden hat.
jakobwenzel hat folgendes geschrieben: | Wieso probierste die Antwort, die du im anderen Thema bekommen hast, nicht einfach mal aus anstatt ein neues Thema zu machen?  |
Die Antwort trifft nicht das, was ich machen will und außerdem:
JayEff hat folgendes geschrieben: | Aber das ist eigentlich eine neue Frage und verdient ein neues Thema ...  |
|
|
jakobwenzel
      
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: Do 29.03.07 21:33
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
stigge 
      
Beiträge: 426
WinXP
Delphi 2007
|
Verfasst: Do 29.03.07 21:34
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Do 29.03.07 21:37
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
stigge 
      
Beiträge: 426
WinXP
Delphi 2007
|
Verfasst: Do 29.03.07 21:45
JayEff hat folgendes geschrieben: | jakobwenzel hat folgendes geschrieben: | Notfalls speicherst du halt Informationen, die nur zum Zeitpunkt der Erstellung des Hotkeys bereitstehen in ner globalen Variable  |
Konstante? Was für eine Konstante?  |
Die Sache ist etwas komplizierter:
Ich habe circa 30 Hotkeys, die andauernd aktiviert und deaktiviert werden müssen. Deshalb habe ich gehofft, man kann sie irgendwie pausieren. Ich könnte aber auch die Hotkeys entfernen und dann wieder erstellen, da sie immer gleich zugewießen sind und immer den gleichen Inhalt haben. Deshalb könnte ich die Werte in Konstanten speichern und dann immer wieder von dort wiederabrufen.
Ich glaube zwar nicht, das das jetzt irgendjemand verstanden hat aber ich teste es mal, aber erst morgen nach der  Schule  . Wenns klappt werde ich euch die Methode mal sagen, sonst brauche ich die nächste Idee 
|
|
jakobwenzel
      
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: Do 29.03.07 21:50
Wäre es da nicht sinnvoll eine Klasse für die Hotkeys zu schreiben, die die dann auch pausieren kann? 
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
Karlson
      
Beiträge: 2088
|
Verfasst: Do 29.03.07 22:38
Da reicht auch folgendes, eine Klasse wird wohl noch zu schwer für ihn sein...
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| var pause : array[1..30] of Boolean;
procedure TForm1.WmHotkey(var Msg: TMessage); begin if pause[msg.WParam] then case msg.WParam of 1: 2: end; end;
procedure TForm1.Deaktiviere(i:integer); begin pause[i]:=false; end;
procedure TForm1.Aktiviere(i:integer); begin pause[i]:=true; end;
deaktiviere(15); aktiviere(14); |
Das ist dann im Grunde die Lösung die dir Bondfreak bereits vorgeschlagen hat.
Diese Lösung hat Nachteile die man, je nach dem was man tut, auch als Vorteile auslegen kann.
Wenn du deine Hotkeys unregistrierst wenn du sie nicht benötigst, können andere Programme diese Hotkeys selbst registrieren und der Benutzer kann sie benutzen. Das Problem ist, dass dein Programm die Hotkeys dann nciht mehr registrieren kann, weil sie schon in Benutzung sind.
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Fr 30.03.07 10:51
Karlson hat folgendes geschrieben: | Das ist dann im Grunde die Lösung die dir Bondfreak bereits vorgeschlagen hat. |
Beziehungsweise die, die ich im anderen Topic gebracht habe, mit der Bitte, ein neues Topic dafür auf zumachen
[/offtopic]
Wieso bringst du uns nicht mal Argumente gegen die Boolean-Methode? Ich kenne spontan jetzt keine bessere Lösung, bei der man die Hotkeys tatsächlich registriert, aber deaktiviert lassen kann.
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
stigge 
      
Beiträge: 426
WinXP
Delphi 2007
|
Verfasst: Fr 30.03.07 15:27
|
|
Karlson
      
Beiträge: 2088
|
Verfasst: Fr 30.03.07 15:52
Das kann garnicht komplizierter werden als oben geschrieben...Aber mach was du denkst. Poste deine Lösung dann halt mal hier, würd mich intressieren.
@JayEff: Sorry, aber ich hab den Thread in dem du das geschrieben hast nicht gelesen.
|
|
stigge 
      
Beiträge: 426
WinXP
Delphi 2007
|
Verfasst: Fr 30.03.07 16:03
Bin fast fertig, muss aber wissen, wie man einen String in einen Cardinal umwandelt. Gibts da sowas wie inttostr()?
|
|
Karlson
      
Beiträge: 2088
|
Verfasst: Fr 30.03.07 16:06
ja, nämlich strToint  cardinal ist nur ein Abart von Integer und kann genauso wie ein integer behandelt werden.
|
|
stigge 
      
Beiträge: 426
WinXP
Delphi 2007
|
Verfasst: Fr 30.03.07 16:11
Karlson hat folgendes geschrieben: | ja, nämlich strToint cardinal ist nur ein Abart von Integer und kann genauso wie ein integer behandelt werden. |
Und für was braucht man cardinal? Könnte man ja auch einfach integer benutzen?
//Edit: Wenn ich so nachdenke muss Cardinal auch Buchstaben enthalten können oder?
//Edit2: Weil bei registerhotkey() muss ich ja als letztes den tastencode angeben, und zwar als cardinal. Aber von z ist der Tastencode 005A und das ist ja kein Integer und auch kein Cardinal...
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Fr 30.03.07 16:39
Cardinal + F1:
| Delphi-OH: | Typ Bereich Format
Integer -2147483648..2147483647 32 Bit, mit Vorzeichen
Cardinal 0..4294967295 32 Bit, ohne Vorzeichen |
Cardinal geht einfach weiter nach oben, hat dafür kein Vorzeichen.
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
Karlson
      
Beiträge: 2088
|
Verfasst: Fr 30.03.07 16:42
| Zitat: | | //Edit2: Weil bei registerhotkey() muss ich ja als letztes den tastencode angeben, und zwar als cardinal. Aber von z ist der Tastencode 005A und das ist ja kein Integer und auch kein Cardinal... |
5A ist Hexadezimal und entspricht dezimal der Zahl 90.
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Fr 30.03.07 18:00
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
stigge 
      
Beiträge: 426
WinXP
Delphi 2007
|
Verfasst: Fr 30.03.07 19:54
Könnt ihr mir kurz sagen, wie man ASCII-Werte in Virtual Key Werte umwandeln kann? 
|
|