Mein YT-Downloader, Adresse wird nicht angezeigt

Anfängerfragen zum Programmieren mit PureBasic.
Sommertv
Beiträge: 68
Registriert: 26.04.2019 10:31
Computerausstattung: Lenovo W500, Debian Stable, Purebasic 5.70 (momentan die Testversion)
Wohnort: Mühldorf am Inn

Mein YT-Downloader, Adresse wird nicht angezeigt

Beitrag von Sommertv »

Hallo,
hab jetzt mein Programm weitgehend umgebaut und alles in die Timerschleife eingebunden.
Das funktioniert auch soweit, nur die Adressen der Downloads sollen in dem StringGadget angezeit werden, das tun's aber nicht.
Vielleicht hab ich in einer Schleife noch einen Fehler, den ich net finde...
Ich häng mal den Code ran:

Code: Alles auswählen

EnableExplicit

Enumeration
  #MainScreen
  #DL01_1 = 1
  #DL01_2 = 2  
  #DL01_3 = 3  
  #DL01_4 = 4
  #DL01_5 = 5
  #DL01_6 = 6  
  #DL01_7 = 7
  #DL01_8 = 8  
  #DL01_9 = 9  
  #BtnAdd
  #BtnDownload
  #BtnDel
  #BtnClear
  #BtnExit
  #LabAdr
  #BtnYesNo
  #BtnAbbruch
  #MeinTimer
EndEnumeration


Procedure Open_MainScreen()
    OpenWindow(#MainScreen, 1157, 162, 600, 440, "Youtube Downloader")
    CheckBoxGadget(#DL01_1, 0, 0, 500, 25, "")
    CheckBoxGadget(#DL01_2, 0, 25, 500, 25, "")    
    CheckBoxGadget(#DL01_3, 0, 50, 500, 25, "")    
    CheckBoxGadget(#DL01_4, 0, 75, 500, 25, "")    
    CheckBoxGadget(#DL01_5, 0, 100, 500, 25, "")    
    CheckBoxGadget(#DL01_6, 0, 125, 500, 25, "")    
    CheckBoxGadget(#DL01_7, 0, 150, 500, 25, "")
    CheckBoxGadget(#DL01_8, 0, 175, 500, 25, "")    
    CheckBoxGadget(#DL01_9, 0, 200, 500, 25, "")    
    ButtonGadget(#BtnAdd, 0, 270, 100, 25, "Hinzufügen")
    ButtonGadget(#BtnDownload, 100, 270, 100, 25, "Download")
    ButtonGadget(#BtnDel, 200, 270, 100, 25, "Löschen")
    ButtonGadget(#BtnClear, 300, 270, 100, 25, "Lösche Alles")
    ButtonGadget(#BtnExit, 500, 270, 100, 25, "Ende")
    StringGadget(#LabAdr, 0, 233, 600, 25, "")
    CheckBoxGadget(#BtnYesNo,370,233,50,25, "Ich bin sicher")
    HideGadget(#BtnYesNo,1)
    CheckBoxGadget(#BtnAbbruch,490,233,50,25, "Abbrechen")
    HideGadget(#BtnAbbruch,1)    
    AddWindowTimer(#MainScreen, #MeinTimer, 1000) ;1000ms= 1sec
  EndProcedure

SetClipboardText("")
Open_MainScreen()

Define.l Event, EventWindow, EventGadget, EventType, EventMenu
Global DelFlag, i, Adress$, ShellPrg, KlickAdd, KlickDel, KlickKill, KlickDownload, KlickLabAdr

Declare AddAdresse()
Declare Download()
Declare Delete()
Declare ClearAll()
Declare TestDl()
Declare Programmende()

; Event Schleife

Repeat

;  Event = WaitWindowEvent()
;  Select Event
   Select WaitWindowEvent(10)
      Case #PB_Event_Timer
         If EventTimer()=#MeinTimer
           
           If Not KlickLabAdr
              Adress$ = GetClipboardText()
              SetGadgetText (#LabAdr, Adress$)                                        
           EndIf
           
           If KlickAdd
             AddAdresse()   
           EndIf   
           
           If KlickDel
              TestDl()             
                Select DelFlag
                   Case 0   
                      SetGadgetText (#LabAdr, "Kein Download selektiert oder vorhanden!")                          
                      KlickDel=#False         
                   Case 1
                      SetGadgetText (#LabAdr, "Markierung entfernen oder das Löschen hier bestätigen:")  
                      Delete()
                EndSelect
           EndIf   
           
           If KlickKill
              HideGadget(#BtnYesNo,0)
              HideGadget(#BtnAbbruch,0)
              SetGadgetText (#LabAdr, "Alle Downloads löschen:")
               Select GetGadgetState(#BtnAbbruch)
                  Case 1
                     KlickKill=#False
                     HideGadget(#BtnYesNo,1)
                     HideGadget(#BtnAbbruch,1)        
                     SetGadgetState(#BtnAbbruch,0)
               EndSelect
               ClearAll()
           EndIf
           
           If KlickDownload
              TestDL()
               Select DelFlag
                   Case 0   
                      SetGadgetText (#LabAdr, "Kein Download selektiert oder vorhanden!")                          
                      KlickDownload=#False         
                    Case 1  
                      Download()
                EndSelect
           EndIf
           
         EndIf
         
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Case #PB_Event_Menu
      EventMenu = EventMenu()
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++      
      If EventGadget = #BtnAdd              
        KlickAdd=#True
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++              
      ElseIf EventGadget = #BtnDownload
          KlickDownload=#True
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      ElseIf EventGadget = #BtnDel
          KlickDel=#True            
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      ElseIf EventGadget = #BtnClear
          KlickKill=#True
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      ElseIf EventGadget = #BtnExit
          CloseWindow(#MainScreen)
          End
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      ElseIf EventGadget = #LabAdr
          KlickLabAdr=#True
      EndIf
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
        If EventWindow = #MainScreen
          CloseWindow(#MainScreen)
          End
        EndIf
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++        
  EndSelect
ForEver


Procedure TestDl()
    HideGadget(#BtnYesNo,1)  
    DelFlag=#False
        For i=1 To 9      
         If (GetGadgetState (i)) = 1            ; wenn Download selektiert
           DelFlag=#True                        ; setze Flag
           Break                                ; das reicht 1x
         EndIf     
       Next
EndProcedure


Procedure AddAdresse()
    HideGadget(#BtnYesNo,1)  
    Adress$ = GetGadgetText (#LabAdr)           ; Adresse aus dem Textlabel
       If Adress$ < > ""                        ; wenn nichts eingegeben wurde...
          For i=1 To 9                          ; es gibt 9 Downloads
             If (GetGadgetText (i)) = ""        ; Wenn ein Platz frei ist
                SetGadgetText ((i), Adress$)    ; Adresse in die Tabelle schreiben
                SetGadgetText (#LabAdr, "")     ; das Textlabel wieder leeren
                Break                           ; Abbruch bei Fundstelle vor Schleifenende
             EndIf     
          Next
       EndIf                                    ; ...gibts auch nix zu tun
       KlickAdd=#False
       KlickLabAdr=#False
       SetClipboardText("")                     ; Text in Zwischenablage löschen
EndProcedure  


Procedure Delete()
    HideGadget(#BtnYesNo,0)                     ; Button sichtbar machen  
      If (GetGadgetState(#BtnYesNo)) = 0
        ProcedureReturn 
           Else
           For i=1 To 9
            If (GetGadgetState (i)) = 1         ; wenn der Satus 1
              SetGadgetText ((i), "")           ; Text löschen
              SetGadgetState ((i),0)            ; und Status zurück setzen
            EndIf
            Next
              SetGadgetState(#BtnYesNo,0)       ; Flag für Auswertung löschen
              HideGadget(#BtnYesNo,1)           ; Button verstecken
      EndIf
      DelFlag=#False
      KlickDel=#False
EndProcedure


Procedure ClearAll()
    If (GetGadgetState(#BtnYesNo)) = 0
       ProcedureReturn
          Else
            For i=1 To 9
              SetGadgetText ((i), "")           ; Textfeld und
              SetGadgetState ((i),0)            ; Status löschen
            Next
              SetGadgetText (#LabAdr, "")       ; Label löschen
              SetGadgetState (#BtnYesNo,0)      ; Flag für Auswertung löschen
              HideGadget(#BtnYesNo,1)           ; Button1 verstecken
              HideGadget(#BtnAbbruch,1)         ; Button2 verstecken            
    EndIf 
    KlickKill=#False
EndProcedure  


Procedure Download()
    For i= 1 To 9
    Adress$ = GetGadgetText (i)
    If Adress$ <> ""

    SetGadgetText(#LabAdr, "Lade " + Adress$)  ; Das funktioniert nicht
    ShellPrg= RunProgram("youtube-dl", Chr(32) + Adress$, "",  #PB_Program_Open|#PB_Program_Write|#PB_Program_Read)

Repeat
  Debug ReadProgramString(ShellPrg)
Until Not ProgramRunning(ShellPrg)

        Else
        EndIf
    Next

    For i=1 To 9
      SetGadgetText ((i), "")             ; Textfeld und
      SetGadgetState ((i),0)              ; Status löschen
    Next
   
      SetGadgetText (#LabAdr, "")         ; Label löschen
      SetGadgetState (#BtnYesNo,0)        ; Flag für Auswertung löschen
      HideGadget(#BtnYesNo,1)             ; Button verstecken
      DelFlag=#False
      KlickDownload=#False
EndProcedure
    
Vielleicht hat jemand einen Tip...
Dank im Voraus
Kurt
Wenn einem die einfachen Dinge net einfallen, klappt's meistens umständlich...
Sommertv
Beiträge: 68
Registriert: 26.04.2019 10:31
Computerausstattung: Lenovo W500, Debian Stable, Purebasic 5.70 (momentan die Testversion)
Wohnort: Mühldorf am Inn

Re: Mein YT-Downloader, Adresse wird nicht angezeigt

Beitrag von Sommertv »

Guten Morgen,
hab ich das Programm nochmal modifiziert und den Download Code von "Kiffi" eingebaut. Funktioniert perfekt...
Den Songtitel extrahiere ich mit Hilfe von FindString und Mid
Im Debugfenster wird der Titel angezeigt, allerdings nicht im StringGadget.
Das sollte doch eigentlich genauso gehen...

Weiss jemand Rat?

Code: Alles auswählen

EnableExplicit

Enumeration
  #MainScreen
  #DL01_1 = 1
  #DL01_2 = 2  
  #DL01_3 = 3  
  #DL01_4 = 4
  #DL01_5 = 5
  #DL01_6 = 6  
  #DL01_7 = 7
  #DL01_8 = 8  
  #DL01_9 = 9  
  #BtnAdd
  #BtnDownload
  #BtnDel
  #BtnClear
  #BtnExit
  #LabAdr
  #BtnYesNo
  #BtnAbbruch
  #MeinTimer
EndEnumeration


Procedure Open_MainScreen()
    OpenWindow(#MainScreen, 1157, 162, 600, 440, "Youtube Downloader")
    CheckBoxGadget(#DL01_1, 0, 0, 500, 25, "")
    CheckBoxGadget(#DL01_2, 0, 25, 500, 25, "")    
    CheckBoxGadget(#DL01_3, 0, 50, 500, 25, "")    
    CheckBoxGadget(#DL01_4, 0, 75, 500, 25, "")    
    CheckBoxGadget(#DL01_5, 0, 100, 500, 25, "")    
    CheckBoxGadget(#DL01_6, 0, 125, 500, 25, "")    
    CheckBoxGadget(#DL01_7, 0, 150, 500, 25, "")
    CheckBoxGadget(#DL01_8, 0, 175, 500, 25, "")    
    CheckBoxGadget(#DL01_9, 0, 200, 500, 25, "")    
    ButtonGadget(#BtnAdd, 0, 270, 100, 25, "Hinzufügen")
    ButtonGadget(#BtnDownload, 100, 270, 100, 25, "Download")
    ButtonGadget(#BtnDel, 200, 270, 100, 25, "Löschen")
    ButtonGadget(#BtnClear, 300, 270, 100, 25, "Lösche Alles")
    ButtonGadget(#BtnExit, 500, 270, 100, 25, "Ende")
    StringGadget(#LabAdr, 0, 233, 600, 25, "")
    CheckBoxGadget(#BtnYesNo,370,233,50,25, "Ich bin sicher")
    HideGadget(#BtnYesNo,1)
    CheckBoxGadget(#BtnAbbruch,490,233,50,25, "Abbrechen")
    HideGadget(#BtnAbbruch,1)    
    AddWindowTimer(#MainScreen, #MeinTimer, 1000) ;1000ms= 1sec
  EndProcedure

SetClipboardText("")
Open_MainScreen()

Define.l Event, EventWindow, EventGadget, EventType, EventMenu
Global DelFlag, i, Adress$, ShellPrg, KlickAdd, KlickDel, KlickKill, KlickDownload, KlickLabAdr

Declare AddAdresse()
Declare Download(Adress$)
Declare Delete()
Declare ClearAll()
Declare TestDl()
Declare Programmende()

; Event Schleife

Repeat

;  Event = WaitWindowEvent()
;  Select Event
   Select WaitWindowEvent(10)
      Case #PB_Event_Timer
         If EventTimer()=#MeinTimer
           
           If Not KlickLabAdr
              Adress$ = GetClipboardText()
              SetGadgetText (#LabAdr, Adress$)                                        
           EndIf
           
           If KlickAdd
             AddAdresse()   
           EndIf   
           
           If KlickDel
              TestDl()             
                Select DelFlag
                   Case 0   
                      SetGadgetText (#LabAdr, "Kein Download selektiert oder vorhanden!")                          
                      KlickDel=#False         
                   Case 1
                      SetGadgetText (#LabAdr, "Markierung entfernen oder das Löschen hier bestätigen:")  
                      Delete()
                EndSelect
           EndIf   
           
           If KlickKill
              HideGadget(#BtnYesNo,0)
              HideGadget(#BtnAbbruch,0)
              SetGadgetText (#LabAdr, "Alle Downloads löschen:")
               Select GetGadgetState(#BtnAbbruch)
                  Case 1
                     KlickKill=#False
                     HideGadget(#BtnYesNo,1)
                     HideGadget(#BtnAbbruch,1)        
                     SetGadgetState(#BtnAbbruch,0)
               EndSelect
               ClearAll()
           EndIf
           
           If KlickDownload
              TestDL()
               Select DelFlag
                   Case 0   
                      SetGadgetText (#LabAdr, "Kein Download selektiert oder vorhanden!")                          
                      KlickDownload=#False         
                    Case 1  
                      Download(Adress$)
                EndSelect
           EndIf
           
         EndIf
         
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Case #PB_Event_Menu
      EventMenu = EventMenu()
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++      
      If EventGadget = #BtnAdd              
        KlickAdd=#True
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++              
      ElseIf EventGadget = #BtnDownload
          KlickDownload=#True
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      ElseIf EventGadget = #BtnDel
          KlickDel=#True            
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      ElseIf EventGadget = #BtnClear
          KlickKill=#True
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      ElseIf EventGadget = #BtnExit
          CloseWindow(#MainScreen)
          End
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      ElseIf EventGadget = #LabAdr
          KlickLabAdr=#True
      EndIf
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
        If EventWindow = #MainScreen
          CloseWindow(#MainScreen)
          End
        EndIf
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++        
  EndSelect
ForEver


Procedure TestDl()
    HideGadget(#BtnYesNo,1)  
    DelFlag=#False
        For i=1 To 9      
         If (GetGadgetState (i)) = 1            ; wenn Download selektiert
           DelFlag=#True                        ; setze Flag
           Break                                ; das reicht 1x
         EndIf     
       Next
EndProcedure


Procedure AddAdresse()
    HideGadget(#BtnYesNo,1)  
    Adress$ = GetGadgetText (#LabAdr)           ; Adresse aus dem Textlabel
       If Adress$ < > ""                        ; wenn nichts eingegeben wurde...
          For i=1 To 9                          ; es gibt 9 Downloads
             If (GetGadgetText (i)) = ""        ; Wenn ein Platz frei ist
                SetGadgetText ((i), Adress$)    ; Adresse in die Tabelle schreiben
                SetGadgetText (#LabAdr, "")     ; das Textlabel wieder leeren
                Break                           ; Abbruch bei Fundstelle vor Schleifenende
             EndIf     
          Next
       EndIf                                    ; ...gibts auch nix zu tun
       KlickAdd=#False
       KlickLabAdr=#False
       SetClipboardText("")                     ; Text in Zwischenablage löschen
EndProcedure  


Procedure Delete()
    HideGadget(#BtnYesNo,0)                     ; Button sichtbar machen  
      If (GetGadgetState(#BtnYesNo)) = 0
        ProcedureReturn 
           Else
           For i=1 To 9
            If (GetGadgetState (i)) = 1         ; wenn der Satus 1
              SetGadgetText ((i), "")           ; Text löschen
              SetGadgetState ((i),0)            ; und Status zurück setzen
            EndIf
            Next
              SetGadgetState(#BtnYesNo,0)       ; Flag für Auswertung löschen
              HideGadget(#BtnYesNo,1)           ; Button verstecken
      EndIf
      DelFlag=#False
      KlickDel=#False
EndProcedure


Procedure ClearAll()
    If (GetGadgetState(#BtnYesNo)) = 0
       ProcedureReturn
          Else
            For i=1 To 9
              SetGadgetText ((i), "")           ; Textfeld und
              SetGadgetState ((i),0)            ; Status löschen
            Next
              SetGadgetText (#LabAdr, "")       ; Label löschen
              SetGadgetState (#BtnYesNo,0)      ; Flag für Auswertung löschen
              HideGadget(#BtnYesNo,1)           ; Button1 verstecken
              HideGadget(#BtnAbbruch,1)         ; Button2 verstecken            
    EndIf 
    KlickKill=#False
EndProcedure  


Procedure Download(Adress$)
    Protected ShellPrg
    Protected Dummy.s
    Protected RPS.s ; ReadProgramString
    Protected RPE.s ; ReadProgramError
    Protected Position
    
    For i= 1 To 9
    Adress$ = GetGadgetText (i)
    If Adress$ <> ""
 
     ShellPrg= RunProgram("youtube-dl", Chr(32) + Adress$, "",  #PB_Program_Open | #PB_Program_Write | #PB_Program_Read | #PB_Program_Error)
 
     If ShellPrg

       While ProgramRunning(ShellPrg)
          Position=0
          Dummy = ReadProgramString(ShellPrg)
            If Dummy <> ""
               Adress$=Dummy
               RPS + Dummy + #CRLF$
            EndIf
      
          Dummy = ReadProgramError(ShellPrg)
            If Dummy <> ""
               RPE + Dummy + #CRLF$
            EndIf
            
          Position=FindString(Adress$,"[ffmpeg] Merging formats into ")
          If Position
            Adress$=Mid(Adress$, (Position + 30), (Len(Adress$)))
            Debug "Titel= " + Adress$
            SetGadgetText(#LabAdr, "Lade " + Adress$)          
          EndIf
       Wend
   
   ; Debug "ProgramExitCode: "   + ProgramExitCode(ShellPrg)
   
   ; Debug "ReadProgramString: " + RPS
   ; Debug "ReadProgramError: "  + RPE
   
    CloseProgram(ShellPrg) ; Close the connection to the program
   
      EndIf      
    EndIf
    Next

    For i=1 To 9
      SetGadgetText ((i), "")             ; Textfeld und
      SetGadgetState ((i),0)              ; Status löschen
    Next
   
      SetGadgetText (#LabAdr, "")         ; Label löschen
      SetGadgetState (#BtnYesNo,0)        ; Flag für Auswertung löschen
      HideGadget(#BtnYesNo,1)             ; Button verstecken
      DelFlag=#False
      KlickDownload=#False
EndProcedure
Wenn einem die einfachen Dinge net einfallen, klappt's meistens umständlich...
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Mein YT-Downloader, Adresse wird nicht angezeigt

Beitrag von Kiffi »

Sommertv hat geschrieben:Das funktioniert auch soweit, nur die Adressen der Downloads sollen in dem StringGadget angezeit werden, das tun's aber nicht.
ich habe den Code mal kurz überflogen. Es sieht so aus, als ob Du manche Grundlagen in der Ereignis-Verarbeitung von PB noch immer nicht richtig verstanden hast. Ich habe Dir hier bereits gezeigt, wie man das Programm umgestalten könnte. Scheinbar möchtest Du -- warum auch immer -- Deine seltsame Timer-Variante beibehalten. Deine Entscheidung. Allerdings solltest Deine Event-Schleife im Griff haben, bevor Du Dich an die Threads machst. Ansonsten ist der Kuddel-Muddel vorprogrammiert.

Ein weiteres No-Go ist übrigens das das grundlose Löschen Clipboards in Deinem Code (SetClipboardText("")). Ich hoffe mal, das Du Dein Programm nur auf Deinem Rechner einsetzen willst, weil sich andere Benutzer bestimmt freuen werden, wenn Sie Copy & Paste nicht mehr benutzen können.
Hygge
Sommertv
Beiträge: 68
Registriert: 26.04.2019 10:31
Computerausstattung: Lenovo W500, Debian Stable, Purebasic 5.70 (momentan die Testversion)
Wohnort: Mühldorf am Inn

Re: Mein YT-Downloader, Adresse wird nicht angezeigt

Beitrag von Sommertv »

Hallo Kiffi,
ja stimmt, ich hab die Zusammenhänge noch net ganz begriffen, aber ich bleib am Ball...
Für mich ist es sehr umständlich, dass ich mich um das Multitasking mehr oder weniger selbst kümmern muss.
Simple Textausgaben in StringGadgets funktionieren innerhalb For-Next Schleifen nicht, das ist schon sehr gewöhnungsbedürftig.
Probier's momentan eben mit Timer, weil das bisher die einfachste Möglichkeit für mich ist. Wobei das hab ich schon
festgestellt nicht optimal ist, zeitkritische Aufgaben können so nicht bewältigt werden.
Die Oberfläche möcht so beibehalten wie sie ist, auf mein anderen Compiler schaut sie nämlich genauso aus und
bin die Bedienung inzwischen so gewohnt...

schöne Grüsse
Kurt
Wenn einem die einfachen Dinge net einfallen, klappt's meistens umständlich...
Sommertv
Beiträge: 68
Registriert: 26.04.2019 10:31
Computerausstattung: Lenovo W500, Debian Stable, Purebasic 5.70 (momentan die Testversion)
Wohnort: Mühldorf am Inn

Re: Mein YT-Downloader, Adresse wird nicht angezeigt

Beitrag von Sommertv »

Hallo Kiffi, guten Morgen,

ich hab das gestern mal getestet, also die Zwischenablage funktioniert schon.
Solang ich net auf den Button Hinzufügen klicke bleibt sie erhalten.
Und dass sie dann gelöscht wird ist eigentlich so gewollt.
Aber du hast schon recht, falls jemand die Browserzeile danach in ein anderes Programm einfügen möchte iss sie weg...
Hab mir dazu folgendes überlegt:
Den String aus der Zwischenablage puffern und auf Änderung vergleichen und falls geändert die Änderung in das StringGadget schreiben.

Schöne Grüsse und danke für den Hinweis
Kurt
Wenn einem die einfachen Dinge net einfallen, klappt's meistens umständlich...
Antworten