Autor Beitrag
stigge
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 426

WinXP
Delphi 2007
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: 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? :roll:

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
Bondfreak
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 21

Win XP Prof, Kubuntu Dapper Drake
Delphi 6 (besitze auch 2005 und 2006)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 426

WinXP
Delphi 2007
BeitragVerfasst: Do 29.03.07 21:25 
user profile iconBondfreak 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.



user profile iconjakobwenzel hat folgendes geschrieben:
Wieso probierste die Antwort, die du im anderen Thema bekommen hast, nicht einfach mal aus anstatt ein neues Thema zu machen? :roll:

Die Antwort trifft nicht das, was ich machen will und außerdem:
user profile iconJayEff hat folgendes geschrieben:
Aber das ist eigentlich eine neue Frage und verdient ein neues Thema ... :|
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Do 29.03.07 21:33 
user profile iconstigge hat folgendes geschrieben:
user profile iconBondfreak 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.

Du wirst doch wohl wissen, was du für einen Hotkey anlegst :roll:
Notfalls speicherst du halt Informationen, die nur zum Zeitpunkt der Erstellung des Hotkeys bereitstehen in ner globalen Variable :wink:

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
stigge Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 426

WinXP
Delphi 2007
BeitragVerfasst: Do 29.03.07 21:34 
user profile iconjakobwenzel hat folgendes geschrieben:
user profile iconstigge hat folgendes geschrieben:
user profile iconBondfreak 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.

Du wirst doch wohl wissen, was du für einen Hotkey anlegst :roll:
Notfalls speicherst du halt Informationen, die nur zum Zeitpunkt der Erstellung des Hotkeys bereitstehen in ner globalen Variable :wink:

Stichwort Konstante?
Konstanten werden ja im Quelltext festgelegt und können nicht verändert werden oder?
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Do 29.03.07 21:37 
user profile iconjakobwenzel hat folgendes geschrieben:
Notfalls speicherst du halt Informationen, die nur zum Zeitpunkt der Erstellung des Hotkeys bereitstehen in ner globalen Variable :wink:

Konstante? Was für eine Konstante? :gruebel:

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
stigge Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 426

WinXP
Delphi 2007
BeitragVerfasst: Do 29.03.07 21:45 
user profile iconJayEff hat folgendes geschrieben:
user profile iconjakobwenzel hat folgendes geschrieben:
Notfalls speicherst du halt Informationen, die nur zum Zeitpunkt der Erstellung des Hotkeys bereitstehen in ner globalen Variable :wink:

Konstante? Was für eine Konstante? :gruebel:

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 :wink:
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: 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? :wink:

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
Karlson
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Do 29.03.07 22:38 
Da reicht auch folgendes, eine Klasse wird wohl noch zu schwer für ihn sein...


ausblenden 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 {global}
 pause : array[1..30] of Boolean;

procedure TForm1.WmHotkey(var Msg: TMessage); 
begin
 if pause[msg.WParam] then
  case msg.WParam of
   1: {procedure für Hotkey 1}
   2: {procedure für Hotkey 2}
  end;
end;

procedure TForm1.Deaktiviere(i:integer);
begin
 pause[i]:=false;
end;

procedure TForm1.Aktiviere(i:integer);
begin
 pause[i]:=true;
end;

//jetzt kannste, wenn du z.B. den 3. Hotkey deaktivieren willst einfach folgendes schreiben:

//...//
 deaktiviere(15);
 {oder später dann}
 aktiviere(14);


Das ist dann im Grunde die Lösung die dir user profile iconBondfreak 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Fr 30.03.07 10:51 
user profile iconKarlson hat folgendes geschrieben:
Das ist dann im Grunde die Lösung die dir user profile iconBondfreak 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 426

WinXP
Delphi 2007
BeitragVerfasst: Fr 30.03.07 15:27 
user profile iconJayEff hat folgendes geschrieben:
user profile iconKarlson hat folgendes geschrieben:
Das ist dann im Grunde die Lösung die dir user profile iconBondfreak 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.

Weil das bei mir sehr kompliziert werden würde. Ich probier jetzt mal eine andere Methode, wird eine Weile dauern, vlt wirds ja was
Karlson
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 426

WinXP
Delphi 2007
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 426

WinXP
Delphi 2007
BeitragVerfasst: Fr 30.03.07 16:11 
user profile iconKarlson 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Fr 30.03.07 18:00 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
aInteger := $FF; //=255
s := 'FF';
aInteger := StrToInt('$' + s);
s := IntToHex(255, 2); //s = 'FF'

;) Dürft 3 mal raten: Der Vollständigkeit halber! :D

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
stigge Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 426

WinXP
Delphi 2007
BeitragVerfasst: Fr 30.03.07 19:54 
Könnt ihr mir kurz sagen, wie man ASCII-Werte in Virtual Key Werte umwandeln kann? :nixweiss: