SetWindowState(0, #PB_Window_Minimize)

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Mit Settimer koennte man, wie schon erwaehnt, das Problem loesen.

Code: Alles auswählen

  hwnd = OpenWindow(0,0,0,300,300,"")
  
  CreateGadgetList(hwnd)
  
  ButtonGadget(0,10,10,100,22,"schiessen")
  
  timer_ms = 500
  timer_id = 0 
  
  Repeat
    event = WaitWindowEvent()
    
    If event = #PB_Event_Gadget
      
      If EventGadget() = 0
        
        SetWindowState(0, #PB_Window_Minimize)
        timer = SetTimer_(hwnd,timer_id,timer_ms,0)
        
      EndIf
      
    ElseIf event = #WM_TIMER
      
      If EventwParam() = timer_id
        
        SetWindowState(0, #PB_Window_Normal)
        KillTimer_(hwnd,timer_id)
        timer = 0 
        
      EndIf
    
    ElseIf event = #WM_SIZE
      
      If Not timer 
        
        KillTimer_(hwnd,timer_id)  
        timer = 0
        
      EndIf
      
    ElseIf event = #WM_CLOSE 
      
      Break 
      
    EndIf
    
    
  ForEver

Desweiteren ist deine Eventschleife voellig fuern Eimer, da dort nichtmal
nen Event verarbeitet wird.


Eine richtige Eventschleife sollte in etwa so aussehen :

Code: Alles auswählen

  Repeat
    event = WaitWindowEvent()
    
  Until event = #WM_CLOSE
Ob du nun lieber 'ForEver' benutzt und das Event vorher abfaengst ist
egal. Auf ein weiteres 'WaitWindowEvent()' oder sogar, das von 0 genannte,
'While WindowEvent():wend' kann bzw muss verzichtet werden.


Auch dein Readfile hat dort so nichts zu suchen, denn es wird
immer wieder versuchst die Datei zu oeffnen, solange sich an dieser
Datei aber nichts aendert, reicht einmal lesen voellig aus.Du kannst
sie aber auch offen lassen und per Seek darin rumgurken. Ich wuerde
aber die Variante von KG nehmen und in eine Liste speichern.


Hier mal ein kleines Beispiel wie man es machen koennte (nicht perfekt):

Code: Alles auswählen

  Structure Vokabeln
    deutsch.s
    tuerkisch.s
    spanisch.s 
  EndStructure
  
  Enumeration 
    #Window
  EndEnumeration
  
  Enumeration 
    #bt_open
    #bt_next
    #bt_mini
    #l_deutsch
    #l_tuerkisch
    #l_spanisch
    #l_deutsch_v  
    #l_tuerkisch_v
    #l_spanisch_v 
    #l_anzahl 
  EndEnumeration
  
  Global NewList VokabeListe.Vokabeln()
  
  
  Procedure ReadVokabel(file.s)
    
    Protected hFile.l = ReadFile(#PB_Any,file) 
    Protected sLine.s , lRFormat.l 
    Protected sDeutsch.s , sTuerkisch.s , sSpanisch.s
    Protected lZaehler.l
    
    If hFile
      ClearList(VokabeListe()) 
      
      lRFormat = ReadStringFormat(hFile) 
      
      While Eof(hFile) = 0
        
        sLine = ReadString(hFile,lRFormat) 
        
        sDeutsch    = StringField(sLine, 1, ",")
        sTuerkisch  = StringField(sLine, 2, ",")
        sSpanisch   = StringField(sLine, 3, ",")
        
        If sDeutsch Or sTuerkisch  Or sSpanisch
          AddElement(VokabeListe()) 
          VokabeListe()\deutsch   = Trim(sDeutsch)
          VokabeListe()\tuerkisch = Trim(sTuerkisch)
          VokabeListe()\spanisch  = Trim(sSpanisch)
          sDeutsch    = "" 
          sTuerkisch  = ""
          sSpanisch   = ""
        EndIf 
        
        lZaehler + 1
        
      Wend  
      
      CloseFile(hFile)
    EndIf
    ProcedureReturn lZaehler
  EndProcedure
  
  Procedure GetVokabel()
    Protected lCount  = CountList(VokabeListe())
    
    If lCount
      Protected lRandom = Random(lCount)
      SelectElement(VokabeListe(),lRandom)
      
      SetGadgetText(#l_deutsch_v,VokabeListe()\deutsch )
      SetGadgetText(#l_tuerkisch_v,VokabeListe()\tuerkisch )
      SetGadgetText(#l_spanisch_v,VokabeListe()\spanisch ) 
      
      DeleteElement(VokabeListe())
      
      If lCount > 1
        DisableGadget(#bt_next,0)
      Else
         DisableGadget(#bt_next,1)
      EndIf
      
      ProcedureReturn 1
    EndIf
    
  EndProcedure
  
  hwnd = OpenWindow(0,0,0,400,240,"")
  
  timer_ms = 1000
  timer_id = 0 
  
  CreateGadgetList(hwnd)
  
  ButtonGadget(#bt_open,10,10,90,22,"Vokabeln laden")
  ButtonGadget(#bt_next,10,40,90,22,"naechste") : DisableGadget(#bt_next,1)
  ButtonGadget(#bt_mini,10,70,90,22,"verstecken")
  
  TextGadget(#l_anzahl      ,110,10,200,22,"keine Vokabeln vorhanden",#PB_Text_Border )
  
  TextGadget(#l_deutsch     ,10,130,100,20,"deutsch : ")
  TextGadget(#l_tuerkisch   ,10,160,100,20,"tuerkisch : ")
  TextGadget(#l_spanisch    ,10,190,100,20,"spanisch : ")
  
  TextGadget(#l_deutsch_v   ,110,130,200,22,"",#PB_Text_Border )
  TextGadget(#l_tuerkisch_v ,110,160,200,22,"",#PB_Text_Border )
  TextGadget(#l_spanisch_v  ,110,190,200,22,"",#PB_Text_Border )
  
  
  Repeat
    event = WaitWindowEvent()
    
    If event = #WM_CLOSE
      Break
    EndIf
    
    If event = #PB_Event_Gadget 
      If EventGadget() = #bt_open
        Anzahl = ReadVokabel("v.txt") 
        SetGadgetText(#l_anzahl,Str(Anzahl)+ " Vokabel(n) vorhanden") 
        GetVokabel() 
      EndIf
      
      If EventGadget() = #bt_next
        If GetVokabel() 
          Anzahl - 1
          SetGadgetText(#l_anzahl,Str(Anzahl)+ " Vokabel(n) vorhanden")
        EndIf 
      EndIf
      
      If EventGadget() = #bt_mini
        SetWindowState(0, #PB_Window_Minimize)
        timer = SetTimer_(hwnd,timer_id,timer_ms,0) 
      EndIf
      
    EndIf
    
    If event = #WM_TIMER
      
      If EventwParam() = timer_id
        
        SetWindowState(0, #PB_Window_Normal)
        KillTimer_(hwnd,timer_id)
        timer = 0
        
      EndIf
      
      If event = #WM_SIZE
        
        If Not timer 
          KillTimer_(hwnd,timer_id) 
          timer = 0 
        EndIf
        
      EndIf
      
    EndIf
    
  ForEver 
v.txt hat geschrieben: deutsch0 , tuerkisch0 , spanisch0
deutsch1 , tuerkisch1 , spanisch1
deutsch2 , tuerkisch2 , spanisch2
deutsch3 , tuerkisch3 , spanisch3
HemSA
Beiträge: 221
Registriert: 16.10.2005 13:59
Wohnort: Manisa / Türkei
Kontaktdaten:

Beitrag von HemSA »

Hallo Edel,
vielen Dank für deine Mühe.
Ich bin eben noch ein Anfänger und verstehe von PB noch nicht alles.
Aber leider verstehe ich dann eben auch nicht alles was in deinem Code vorgeht. Wenn man da die Hilfetaste drückt - kommt da nur das Allgemeine Fenster oder garnichts - es sind wohl wahrscheinlich API-Befehle dabei?!

Ich habe natürlich den restlichen Tag versucht was aus meinem Code zu machen. Das Ergebnis ist unten angefügt. Es funktioniert eigendlich genau so wie ich es haben will,
- man kann es zu jeder Zeit auf dem normalen Weg schliessen über ein extra Fenster ( in dem Fenster könnte ich später noch ein paar Bemerkungen reinschreiben wie z. B. die Wortschatzanzahl was jetzt noch im Erinnerungsfenster angezeigt wird )
- es wird immer zufällig ein Wort von dem Datensatz ausgewählt ( wichtig: nicht nach der Reihe )

Das Dumme ist nur, das ich jedesmal den "Startbutton" drücken muss. Ich habe auch schon Änderungen gemacht, dann läuft das automatisch ( wie ich es will ), aber dann kann ich es nicht mehr schliessen :cry:

Mein Hauptziel ist jetzt einfach: Das man nur am Anfang den "Startbutton" einmal drückt und dann das Ganze automatisch abläuft bis das Programm mit dem Startfenster über das "X" wieder geschlossen wird.

Es soll eben immer zufällig ( nicht nach der Reihe ) ein Wortpaar aus der Datei angezeigt werden mit einer bestimmten Anzeigedauer und einer bestimmten "Versteckdauer" (aus der PB-Hilfe habe ich eben dieses "DELAY" gefunden was mir passend erschien - deswegen habe ich es benutzt ).Deswegen habe ich da eine Schleife wo immer eine zufällige Zeilenzahl ermittelt wird die dann ausgelesen wird.

Dann sollte das Ganze automatisch ablaufen. Ich will nicht das der Anwender immer auf ein "Button" drücken muss damit es weitergeht ( er hat ja bestimmt noch andere Sachen zu tun, und wenn ich ihn zwinge immer mal einen "Button" zu drücken - dann wird er es wohl bald bleiben lassen und das Programm erst garnicht mehr starten ). Er soll es nur mit dem Auge erfassen und dann selbst entscheiden, ob er die Wörter liest oder ob es gerade unpassend ist ( Telefon, Besuch etc. )

Was den Code angeht, gibt es bestimmt noch viele Verbesserungsmöglichkeiten:
- eines wäre das mit dem "Delay" zu ändern. Werde mir dazu deinen Code mal näher anschauen ( was ist denn der Unterschied zwischen: timer_ms und "Delay"? )
- dann das Ganze in eine Liste laden ( Wieso, damit nicht jedesmal auf die Festplatte zugegriffen wird? - es soll ja jedesmal eine zufällige Zeilennummer ermittelt werden - was die Zeit angeht ist es ja wirklich nicht wichtig, und es werden ja auch keine Millionen von Zeilen sein )

Aber wie schon gesagt - wenn es klappt, dass es, ohne immer den "Startbutton" zu drücken, automatisch abläuft und trotzdem immer das Programm über das erste Fenster geschlossen werden kann bin ich für das erste schon mal zufrieden. Ist es möglich?

Vielen Dank schon mal im Vorraus für die Mühe.

Hier ist der Code - wie immer in PB 4:

Code: Alles auswählen


Procedure hauptfenster()
If OpenWindow(0,500,100,200,200,"Schliess",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar )
EndIf 

 If CreateGadgetList(WindowID(0))
       ButtonGadget(7, 10, 50, 50, 30, "Start")
 EndIf
;While WindowEvent():Wend
EndProcedure    



Procedure erinnerungsfenster()

If OpenWindow(1,50,100,350,200,"Testfenster",#PB_Window_BorderLess)
EndIf 
 
  
     If LoadFont(1, "Arial", 20) 
      SetGadgetFont(#PB_Default, FontID(1))
     EndIf
 
  
  
    If  LoadImage(0, "C:\I.bmp")   
        LoadImage(1, "C:\Tr.bmp")    
    EndIf
  
 
    If CreateGadgetList(WindowID(1))
      ImageGadget(1, 10,10,10, 10,ImageID(0))                     
      TextGadget(2, 100, 20, 150, 50, "")                           
      ImageGadget(3, 10,80,10, 10,ImageID(1))    
      TextGadget(4, 100,90, 150, 50, "")
      TextGadget(5, 10,150, 250, 50, "Wortschatzanzahl: ")
      TextGadget(6, 250,150, 100, 50, "")
      
    EndIf
  
EndProcedure   
    
hauptfenster()
    
schleifew.w=0
   
   Repeat     
             
        EventID = WaitWindowEvent()
        
    If EventID = #PB_Event_CloseWindow 
      quit = 1
    EndIf
    
    ;If schleifew.w=1
    ;    Goto Schleife
    ;EndIf
    
    
    If EventID = #PB_Event_Gadget    
      If EventGadget()=7
            schleifew.w=1
      EndIf
       
       
       
       
      
      
Schleife:              
         If ReadFile(1,"data.txt")
              laengew.w= Lof(1)                                      
              
              zeilenanzahlw.w=laengew.w/62
              zeilenanzahls.s= StrU((zeilenanzahlw.w), #Word)
              
              
              zufallszeilennummerw.w= Random(zeilenanzahlw.w-1)
              
              FileSeek(1,zufallszeilennummerw.w*62)                                        
          
              wert1s.s= StrU((zufallszeilennummerw.w+1), #Word)           
              wert2s.s=ReadString(1)
              italienischs.s=Left(wert2s.s,20)
              tuerkischs.s=Mid(wert2s.s,21, 20)
              deutschs.s=Mid(wert2s.s,41, 20)
      
             erinnerungsfenster()  
      
              SetGadgetText(2,italienischs.s)    
              SetGadgetText(4,tuerkischs.s)
              SetGadgetText(6,zeilenanzahls.s)
            
                
            CloseFile(1)
         EndIf   
 
        
 
 
          Debug "Zeile: "+wert1s.s+"     Italienisch:    "+italienischs.s+"     Türkisch:    "+tuerkischs.s+"     Deutsch:    "+deutschs.s    
    
            Delay(500)
            SetWindowState(1, #PB_Window_Minimize)
            Delay(1000)
            SetWindowState(1, #PB_Window_Normal)
                     
           
   EndIf
 
        
 ;EndIf
Until quit=1


End
PB 4.02 (wegen Disphelper), 5.72 (Windows) (x64)
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

wenn du es automatisch ablaufen lassen moechtest nutze SetTimer_
(Api Befehle enden in PB mit einem Unterstrich '_' )

Beispiel : (Debugger einschalten)

Code: Alles auswählen



Global hwnd = OpenWindow(0,10,10,300,300,"")

#timer_ms_0 = 500
#timer_id_0 = 0

#timer_ms_1 = 500
#timer_id_1 = 1

Procedure timer0()
  Debug "Timer ->  0"
EndProcedure

Procedure timer1()
  Static Count
  Debug "Timer ->      1"
  Count + 1
  If Count = 5
    Debug "Timer 1 wird beendet"
    KillTimer_(hwnd,#timer_id_1)
    Debug "Timer 0 wird ersetzt"
    SetTimer_(hwnd,#timer_id_0,2000,@timer0()) ; Timer 0
  EndIf
EndProcedure


SetTimer_(hwnd,#timer_id_0,#timer_ms_0,@timer0()) ; Timer 0
SetTimer_(hwnd,#timer_id_1,#timer_ms_1,@timer1()) ; Timer 1

Repeat
  event = WaitWindowEvent() 
Until event = #WM_CLOSE 
Beide Timer blockieren nicht das Programm, im Gegensatz zu Delay(x) (sleep_(x)),
dort wird das ganze Programm fuer x ms angehalten.
HemSA
Beiträge: 221
Registriert: 16.10.2005 13:59
Wohnort: Manisa / Türkei
Kontaktdaten:

Beitrag von HemSA »

Hallo Edel,
vielen Dank für die Mühe die du gemacht hast.

Ich habe hier in der Arbeit kein PB.

Wo und wie baue ich jetzt deinen letzten geposteten Code in meinen ein, das das Programm nach dem Betätigen vom Startknopf im Hauptfenster immer automatisch durchläuft bis zum Stoppen das "X" im Hauptfenster gedrückt wird?

Nochmals vielen Dank!
PB 4.02 (wegen Disphelper), 5.72 (Windows) (x64)
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

keine Ahnung ob ich dich richtig verstanden habe :

Code: Alles auswählen



Procedure hauptfenster()
  If OpenWindow(0,500,100,200,200,"Schliess",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar )
  EndIf
  
  If CreateGadgetList(WindowID(0))
    ButtonGadget(7, 10, 50, 50, 30, "Start")
  EndIf
  ;While WindowEvent():Wend
EndProcedure   



Procedure erinnerungsfenster()
  
  If OpenWindow(1,50,100,350,200,"Testfenster",#PB_Window_BorderLess)
  EndIf
  
  
  If LoadFont(1, "Arial", 20)
    SetGadgetFont(#PB_Default, FontID(1))
  EndIf
  
  
  If CreateGadgetList(WindowID(1))
;    ImageGadget(1, 10,10,10, 10,ImageID(0))                     
    TextGadget(2, 100, 20, 150, 50, "")                           
;    ImageGadget(3, 10,80,10, 10,ImageID(1))   
    TextGadget(4, 100,90, 150, 50, "")
    TextGadget(5, 10,150, 250, 50, "Wortschatzanzahl: ")
    TextGadget(6, 250,150, 100, 50, "")
    
  EndIf
  
EndProcedure   
   
hauptfenster()
   
Procedure Hidewin()
  Static Status 
  
  Status ! 1 ; wenn 0 dann 1 , wenn 1 dann 0
  
  HideWindow(1,Status)
  
EndProcedure

Repeat     
  
  EventID = WaitWindowEvent()
  
  If EventID = #PB_Event_CloseWindow
    quit = 1
  EndIf
  
  ;If schleifew.w=1
  ;    Goto Schleife
  ;EndIf
  
  
  If EventID = #PB_Event_Gadget   
    If EventGadget()=7 
      
      If ReadFile(1,"data.txt")
      laengew.w= Lof(1)                                     
      
      zeilenanzahlw.w=laengew.w/62
      zeilenanzahls.s= StrU((zeilenanzahlw.w), #Word)
      
      
      zufallszeilennummerw.w= Random(zeilenanzahlw.w-1)
      
      FileSeek(1,zufallszeilennummerw.w*62)                                       
      
      wert1s.s= StrU((zufallszeilennummerw.w+1), #Word)           
      wert2s.s=ReadString(1)
      italienischs.s=Left(wert2s.s,20)
      tuerkischs.s=Mid(wert2s.s,21, 20)
      deutschs.s=Mid(wert2s.s,41, 20)
      
      erinnerungsfenster() 
      
      SetGadgetText(2,italienischs.s)   
      SetGadgetText(4,tuerkischs.s)
      SetGadgetText(6,zeilenanzahls.s)
      
      
      CloseFile(1)
      
      SetTimer_(WindowID(0),0,1000,@Hidewin())
      
    EndIf   
  EndIf
  
    
    
    Debug "Zeile: "+wert1s.s+"     Italienisch:    "+italienischs.s+"     Türkisch:    "+tuerkischs.s+"     Deutsch:    "+deutschs.s    
    
  EndIf
  
  
  ;EndIf
Until quit=1


End

HemSA
Beiträge: 221
Registriert: 16.10.2005 13:59
Wohnort: Manisa / Türkei
Kontaktdaten:

Beitrag von HemSA »

Nochmals Danke Edel,
ich werde das mit dem geändertem Code von dir abends daheim testen.

Ablauf sollte wie schon gesagt so sein:

- mit Betätigung vom "Startbutton" im Hauptfenster soll das Programm starten und immer automatisch durchlaufen. Das heisst das Erinnerungsfenster soll immer wieder mal auftauchen für ca. 3 sek. mit den beiden Wörtern, um dann wieder für ca. 3 min. von der Bildfläche verschwinden um danach wieder für ca. 3 sek auf dem Bildschirm zu erscheinen. Und dieses "Hin-und Herpendeln (auftauchen/verschwinden)" sollte so lange gehen, bis ich im Hauptfenster das "X" betätige um das Progamm ordnungsgemäss zu beenden.

Edel, nochmals danke, und ich werde es heute abend sofort mal testen. Falls noch Fragen sind melde ich mich ( ich hoffe es wird dir nicht zuviel).

Tschüssle
PB 4.02 (wegen Disphelper), 5.72 (Windows) (x64)
HemSA
Beiträge: 221
Registriert: 16.10.2005 13:59
Wohnort: Manisa / Türkei
Kontaktdaten:

Beitrag von HemSA »

keine Ahnung ob ich dich richtig verstanden habe :
Hallo Edel, nein da haben wir uns leider nicht richtig verstanden.
Dein Programm zeigt ja das Erinnerungsfenster immer eine bestimmte Zeit an, und die gleiche Zeit versteckt es dann wieder. Ich wollte aber unterschiedliche Zeiten ( z.B. für das Anzeigen 3 Sekungen, und das Verstecken z.B. 5 Minuten ). Dann zeigt dein Erinnerungsfenster immer die beiden gleichen Wörter an, bis ich wieder den "Startbotton" gedrückt habe. Ich wollte den "Startbutton" aber nur einmal zum Begin drücken um das Programm zu starten. Danach sollte es immer automatisch weiterlaufen um nach jedem Verstecken mit einem anderem zufällig ausgewähltem Wortpaar wieder aufzutauchen. Und das sollte so lange gehen bis ich im Hauptfenster das "X" gedrückt habe, um damit das Programm zu beenden.

Trotzdem vielen Dank für die Mühe und Zeit die du dir genommen hast.

Tschüssle
PB 4.02 (wegen Disphelper), 5.72 (Windows) (x64)
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Code: Alles auswählen

  Procedure Hidewin()
    Static zeit
    
    If ElapsedMilliseconds() > zeit
      zeit = ElapsedMilliseconds() + 10000 
      HideWindow(1,0)
    Else
      HideWindow(1,1)
    EndIf
    
  EndProcedure
versuch es mal damit
HemSA
Beiträge: 221
Registriert: 16.10.2005 13:59
Wohnort: Manisa / Türkei
Kontaktdaten:

Beitrag von HemSA »

SetTimer_(WindowID(0),0,1000,@Hidewin())
Hallo Edel, ja so habe ich es mir gedacht.
==> die 1000 sind dann ja wohl die Anzeigezeit ( warum ändert sich eigendlich nichts wenn ich bei WindowID(0 oder 1 schreibe? Das versteckende Window ist ja 1 ?! )
zeit = ElapsedMilliseconds() + 10000zeit = ElapsedMilliseconds() + 10000
==> die 10000 ist dann die Zeit die es versteckt bleibt?

Habe ich das so richtig verstanden?

Und kann man das mit der Automatik noch hinbekommen - jetzt bin ich so kurz vor dem Ziel von dem was ich wollte ( ich als Anfänger )?
Ich wollte den "Startbutton" aber nur einmal zum Begin drücken um das Programm zu starten. Danach sollte es immer automatisch weiterlaufen um nach jedem Verstecken mit einem anderem zufällig ausgewähltem Wortpaar wieder aufzutauchen. Und das sollte so lange gehen bis ich im Hauptfenster das "X" gedrückt habe, um damit das Programm zu beenden.
Danke noch im Vorraus.
PB 4.02 (wegen Disphelper), 5.72 (Windows) (x64)
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Das Handle des Fenster (windowid(x)) wird bei SetTimer nicht gebraucht,
da du hier eh nur ein Event hast. Und schau dir mal StringField an.

Code: Alles auswählen

  
  
  
  Procedure hauptfenster()
    If OpenWindow(0,500,100,200,200,"Schliess",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    EndIf
    
    If CreateGadgetList(WindowID(0))
      ButtonGadget(7, 10, 50, 50, 30, "Start")
    EndIf
    
    If OpenWindow(1,50,100,350,200,"Testfenster",#PB_Window_BorderLess|#PB_Window_Invisible)
      
      
      If LoadFont(1, "Arial", 20)
        SetGadgetFont(#PB_Default, FontID(1))
      EndIf
      
      If  LoadImage(0, "C:\I.bmp")   
        LoadImage(1, "C:\Tr.bmp")   
      EndIf 
      
      
      If CreateGadgetList(WindowID(1))
        ImageGadget(1, 10,10,10, 10,ImageID(0))                     
        TextGadget(2, 100, 20, 150, 50, "")                           
        ImageGadget(3, 10,80,10, 10,ImageID(1))   
        TextGadget(4, 100,90, 150, 50, "")
        TextGadget(5, 10,150, 250, 50, "Wortschatzanzahl: ")
        TextGadget(6, 250,150, 100, 50, "")
        
      EndIf
      
    EndIf
    
  EndProcedure   
  
  hauptfenster()
  
  
  Procedure Hidewin()
    Static zeit
    
    If ElapsedMilliseconds() > zeit
      zeit = ElapsedMilliseconds() + 10000 
      
      If ReadFile(1,"data.txt")
        laengew.w= Lof(1)
        zeilenanzahlw.w=laengew.w/62
        zeilenanzahls.s= StrU((zeilenanzahlw.w), #Word) 
        
        zufallszeilennummerw.w= Random(zeilenanzahlw.w-1)
        
        FileSeek(1,zufallszeilennummerw.w*62)                                       
        
        wert1s.s= StrU((zufallszeilennummerw.w+1), #Word)           
        wert2s.s=ReadString(1)
        italienischs.s=Left(wert2s.s,20)
        tuerkischs.s=Mid(wert2s.s,21, 20)
        deutschs.s=Mid(wert2s.s,41, 20) 
        
        SetGadgetText(2,italienischs.s)   
        SetGadgetText(4,tuerkischs.s)
        SetGadgetText(6,zeilenanzahls.s)
        
        
        CloseFile(1)
        
      EndIf
      
      HideWindow(1,0)
      
    Else
      HideWindow(1,1)
    EndIf
    
  EndProcedure
  
  Repeat     
    
    EventID = WaitWindowEvent()
    
    If EventID = #PB_Event_CloseWindow
      quit = 1
    EndIf
    
    If EventID = #PB_Event_Gadget   
      If EventGadget()=7 
        SetTimer_(0,0,1000,@Hidewin()) 
      EndIf
      
      Debug "Zeile: "+wert1s.s+"     Italienisch:    "+italienischs.s+"     Türkisch:    "+tuerkischs.s+"     Deutsch:    "+deutschs.s   
      
    EndIf
    
  Until quit=1
  
  
  End
  

Antworten