Textgadget

Anfängerfragen zum Programmieren mit PureBasic.
Christi
Beiträge: 154
Registriert: 31.08.2004 14:17
Kontaktdaten:

Beitrag von Christi »

Du könntest die ganzen If-Abfragen in eine Select Case Abfrage umwandeln. und "SetGadgetText(1, str(A))" schreiben.
Benutzeravatar
Kiffi
Beiträge: 10719
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> Wie gesagt bin anfänger und lerne gerne also bitte sagt mir nicht nur was
> ich falsch mache sondern auch was ich besser machen kann.

wie bereits geschrieben: Die For-Next-Schleifen machen keinen Sinn. Und
nicht nur das: Sie sind schlichtweg falsch. Also: Ersatzlos löschen!
a²+b²=mc²
Benutzeravatar
R4z0r1989
Beiträge: 521
Registriert: 12.06.2005 18:06
Kontaktdaten:

Beitrag von R4z0r1989 »

aber dann geht alles nicht mehr
doch geht des is geil
Sowas wirt doch in KTB Schreibprogrammen benutzt
Benutzeravatar
R4z0r1989
Beiträge: 521
Registriert: 12.06.2005 18:06
Kontaktdaten:

Beitrag von R4z0r1989 »

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.

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_CloseWindow



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
Benutzeravatar
PAMKKKKK
Beiträge: 321
Registriert: 21.04.2005 22:08
Wohnort: Braunschweig
Kontaktdaten:

Beitrag von PAMKKKKK »

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.:

Code: Alles auswählen

Val(GetGadgetText(1))
Nun hat man eine Zahl aus dem Gadget und kann damit rechnen :

Code: Alles auswählen

Val(GetGadgetText(1))+1
Um das Ergebnis davon wieder in das Gadget zurück zu tun muss man es wieder in eine String umwandeln also :

Code: Alles auswählen

Str(Val(GetGadgetText(1))+1)
Diesen String kann man nun in das Gadget zurück legen:

Code: Alles auswählen

SetGadgetText(1,Str(Val(GetGadgetText(1))+1))
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 ;)

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_CloseWindow
Wir Schreiben ein PureBasic Buch.
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
Benutzeravatar
R4z0r1989
Beiträge: 521
Registriert: 12.06.2005 18:06
Kontaktdaten:

Beitrag von R4z0r1989 »

Gibt es so wie es #VK_a gibt auch was wo alle Tasten gezählt werden.
Und nochmal weil es in vergessenheit geratten ist:
Gibt es eine Möglichkeit das er auch zählt wenn das Programm im Hintergrund ist???

Besonderes Thx @ PAMKKK
Benutzeravatar
PAMKKKKK
Beiträge: 321
Registriert: 21.04.2005 22:08
Wohnort: Braunschweig
Kontaktdaten:

Beitrag von PAMKKKKK »

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 :evil: , wegen der Privatsphäre

Spiele mal mit folgendem Code, du kommst schon selbst drauf.....::::wink: :wink:

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_CloseWindow
Wir Schreiben ein PureBasic Buch.
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
Benutzeravatar
Kiffi
Beiträge: 10719
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

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_CloseWindow
a²+b²=mc²
Antworten