Textgadget
habs jetzt in eine Case abfrage umgewandelt
kann ich Die Stringgadget und Text Gadget auch in eine case Stecken oder etwas vereinfachen dass es Kürzer oder bessergesagt leichter wird noch weitere Tasten hinzuzufügen.
Und es Zählt nur wenn es im vordergrund ist kann ich es auch irgendwie machen dass es auch zählt wenn andre Programme im Vordergrund laufen
Ich danke für alle folgenden Beiträge
kann ich Die Stringgadget und Text Gadget auch in eine case Stecken oder etwas vereinfachen dass es Kürzer oder bessergesagt leichter wird noch weitere Tasten hinzuzufügen.
Code: Alles auswählen
OpenWindow(0, 0, 0, 500, 680, #PB_Window_ScreenCentered | #PB_Window_SystemMenu, "Test")
#vk_ae = $DE ;#VK_OEM_7
#vk_oe = $C0 ;#VK_OEM_3
#vk_ue = $BA ;#VK_OEM_1
#vk_sz = $DB ;#VK_OEM_4
#vk_raute = $BF ;#VK_OEM_2
#vk_punkt = $BE;#VK_OEM_PERIOD
#vk_komma = $BC;#VK_OEM_COMMA
A$="0"
B$="0"
C$="0"
D$="0"
E$="0"
F$="0"
G$="0"
H$="0"
I$="0"
J$="0"
K$="0"
L$="0"
M$="0"
N$="0"
O$="0"
P$="0"
Q$="0"
R$="0"
S$="0"
T$="0"
U$="0"
V$="0"
W$="0"
X$="0"
Y$="0"
Z$="0"
AE$="0"
OE$="0"
UE$="0"
If CreateGadgetList(WindowID())
;Texts
TextGadget(1001,28,02,50,15,"A")
TextGadget(1002,28,47,50,15,"B")
TextGadget(1003,28,92,50,15,"C")
TextGadget(1004,28,137,50,15,"D")
TextGadget(1005,28,182,50,15,"E")
TextGadget(1006,28,227,50,15,"F")
TextGadget(1007,28,272,50,15,"G")
TextGadget(1008,28,317,50,15,"H")
TextGadget(1009,28,362,50,15,"I")
TextGadget(1010,28,407,50,15,"J")
TextGadget(1011,28,452,50,15,"K")
TextGadget(1012,28,497,50,15,"L")
TextGadget(1013,28,542,50,15,"M")
TextGadget(1014,28,587,50,15,"N")
TextGadget(1015,28,632,50,15,"O")
TextGadget(1016,108,02,50,15,"P")
TextGadget(1017,108,47,50,15,"Q")
TextGadget(1018,108,92,50,15,"R")
TextGadget(1019,108,137,50,15,"S")
TextGadget(1020,108,182,50,15,"T")
TextGadget(1021,108,227,50,15,"U")
TextGadget(1022,108,272,50,15,"V")
TextGadget(1023,108,317,50,15,"W")
TextGadget(1024,108,362,50,15,"X")
TextGadget(1025,108,407,50,15,"Y")
TextGadget(1026,108,452,50,15,"Z")
TextGadget(1000,108,497,50,15,"")
TextGadget(1027,108,542,50,15,"Ä")
TextGadget(1028,108,587,50,15,"Ö")
TextGadget(1029,108,632,50,15,"Ü")
;Strings
StringGadget(1,10,15,50,20,A$,#PB_String_ReadOnly)
StringGadget(2,10,60,50,20,B$,#PB_String_ReadOnly)
StringGadget(3,10,105,50,20,C$,#PB_String_ReadOnly)
StringGadget(4,10,150,50,20,D$,#PB_String_ReadOnly)
StringGadget(5,10,195,50,20,E$,#PB_String_ReadOnly)
StringGadget(6,10,240,50,20,F$,#PB_String_ReadOnly)
StringGadget(7,10,285,50,20,g$,#PB_String_ReadOnly)
StringGadget(8,10,330,50,20,h$,#PB_String_ReadOnly)
StringGadget(9,10,375,50,20,i$,#PB_String_ReadOnly)
StringGadget(10,10,420,50,20,j$,#PB_String_ReadOnly)
StringGadget(11,10,465,50,20,k$,#PB_String_ReadOnly)
StringGadget(12,10,510,50,20,l$,#PB_String_ReadOnly)
StringGadget(13,10,555,50,20,m$,#PB_String_ReadOnly)
StringGadget(14,10,600,50,20,n$,#PB_String_ReadOnly)
StringGadget(15,10,645,50,20,o$,#PB_String_ReadOnly)
StringGadget(16,90,15,50,20,p$,#PB_String_ReadOnly)
StringGadget(17,90,60,50,20,q$,#PB_String_ReadOnly)
StringGadget(18,90,105,50,20,r$,#PB_String_ReadOnly)
StringGadget(19,90,150,50,20,s$,#PB_String_ReadOnly)
StringGadget(20,90,195,50,20,t$,#PB_String_ReadOnly)
StringGadget(21,90,240,50,20,u$,#PB_String_ReadOnly)
StringGadget(22,90,285,50,20,v$,#PB_String_ReadOnly)
StringGadget(23,90,330,50,20,w$,#PB_String_ReadOnly)
StringGadget(24,90,375,50,20,x$,#PB_String_ReadOnly)
StringGadget(25,90,420,50,20,y$,#PB_String_ReadOnly)
StringGadget(26,90,465,50,20,z$,#PB_String_ReadOnly)
StringGadget(27,90,555,50,20,ae$,#PB_String_ReadOnly)
StringGadget(28,90,600,50,20,oe$,#PB_String_ReadOnly)
StringGadget(29,90,645,50,20,ue$,#PB_String_ReadOnly)
EndIf
Repeat
ereignis.l = WaitWindowEvent()
If ereignis.l = #wm_keydown
Select EventwParam()
Case #VK_a
A+1
A$=Str(A)
SetGadgetText(1,A$)
Case #VK_b
b+1
b$=Str(b)
SetGadgetText(2,b$)
Case #VK_c
c+1
c$=Str(c)
SetGadgetText(3,c$)
Case #VK_d
d+1
d$=Str(d)
SetGadgetText(4,d$)
Case #VK_e
e+1
e$=Str(e)
SetGadgetText(5,e$)
Case #VK_f
f+1
f$=Str(f)
SetGadgetText(6,f$)
Case #VK_g
g+1
g$=Str(g)
SetGadgetText(7,g$)
Case #VK_h
h+1
h$=Str(h)
SetGadgetText(8,h$)
Case #VK_i
i+1
i$=Str(i)
SetGadgetText(9,i$)
Case #VK_j
j+1
j$=Str(j)
SetGadgetText(10,j$)
Case #VK_k
k+1
k$=Str(k)
SetGadgetText(11,k$)
Case #VK_l
l+1
l$=Str(l)
SetGadgetText(12,l$)
Case #VK_m
m+1
m$=Str(m)
SetGadgetText(13,m$)
Case #VK_n
n+1
n$=Str(n)
SetGadgetText(14,n$)
Case #VK_o
o+1
o$=Str(o)
SetGadgetText(15,o$)
Case #VK_p
p+1
p$=Str(p)
SetGadgetText(16,p$)
Case #VK_q
q+1
q$=Str(q)
SetGadgetText(17,q$)
Case #VK_r
r+1
r$=Str(r)
SetGadgetText(18,r$)
Case #VK_s
s+1
s$=Str(s)
SetGadgetText(19,s$)
Case #VK_t
t+1
t$=Str(t)
SetGadgetText(20,t$)
Case #VK_u
u+1
u$=Str(u)
SetGadgetText(21,u$)
Case #VK_v
v+1
v$=Str(v)
SetGadgetText(22,v$)
Case #VK_w
w+1
w$=Str(w)
SetGadgetText(23,w$)
Case #VK_x
x+1
x$=Str(x)
SetGadgetText(24,x$)
Case #VK_y
y+1
y$=Str(y)
SetGadgetText(25,y$)
Case #VK_z
z+1
z$=Str(z)
SetGadgetText(26,z$)
Case #VK_ae
ae+1
ae$=Str(ae)
SetGadgetText(27,ae$)
Case #VK_oe
oe+1
oe$=Str(oe)
SetGadgetText(28,oe$)
Case #VK_ue
ue+1
ue$=Str(ue)
SetGadgetText(29,ue$)
EndSelect
EndIf
Until ereignis.l = #PB_Event_CloseWindowUnd es Zählt nur wenn es im vordergrund ist kann ich es auch irgendwie machen dass es auch zählt wenn andre Programme im Vordergrund laufen
Ich danke für alle folgenden Beiträge
Auch auf die gefahr hin, dich zu verwirren….
Ich würde es so weiter optimieren:
Die A,B,C,D,E,F,B, usw. Variablen brauchst du nicht, weil ein Stringgadget selbst eine Variable ist!
Man hat was reingelegt und kann es zum Arbeiten wieder rausholen.
(SetGadgetText und GetGadgetText).
Um aus dem Gadget was rauszuholen nimmt man
GetGadgetText(GadgetNummer).
Um damit zu rechnen wandelt man es in eine Zahl um, mit Val() also z.B.:
Nun hat man eine Zahl aus dem Gadget und kann damit rechnen :
Um das Ergebnis davon wieder in das Gadget zurück zu tun muss man es wieder in eine String umwandeln also :
Diesen String kann man nun in das Gadget zurück legen:
Das ist wie in der Mathematik alles wird von Innen nach Außen aufgelöst.
P.S. Wenn du weniger Leerzeilen in deine Code machst, wir mein Internet nicht so lang
Ich würde es so weiter optimieren:
Die A,B,C,D,E,F,B, usw. Variablen brauchst du nicht, weil ein Stringgadget selbst eine Variable ist!
Man hat was reingelegt und kann es zum Arbeiten wieder rausholen.
(SetGadgetText und GetGadgetText).
Um aus dem Gadget was rauszuholen nimmt man
GetGadgetText(GadgetNummer).
Um damit zu rechnen wandelt man es in eine Zahl um, mit Val() also z.B.:
Code: Alles auswählen
Val(GetGadgetText(1))Code: Alles auswählen
Val(GetGadgetText(1))+1Code: Alles auswählen
Str(Val(GetGadgetText(1))+1)Code: Alles auswählen
SetGadgetText(1,Str(Val(GetGadgetText(1))+1))P.S. Wenn du weniger Leerzeilen in deine Code machst, wir mein Internet nicht so lang
Code: Alles auswählen
OpenWindow(0, 0, 0, 500, 680, #PB_Window_ScreenCentered | #PB_Window_SystemMenu, "Test")
#vk_ae = $DE ;#VK_OEM_7
#vk_oe = $C0 ;#VK_OEM_3
#vk_ue = $BA ;#VK_OEM_1
#vk_sz = $DB ;#VK_OEM_4
#vk_raute = $BF ;#VK_OEM_2
#vk_punkt = $BE;#VK_OEM_PERIOD
#vk_komma = $BC;#VK_OEM_COMMA
If CreateGadgetList(WindowID())
;Texts
TextGadget(1001,28,02,50,15,"A")
TextGadget(1002,28,47,50,15,"B")
TextGadget(1003,28,92,50,15,"C")
TextGadget(1004,28,137,50,15,"D")
TextGadget(1005,28,182,50,15,"E")
TextGadget(1006,28,227,50,15,"F")
TextGadget(1007,28,272,50,15,"G")
TextGadget(1008,28,317,50,15,"H")
TextGadget(1009,28,362,50,15,"I")
TextGadget(1010,28,407,50,15,"J")
TextGadget(1011,28,452,50,15,"K")
TextGadget(1012,28,497,50,15,"L")
TextGadget(1013,28,542,50,15,"M")
TextGadget(1014,28,587,50,15,"N")
TextGadget(1015,28,632,50,15,"O")
TextGadget(1016,108,02,50,15,"P")
TextGadget(1017,108,47,50,15,"Q")
TextGadget(1018,108,92,50,15,"R")
TextGadget(1019,108,137,50,15,"S")
TextGadget(1020,108,182,50,15,"T")
TextGadget(1021,108,227,50,15,"U")
TextGadget(1022,108,272,50,15,"V")
TextGadget(1023,108,317,50,15,"W")
TextGadget(1024,108,362,50,15,"X")
TextGadget(1025,108,407,50,15,"Y")
TextGadget(1026,108,452,50,15,"Z")
TextGadget(1000,108,497,50,15,"")
TextGadget(1027,108,542,50,15,"Ä")
TextGadget(1028,108,587,50,15,"Ö")
TextGadget(1029,108,632,50,15,"Ü")
;Strings
StringGadget(1,10,15,50,20,"0",#PB_String_ReadOnly)
StringGadget(2,10,60,50,20,"0",#PB_String_ReadOnly)
StringGadget(3,10,105,50,20,"0",#PB_String_ReadOnly)
StringGadget(4,10,150,50,20,"0",#PB_String_ReadOnly)
StringGadget(5,10,195,50,20,"0",#PB_String_ReadOnly)
StringGadget(6,10,240,50,20,"0",#PB_String_ReadOnly)
StringGadget(7,10,285,50,20,"0",#PB_String_ReadOnly)
StringGadget(8,10,330,50,20,"0",#PB_String_ReadOnly)
StringGadget(9,10,375,50,20,"0",#PB_String_ReadOnly)
StringGadget(10,10,420,50,20,"0",#PB_String_ReadOnly)
StringGadget(11,10,465,50,20,"0",#PB_String_ReadOnly)
StringGadget(12,10,510,50,20,"0",#PB_String_ReadOnly)
StringGadget(13,10,555,50,20,"0",#PB_String_ReadOnly)
StringGadget(14,10,600,50,20,"0",#PB_String_ReadOnly)
StringGadget(15,10,645,50,20,"0",#PB_String_ReadOnly)
StringGadget(16,90,15,50,20,"0",#PB_String_ReadOnly)
StringGadget(17,90,60,50,20,"0",#PB_String_ReadOnly)
StringGadget(18,90,105,50,20,"0",#PB_String_ReadOnly)
StringGadget(19,90,150,50,20,"0",#PB_String_ReadOnly)
StringGadget(20,90,195,50,20,"0",#PB_String_ReadOnly)
StringGadget(21,90,240,50,20,"0",#PB_String_ReadOnly)
StringGadget(22,90,285,50,20,"0",#PB_String_ReadOnly)
StringGadget(23,90,330,50,20,"0",#PB_String_ReadOnly)
StringGadget(24,90,375,50,20,"0",#PB_String_ReadOnly)
StringGadget(25,90,420,50,20,"0",#PB_String_ReadOnly)
StringGadget(26,90,465,50,20,"0",#PB_String_ReadOnly)
StringGadget(27,90,555,50,20,"0",#PB_String_ReadOnly)
StringGadget(28,90,600,50,20,"0",#PB_String_ReadOnly)
StringGadget(29,90,645,50,20,"0",#PB_String_ReadOnly)
EndIf
Repeat
ereignis.l = WaitWindowEvent()
If ereignis.l = #wm_keydown
Select EventwParam()
Case #VK_a
SetGadgetText(1,Str(Val(GetGadgetText(1))+1)) ; <<<<<<<<<<<<<<<geändert
Case #VK_b
SetGadgetText(2,Str(Val(GetGadgetText(2))+1)) ; <<<<<<<<<<<<<<<geändert
Case #VK_c
SetGadgetText(3,Str(Val(GetGadgetText(3))+1)) ; <<<<<<<<<<<<<<<geändert
Case #VK_d
d+1
D$=Str(d)
SetGadgetText(4,D$)
Case #VK_e
e+1
E$=Str(e)
SetGadgetText(5,E$)
Case #VK_f
f+1
F$=Str(f)
SetGadgetText(6,F$)
Case #VK_g
g+1
G$=Str(g)
SetGadgetText(7,G$)
Case #VK_h
h+1
H$=Str(h)
SetGadgetText(8,H$)
Case #VK_i
i+1
I$=Str(i)
SetGadgetText(9,I$)
Case #VK_j
j+1
J$=Str(j)
SetGadgetText(10,J$)
Case #VK_k
k+1
K$=Str(k)
SetGadgetText(11,K$)
Case #VK_l
l+1
L$=Str(l)
SetGadgetText(12,L$)
Case #VK_m
m+1
M$=Str(m)
SetGadgetText(13,M$)
Case #VK_n
N+1
N$=Str(N)
SetGadgetText(14,N$)
Case #VK_o
o+1
O$=Str(o)
SetGadgetText(15,O$)
Case #VK_p
p+1
P$=Str(p)
SetGadgetText(16,P$)
Case #VK_q
Q+1
Q$=Str(Q)
SetGadgetText(17,Q$)
Case #VK_r
r+1
R$=Str(r)
SetGadgetText(18,R$)
Case #VK_s
s+1
S$=Str(s)
SetGadgetText(19,S$)
Case #VK_t
t+1
T$=Str(t)
SetGadgetText(20,T$)
Case #VK_u
u+1
U$=Str(u)
SetGadgetText(21,U$)
Case #VK_v
v+1
V$=Str(v)
SetGadgetText(22,V$)
Case #VK_w
w+1
W$=Str(w)
SetGadgetText(23,W$)
Case #VK_x
x+1
X$=Str(x)
SetGadgetText(24,X$)
Case #VK_y
y+1
Y$=Str(y)
SetGadgetText(25,Y$)
Case #VK_z
z+1
Z$=Str(z)
SetGadgetText(26,Z$)
Case #vk_ae
ae+1
AE$=Str(ae)
SetGadgetText(27,AE$)
Case #vk_oe
oe+1
OE$=Str(oe)
SetGadgetText(28,OE$)
Case #vk_ue
ue+1
UE$=Str(ue)
SetGadgetText(29,UE$)
EndSelect
EndIf
Until ereignis.l = #PB_Event_CloseWindowWir Schreiben ein PureBasic Buch.
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
Kommt darauf an was du mit Hintergrund meinst ....
Wenn du dir ein Texteditor selber baust und dann im Hintergrund die Buchstaben mitzählst, ist das sehr leicht.
Weil du ja dein eigenes Programm "abhörts", und die Ereignisse (Events) die in deinem Fenster geschehen dir gehören.
Wenn du fremde Programme wie z.B. M$ Word abhören willst musst du ein so genannten Hook setzen, das ist Profikram weil es tief in das Betriebssystem greift.....
....und fremde Tastatur abhören könnte missverstanden werden
, wegen der Privatsphäre
Spiele mal mit folgendem Code, du kommst schon selbst drauf.....:::
Wenn du dir ein Texteditor selber baust und dann im Hintergrund die Buchstaben mitzählst, ist das sehr leicht.
Weil du ja dein eigenes Programm "abhörts", und die Ereignisse (Events) die in deinem Fenster geschehen dir gehören.
Wenn du fremde Programme wie z.B. M$ Word abhören willst musst du ein so genannten Hook setzen, das ist Profikram weil es tief in das Betriebssystem greift.....
....und fremde Tastatur abhören könnte missverstanden werden
Spiele mal mit folgendem Code, du kommst schon selbst drauf.....:::
Code: Alles auswählen
;klimpere auf der Tastatur
OpenWindow(0, 0, 0, 260, 70, #PB_Window_ScreenCentered | #PB_Window_SystemMenu, "Tasten Drücken !")
If CreateGadgetList(WindowID())
;Texts
TextGadget(1,28,02,200,15,"Zahlen wert der gedrückten Taste:")
;Strings
StringGadget(2,28,15,200,20,"0",#PB_String_ReadOnly)
EndIf
Repeat
ereignis.l = WaitWindowEvent()
If ereignis.l = #wm_keydown
SetGadgetText(2,Str(EventwParam()))
EndIf
Until ereignis.l = #PB_Event_CloseWindowWir Schreiben ein PureBasic Buch.
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
um die Ereignisschleife noch etwas zu verkürzen:
Code: Alles auswählen
Repeat
ereignis.l = WaitWindowEvent()
If ereignis.l = #wm_keydown
eParam = EventwParam()
If eParam => #VK_a And eParam <= #VK_z ; Von a bis z
SetGadgetText(eParam - 64,Str(Val(GetGadgetText(eParam - 64))+1))
Else ; ä ö ü
Select eParam
Case #vk_ae: GadgetNummer=27
Case #vk_oe: GadgetNummer=28
Case #vk_ue: GadgetNummer=29
Default: GadgetNummer=0
EndSelect
If GadgetNummer
SetGadgetText(GadgetNummer,Str(Val(GetGadgetText(GadgetNummer))+1))
EndIf
EndIf
EndIf
Until ereignis.l = #PB_Event_CloseWindowa²+b²=mc²