Clip-Board mal anders

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
SDL
Beiträge: 65
Registriert: 15.09.2006 05:19
Computerausstattung: MSI 990FXA-GD80
AMD FX-8350(3,1GHz) 4-4,4GHz
Corsair Dominator Platinum 8GB 2133 (2240)
2 Nvidia GeForce GTX 550Ti
Xilence XQ semipassives Netzteil 750Watt
SATA III WDC WD10 1TB
SATA III SSD Toshiba 128 GB
SATA III SSD Samsung 840 EVO 250 GB
eSATA WDC WD SE16 500 GB

Wassergekühlt

Win 7 pro
Leistungsindex 7,8
Wohnort: Hansestadt Stendal

Clip-Board mal anders

Beitrag von SDL »

Ich hab mal wieder was gebastelt.
Ich benutze es zum schnellen ablegen von E-Mail-Adressen oder Textabschnitten.

Vielleicht kann es einer gebrauchen.
Einziger Wermutstropfen, die Oberfläche ist mit PureVision erstellt.
Aber da kann man ja selbst Handanlegen.

Hier die Links für den Code:
https://onedrive.live.com/embed?cid=078 ... WRlo_paMek
https://onedrive.live.com/embed?cid=078 ... ZN-gWIkaX4
https://onedrive.live.com/embed?cid=078 ... puc77AAKme

PVS Datei ; Code und die Hover.pbi die ich verwendet habe.
https://onedrive.live.com/embed?cid=078 ... jfeK7700vI Hier die EXE für alle die PureVision nicht haben.

Und hier mal der Code, bin für Kritiken und Hinweise dankbar:

Code: Alles auswählen

;******************************************************************************
;*                                                                            *
;*      (c) SDL                                      01/2019    *
;*                                                                            *
;******************************************************************************
;/ PureBasic v5.62 x64

;******************************************************************************
;* Variablendefinition & Konstanten                                           *
;******************************************************************************

;{ Konstanten
#GadgetIndex=#PB_Compiler_EnumerationValue

#Anzahl = 55          ; max. Anzahl der möglichen Button-Definitionen (5*11)
#Bubble_On =1         ; -1,0,1
#Bubble_len=24        ; ab Länge Bubbletip

; 5 mögliche (0-4) Tastenblöcke mit 11 Tasten
#Spalte=4             ; Anzahl der Tastenblöcke (0-4) 
#Zeile=10             ; Anzahl der Button ( 0-10 = 11)

#Null_= Chr(32)       ; Leerzeichen für Buttontext zum füllen für Array--> definierter Zustand
#Lo_="Löschen"
#Sp_="Speichern"
#B_ ="#-#"
;}

;{ Globale Variablen
Global BubbleTipStyle=#Bubble_On    ; Schalter für Bubbletip 
Global Datei$="Form-Text.ini"       ; INI-Dateiname
Global column.b =0                  ; aktuelle Spalte
Global change.b =0                  ; Hilfsvariable für Veränderungen

Global Gadget_Form1_Close       ; Schließ-Button    
Global Gadget_Form1_Button01    ; Kopier-Button 
Global Gadget_Form1_Button02  
Global Gadget_Form1_Button03  
Global Gadget_Form1_Button04  
Global Gadget_Form1_Button05  
Global Gadget_Form1_Button06  
Global Gadget_Form1_Button07  
Global Gadget_Form1_Button08  
Global Gadget_Form1_Button09  
Global Gadget_Form1_Button10  
Global Gadget_Form1_Button11  

Global Gadget_Form1_Button16    ;First digit-Button
Global Gadget_Form1_Option19    ;nach links blättern-Button
Global Gadget_Form1_Option20    ;nach recht blättern-Button

Global Gadget_Form1_Button19    ;Minimieren-Button

Global Button_1
Global Button_2
Global Button_3
Global Button_4
Global Button_5
Global Button_6
Global Button_7
Global Button_8
Global Button_9
Global Button_10
Global Button_11
;}

;{ Typenlose Variablen
Define EventID,GadgetID,WindowID,EventTypID ; Ereignis-Variablen 
Define quitForm1                            ; Schleifenende =1
;}

;{ Fenster Konstante
Global Window_Form1
;}

;{ Gadget Konstanten
Enumeration 1   ;Sequenz von Konstanten deklarieren
    ;für Window_Form1
    #Gadget_Form1_xPureSkin2
EndEnumeration
;}

;{ Image Constants
Enumeration 1
    #Image_Form1_xPureSkin2
EndEnumeration
;}

;{ Load Images
DataSection
    _OPT_Form1_xPureSkin2:
    IncludeBinary "Skins\200x312.pvs"
EndDataSection
;}

;{ Button/  mögliche (0-4) Tastenblöcke mit 11 Tasten
Global Dim Button_Clip.s(#Spalte,#Zeile) 
;}

XIncludeFile "Form1_Windows_mit.pb" ; Fensterdefinition
XIncludeFile "D:\PureBasic\Progx64\PureBasic\pbi\Hover.pbi" ; MouseOver über API
;XIncludeFile "D:\PureBasic\Progx64\PureBasic\pbi\ButtonColorGadget.pbi"

;{ Declaration der Proceduren
Declare PauseB(Text$)                   ; Speichern in Clipboard
Declare WindowFront(WindowID.l, Bool.b) ; Fenster in den Vordergrund oder Normal
Declare FirstDigit ()                   ; Vordergrund Button-Auswertung
Declare Datei_()                        ; INI-datei suchen
Declare Fuellen(Text$)                  ; Button_Clip füllen mit Leerstring (definierter Zustand)
Declare INI()                           ; INI-Datei öffnen und einlesen
Declare rotation_rechts()               ; Button_Clip nach rechts rotieren
Declare rotation_links()                ; Button_Clip nach links rotieren
Declare Button_()                       ; ButtonText ändern
Declare Bubble_Tip()                    ; Bubble-Tip aktivieren
Declare Loeschen(x,y)                   ; Lösche Array Textinhalt
Declare Speichern(x,y)                  ; speichert Text-Clip-Boardinhalt in Array
Declare Create_Form_Text_ini()          ; Form-Text.ini Leerdatei erstellen
Declare MyArray(x)                      ; Speichert Array in Datei
Declare Speicherabfrage()               ; Reqester für Änderung Übernehmen?
Declare Abfrage_(x,y)                   ; Abfrage Speicher/Löschen-Button für Clip
Declare Abfrage_PVG_Bubble (Gadget_Button,x,y)
Declare Abfrage_G_ToolTip(Gadget_Button,x,y) ;Tool-Tip Speicher/Löschen-Button
;}

;******************************************************************************
;*                                                                            *
;* Programm                                                                   *
;*                                                                            *
;******************************************************************************

Datei_() ; Test auf INI-Datei und Array füllen mit Leerstring

INI()    ; INI Zeilen auslesen und in Struktur schreiben

; *****************************************************************************
; *     Ereignisschleife                                                      *

If Window_Form1()   ; wenn Fenstererstellung erfolgreich
     
    SetGadgetState(Gadget_Form1_Button16,#True) ; setzt ToggleButton auf True
    WindowFront(Window_Form1,GetGadgetState(Gadget_Form1_Button16)) ; setzt Fenster per API in den Vordergrund
    
    ;Init Fenster für Hover.pbi
    InitHoverEvents(WindowID(Window_Form1))
    
    ;{ Init Gadget 1-11 für Hover.pbi
    AddHoverGadget(GadgetID(Gadget_Form1_Button01))
    AddHoverGadget(GadgetID(Gadget_Form1_Button02))
    AddHoverGadget(GadgetID(Gadget_Form1_Button03))
    AddHoverGadget(GadgetID(Gadget_Form1_Button04))
    AddHoverGadget(GadgetID(Gadget_Form1_Button05))
    AddHoverGadget(GadgetID(Gadget_Form1_Button06))
    AddHoverGadget(GadgetID(Gadget_Form1_Button07))
    AddHoverGadget(GadgetID(Gadget_Form1_Button08))
    AddHoverGadget(GadgetID(Gadget_Form1_Button09))
    AddHoverGadget(GadgetID(Gadget_Form1_Button10))
    AddHoverGadget(GadgetID(Gadget_Form1_Button11))
    ;}
    
    Button_()   ;ButtonText ändern
    Bubble_Tip(); Bubble-Tip aktualisieren
    
    quitForm1=0 ; Schleifenende
    Repeat
        EventID  =WaitWindowEvent()
        GadgetID =EventGadget()
        WindowID =EventWindow()
        EventTypID=EventType()
        
        
        Select EventID
                
            Case #WM_LBUTTONDOWN
                SendMessage_(WindowID(Window_Form1),#WM_NCLBUTTONDOWN,#HTCAPTION,0)  ;API
                ; Die Funktion SendMessage sendet die angegebene Nachricht an einem Fenster oder Windows. 
                ; Ruft die Fensterprozedur für das angegebene Fenster auf und kehrt erst nach der Verarbeitung 
                ; der Nachricht durch die Fensterprozedur zurück.
                
            Case #PB_Event_Gadget
                If EventType() = #HoverEvent_EnterGadget

                ; Zeichnet roten Rahmen um Taste
                    GetWindowRect_(GadgetID(EventGadget()), @wr.RECT)   ;API's
                    MapWindowPoints_(0, WindowID(Window_Form1), @wr, 2)
                    StartDrawing(WindowOutput(Window_Form1))
                    DrawingMode(#PB_2DDrawing_Outlined)
                    Box(wr\left-1, wr\top-1, wr\right-wr\left+2, wr\bottom-wr\top+2, #Red)
                    StopDrawing()
                ElseIf EventType() = #HoverEvent_LeaveGadget
                    
                ; entfernt roten Rahmen um Taste
                    GetWindowRect_(GadgetID(EventGadget()), @wr.RECT)   ; API's 
                    MapWindowPoints_(0, WindowID(Window_Form1), @wr, 2)
                    StartDrawing(WindowOutput(Window_Form1))
                    DrawingMode(#PB_2DDrawing_Outlined)
                    Box(wr\left-1, wr\top-1, wr\right-wr\left+2, wr\bottom-wr\top+2, GetSysColor_(#COLOR_3DFACE))
                    StopDrawing()
                EndIf
                
                Select GadgetID
                    Case Gadget_Form1_Close
                        Select WindowID
                            Case Window_Form1
                                quitForm1=1
                        EndSelect
                        
                    Case Gadget_Form1_Button01
                         PauseB(Button_Clip(column,0))   ; Kopiert String in die Zwischenablage
                    Case Gadget_Form1_Button02
                         PauseB(Button_Clip(column,1))
                    Case Gadget_Form1_Button03
                         PauseB(Button_Clip(column,2))
                    Case Gadget_Form1_Button04
                         PauseB(Button_Clip(column,3))
                    Case Gadget_Form1_Button05
                         PauseB(Button_Clip(column,4))
                    Case Gadget_Form1_Button06
                         PauseB(Button_Clip(column,5))
                    Case Gadget_Form1_Button07
                         PauseB(Button_Clip(column,6))
                    Case Gadget_Form1_Button08
                         PauseB(Button_Clip(column,7))
                    Case Gadget_Form1_Button09
                        PauseB(Button_Clip(column,8))
                    Case Gadget_Form1_Button10
                        PauseB(Button_Clip(column,9))
                    Case Gadget_Form1_Button11
                        PauseB(Button_Clip(column,10))
                        
                    Case Gadget_Form1_Button16
                        FirstDigit ()
                        
                    Case Gadget_Form1_Option19
                        rotation_rechts()
                        SetGadgetState(Gadget_Form1_Option19,0)
                    Case Gadget_Form1_Option20 
                        rotation_links()
                        SetGadgetState(Gadget_Form1_Option20,0)
                        
                    Case Gadget_Form1_Button19
                        SetWindowState(Window_Form1,#PB_Window_Minimize)
                        
                    Case Button_1
                        Abfrage_(column,0)
                    Case Button_2
                        Abfrage_(column,1)
                    Case Button_3
                        Abfrage_(column,2)   
                    Case Button_4
                        Abfrage_(column,3)    
                    Case Button_5
                        Abfrage_(column,4)
                    Case Button_6
                        Abfrage_(column,5)
                    Case Button_7
                        Abfrage_(column,6)
                    Case Button_8
                        Abfrage_(column,7)
                    Case Button_9
                        Abfrage_(column,8)                        
                    Case Button_10
                        Abfrage_(column,9)
                    Case Button_11 
                        Abfrage_(column,10) 
                        
                EndSelect
                
        EndSelect
    Until quitForm1
    
    If change=1:Speicherabfrage():EndIf
    
    EndHoverEvents(WindowID(Window_Form1))  ; Thread schließen
    FreeArray(Button_Clip())                ; Array leeren und freigeben
    CloseWindow(Window_Form1)               ; Fenster schließen
    
EndIf

End 

;******************************************************************************
;*                                                                            *
;* Prozeduren                                                                 *
;*                                                                            *
;******************************************************************************
; Löscht Zwischenablage und setzt neuen Inhalt nach Linksklick
Procedure PauseB (Text$)
    
    If EventType() = #PB_EventType_LeftClick    ; geht auch ohne, ist aber fehlerbehaftet
        ClearClipboard()
        SetClipboardText(Text$)
    EndIf
          
EndProcedure

;******************************************************************************
; Setzt Fenster per API in den Vordergrund
Procedure WindowFront(WindowID.l, Bool.b)

    Select Bool
        Case #True
            SetWindowPos_(WindowID(WindowID),#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE)
            ;SetWindowPos_(WindowID(WindowID), #HWND_TOPMOST, 0, 0, 0, 0, SWP_NoActivate Or SWP_ShowWindow Or SWP_NoMove Or SWP_NoSize)
        Case #False
            SetWindowPos_(WindowID(WindowID),#HWND_NOTOPMOST,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE)
            ;SetWindowPos_(WindowID(WindowID), #HWND_NotTopMost, 0, 0, 0, 0, SWP_NoActivate Or SWP_ShowWindow Or SWP_NoMove Or SWP_NoSize)
    EndSelect
    ;StickyWindow(Window_Form1,#True)    ; Fenster im Vordergrund / PB-Befehl

EndProcedure

;******************************************************************************
; Setzt ToggleButton 
Procedure FirstDigit ()
    
    WindowFront(Window_Form1,GetGadgetState(Gadget_Form1_Button16)) ; 0= normal/ 1= Vordergrund
    
EndProcedure

;******************************************************************************
; Test auf .ini und Array mit Leerstring füllen
Procedure Datei_()
    Static Result 
    Static s0$="Fehler in INI-Datei"
    Static s1$="Error: Kann INI-Datei nicht finden."
    Static s2$="Neue Datei erstellen?"
    
    If FileSize(Datei$) < 1
        
        Result =MessageRequester(s0$, s1$+#CRLF$+s2$, #MB_ICONEXCLAMATION|#PB_MessageRequester_YesNo)
        
        If Result = #PB_MessageRequester_Yes       ; Ja-Schalter wurde gedrückt
            Create_Form_Text_ini()
        ElseIf Result = #PB_MessageRequester_No    ; Nein-Schalter wurde gedrückt
            FreeArray(Button_Clip())
            End       
            
        EndIf
    Else
        Fuellen(#Null_) 
    EndIf
    
EndProcedure

;******************************************************************************

Procedure INI()
    Static  _Zeile.s="" ; String der ausgelesenen Zeile
    Static  Zeile.s=""
    Static x=0          ; Hilfsvariablen für den zählindex
    Static y=0 
    Static i=0          ; Hilfsvariable Anzahl der Button
    
    If ReadFile(2,Datei$,#PB_Ascii)  ; öffnen der Textdatei zum auslesen der Daten
        
        While Eof(2) = 0  ; sich wiederholende Schleife bis das Ende der Datei ("end of file") erreicht ist
            
            _Zeile=ReadString(2)      ; liest den string aus(Zeile)
            If Len(_Zeile)>1          ; wenn keine "Leertaste"
                _Zeile=Trim(_Zeile) ; entfernt vorrangestellte und nachfolgende Leerzeichen/außer Leertaste mit " "
            EndIf
            
            If Left(_Zeile,3)=#B_   ; wenn Zeilentrenner
                If Zeile>""     ;vorhergehenden Text ablegen in Array wenn aktuelle Zeile "#-#"(neuer Button)
                    Button_Clip(x,y)= Zeile 
                    
                    If y=10 
                        x+1     ;Spalte
                        y=0     ; Zeile
                    Else
                        y+1  ; zähler um 1 erhöhen
                    EndIf
                    
                    ; Anzahl der möglichen Einträge begrenzen
                    i+1  
                    
                    If i>=#Anzahl ;doppelt Kugelsicher ;-)
                        Break
                    EndIf
                    Zeile=""    ; leeren
                EndIf
                
                Zeile=ReadString(2) ; wenn #-# dann lese nachfolgende Zeile
                If Len(Zeile)>1
                    Zeile=Trim(Zeile) ; entfernt vorrangestellte und nachfolgende Leerzeichen
                EndIf
            Else    
                Zeile=Zeile+#CRLF$+_Zeile    ; wenn nicht dann Zeilen verknüpfen
            EndIf
            
        Wend
        
        If i<>55:change=1:Create_Form_Text_ini():EndIf ; Fehler in .ini korregieren
        
        CloseFile(2)  ; schließt die Textdatei
        
    EndIf   
  
EndProcedure

;****************************************************************************
; Array mit Leerstring füllen; definierter Zustand
Procedure Fuellen(Text$)
    Static x=0
    Static y=0
    
    For  x=0 To #Spalte
        For y=0 To #Zeile
            Button_Clip(x,y) =  Text$    
        Next
    Next
    
EndProcedure

;****************************************************************************
; nach rechts rotieren
Procedure rotation_rechts()
    
    If column>0
        column-1   
    Else    
        column=4
    EndIf
     
    Button_()
    Bubble_Tip()
EndProcedure

;****************************************************************************
; nach links rotieren
Procedure rotation_links()
    If column<4
        column+1   
    Else    
        column=0
    EndIf
    
    Button_()
    Bubble_Tip()
EndProcedure

;****************************************************************************
; Button beschriften
Procedure Button_()
    
    SetGadgetText(Gadget_Form1_Button01, Button_Clip(column,0)) 
    SetGadgetText(Gadget_Form1_Button02, Button_Clip(column,1))
    SetGadgetText(Gadget_Form1_Button03, Button_Clip(column,2))
    SetGadgetText(Gadget_Form1_Button04, Button_Clip(column,3))
    SetGadgetText(Gadget_Form1_Button05, Button_Clip(column,4))
    SetGadgetText(Gadget_Form1_Button06, Button_Clip(column,5))
    SetGadgetText(Gadget_Form1_Button07, Button_Clip(column,6))
    SetGadgetText(Gadget_Form1_Button08, Button_Clip(column,7))
    SetGadgetText(Gadget_Form1_Button09, Button_Clip(column,8))
    SetGadgetText(Gadget_Form1_Button10, Button_Clip(column,9))
    SetGadgetText(Gadget_Form1_Button11, Button_Clip(column,10))

EndProcedure

;****************************************************************************
; Bubble-Tip aktualisieren
Procedure Bubble_Tip()
    
    Abfrage_PVG_Bubble(Gadget_Form1_Button01,column,0)    
    Abfrage_PVG_Bubble(Gadget_Form1_Button02,column,1)
    Abfrage_PVG_Bubble(Gadget_Form1_Button03,column,2)
    Abfrage_PVG_Bubble(Gadget_Form1_Button04,column,3)
    Abfrage_PVG_Bubble(Gadget_Form1_Button05,column,4)    
    Abfrage_PVG_Bubble(Gadget_Form1_Button06,column,5)    
    Abfrage_PVG_Bubble(Gadget_Form1_Button07,column,6)    
    Abfrage_PVG_Bubble(Gadget_Form1_Button08,column,7)
    Abfrage_PVG_Bubble(Gadget_Form1_Button09,column,8)
    Abfrage_PVG_Bubble(Gadget_Form1_Button10,column,9)
    Abfrage_PVG_Bubble(Gadget_Form1_Button11,column,10)
    
    Abfrage_G_ToolTip(Button_1,column,0)
    Abfrage_G_ToolTip(Button_2,column,1)
    Abfrage_G_ToolTip(Button_3,column,2)
    Abfrage_G_ToolTip(Button_4,column,3)
    Abfrage_G_ToolTip(Button_5,column,4)
    Abfrage_G_ToolTip(Button_6,column,5)
    Abfrage_G_ToolTip(Button_7,column,6)
    Abfrage_G_ToolTip(Button_8,column,7)
    Abfrage_G_ToolTip(Button_9,column,8)
    Abfrage_G_ToolTip(Button_10,column,9)
    Abfrage_G_ToolTip(Button_11,column,10)
    
EndProcedure

;****************************************************************************
; Löschen Button
Procedure Loeschen(x,y)
    
    Button_Clip(x,y)= #Null_
    Button_()
    Bubble_Tip()   
    change=1
EndProcedure

;****************************************************************************
; Speichern Button
Procedure Speichern(x,y)
    
    Button_Clip(x,y)=Trim(GetClipboardText())
    Button_()
    Bubble_Tip()   
    change=1
EndProcedure

;****************************************************************************
; Form-Text.ini leer erstellen / speichern

Procedure Create_Form_Text_ini()
    Static x
    Static s1$="Fehler INI-Datei"
    Static s2$="Schreibrechte fehlen"
    
    If  CreateFile(1,Datei$,#PB_Ascii)
        For x=1 To 55
            If x<10
                WriteStringN(1,#B_+"0"+Str(x))  
            Else
                WriteStringN(1,#B_+Str(x))  
            EndIf
            If change=0
                WriteStringN(1,#Null_)
            Else
              MyArray(x)
            EndIf
        Next x
        WriteString(1,#B_+"Ende. mehr geht nicht;-)..Nicht Löschen!!")
        
        CloseFile(1)  
    Else
        MessageRequester(s1$, s2$, #PB_MessageRequester_Error|#PB_MessageRequester_Ok)
        FreeArray(Button_Clip())
        End     
    EndIf  
    
EndProcedure

;****************************************************************************
; Array speichern
Procedure MyArray(z)
    ; Button_Clip.s(0-4,0-10)   
    If z=1
        Static x=0
        Static y=0
    EndIf
    
    If Button_Clip(x,y)<>""
        WriteStringN(1,Button_Clip.s(x,y))
    Else
        WriteStringN(1,#Null_)      ; Holzhammer
    EndIf
    
    If y=10 
        x+1   
        y=0  
    Else
        y+1  ; zähler um 1 erhöhen
    EndIf
 
EndProcedure

;****************************************************************************
;Speicherabfrage
Procedure Speicherabfrage()
    Static s1$="Änderungen speichern ?"
    
    Result =MessageRequester(#Sp_, s1$, #MB_ICONQUESTION|#PB_MessageRequester_YesNo)
    
    If Result = #PB_MessageRequester_Yes       ; Ja-Schalter wurde gedrückt
        Create_Form_Text_ini()
    EndIf
     
EndProcedure

;****************************************************************************
;Abfrage des Speicher/Lösch-Button
Procedure Abfrage_(x,y)
    
    If Button_Clip(x,y)> #Null_
        Loeschen(x,y)
    Else   
        Speichern(x,y)
    EndIf 
  
EndProcedure

;****************************************************************************
;  Abfrage Bubble_tip
Procedure Abfrage_PVG_Bubble(Gadget_Button,x,y)
    
    If Len(Button_Clip(x,y))>#Bubble_len
        PVGadgets_BubbleTip(Window_Form1,Gadget_Button,Button_Clip(x,y),#Bubble_On)    
    Else
        PVGadgets_BubbleTip(Window_Form1,Gadget_Button,"",#Bubble_On)
    EndIf
   
EndProcedure

;****************************************************************************
; Abfrage Tooltip
Procedure Abfrage_G_ToolTip(Gadget_Button,x,y)
    
    If Button_Clip(x,y)> #Null_
        GadgetToolTip(Gadget_Button, #Lo_)
    Else   
        GadgetToolTip(Gadget_Button, #Sp_)
    EndIf

EndProcedure

;****************************************************************************
Und das Fenster sieht dann so aus:

Code: Alles auswählen

Procedure.i Window_Form1()
    Window_Form1=OpenWindow(#PB_Any,173,228,200,314,"Work Form1",#PB_Window_BorderLess|#PB_Window_ScreenCentered|#PB_Window_Invisible)
    
    If Window_Form1
        PureSkinMem(Window_Form1,#Gadget_Form1_xPureSkin2,#Image_Form1_xPureSkin2,?_OPT_Form1_xPureSkin2,1)
        
        Gadget_Form1_Close=ButtonGadget(#PB_Any,130,25,20,20,"X",#PB_Button_Default)
        PVGadgets_BubbleTip(Window_Form1,Gadget_Form1_Close,"Bye Bye",0)
        
        Gadget_Form1_Button01=ButtonGadget(#PB_Any,39,63,140,20,"Button 1",#PB_Button_Left)
        Gadget_Form1_Button02=ButtonGadget(#PB_Any,39,84,140,20,"Button 2",#PB_Button_Left)
        Gadget_Form1_Button03=ButtonGadget(#PB_Any,39,105,140,20,"Button 3",#PB_Button_Left)
        Gadget_Form1_Button04=ButtonGadget(#PB_Any,39,126,140,20,"Button 4",#PB_Button_Left)
        Gadget_Form1_Button05=ButtonGadget(#PB_Any,39,147,140,20,"Button 5",#PB_Button_Left)
        Gadget_Form1_Button06=ButtonGadget(#PB_Any,39,168,140,20,"Button 6",#PB_Button_Left)
        Gadget_Form1_Button07=ButtonGadget(#PB_Any,39,189,140,20,"Button 7",#PB_Button_Left)
        Gadget_Form1_Button08=ButtonGadget(#PB_Any,39,210,140,20,"Button 8",#PB_Button_Left)
        Gadget_Form1_Button09=ButtonGadget(#PB_Any,39,231,140,20,"Button 9",#PB_Button_Left)
        Gadget_Form1_Button10=ButtonGadget(#PB_Any,39,252,140,20,"Button 10",#PB_Button_Left)
        Gadget_Form1_Button11=ButtonGadget(#PB_Any,39,273,140,20,"Button 11",#PB_Button_Left)
        
        Gadget_Form1_Button16=ButtonGadget(#PB_Any,50,25,60,20,"First digit",#PB_Button_Toggle)
        
        Gadget_Form1_Option19=OptionGadget(#PB_Any,22,49,13,14,"")
        PVGadgets_BubbleTip(Window_Form1,Gadget_Form1_Option19,"<--- nach links blättern ",0)
        
        Gadget_Form1_Option20=OptionGadget(#PB_Any,165,49,13,14,"")
        PVGadgets_BubbleTip(Window_Form1,Gadget_Form1_Option20,"nach rechts blätter --->",0)
        
        Gadget_Form1_Button19=ButtonGadget(#PB_Any,70,45,60,10,"---",$8000)
        PVGadgets_BubbleTip(Window_Form1,Gadget_Form1_Button19,"Minimieren",0)
        
        Button_1 = ButtonGadget(#PB_Any, 22, 65, 15, 15, "#")
        Button_2 = ButtonGadget(#PB_Any, 22, 86, 15, 15, "#")
        Button_3 = ButtonGadget(#PB_Any, 22, 107, 15, 15, "#")
        Button_4 = ButtonGadget(#PB_Any, 22, 128, 15, 15, "#")
        Button_5 = ButtonGadget(#PB_Any, 22, 149, 15, 15, "#")
        Button_6 = ButtonGadget(#PB_Any, 22, 170, 15, 15, "#")
        Button_7 = ButtonGadget(#PB_Any, 22, 191, 15, 15, "#")
        Button_8 = ButtonGadget(#PB_Any, 22, 212, 15, 15, "#")
        Button_9 = ButtonGadget(#PB_Any, 22, 233, 15, 15, "#")
        Button_10 = ButtonGadget(#PB_Any, 22, 255, 15, 15, "#")
        Button_11 = ButtonGadget(#PB_Any, 22, 275, 15, 15, "#")
        
        
        PureSkinHide(Window_Form1,0)
        
        ProcedureReturn WindowID(Window_Form1)
    EndIf
    
EndProcedure


Zu meiner Schulzeit war die Bildung kostenlos, für einige aber Umsonst.