Seite 1 von 1

Ein String Gadget automatisch und manuell bearbeiten

Verfasst: 17.05.2019 20:40
von Sommertv
Hallo,
ich möchte folgendes erreichen:
Ein StringGadget empfängt automatisch Daten aus der Zwischenablage, das erreiche ich mit:

Eingabe$ = GetClipboardText()
SetGadgetText (#MeineEingabe, Eingabe$)

Ich will aber auch, wenn ich auf das StringGadget klicke einen Text manuell eingeben können.
Hab schon alles mögliche versucht, aber es funktioniert nicht.

Dank schon mal Vorab
Kurt

Re: Ein String Gadget automatisch und manuell bearbeiten

Verfasst: 17.05.2019 20:47
von RSBasic
Du kannst das Überschreiben verhindern, indem du abfragst, ob dein StringGadget den Fokus hat.
D.h. wenn dein StringGadget den Fokus hat, dann soll nicht automatisch der Inhalt deiner Zwischenablage eingefügt werden.
Wie du ermitteln kannst, welches Gadget gerade den Fokus hat: GetActiveGadget()

Re: Ein String Gadget automatisch und manuell bearbeiten

Verfasst: 17.05.2019 21:52
von Bisonte
Hm.... ich weiss nicht, wo du die Glaskugel hernimmst Ray :o

Aber ohne lauffähigen Code (bzw. Code der Fehler macht) kann man dazu nur sagen :
Wenn ein StringGadget angeklickt wird (den Fokus erhält), schreibt man hinein.
Das erledigt das OS für einen (braucht man sich nicht drum zu kümmern).

Wenn man den Wert auslesen möchte, der im StringGadgetsteht, nimmt man "GetGadgetText(#StringGadget)"....

Re: Ein String Gadget automatisch und manuell bearbeiten

Verfasst: 17.05.2019 22:41
von hjbremer
Er hat es wohl so ähnlich gemacht

Code: Alles auswählen

Enumeration
   #window
   #string1
   #string2
   #timer
EndEnumeration

EnableExplicit

Define event, clip$, text$

OpenWindow(#window, 0, 0, 322, 205, "StringGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

AddWindowTimer(#window, #timer, 500)

StringGadget(#string1, 8,  10, 306, 22, "")
StringGadget(#string2, 8,  40, 306, 22, "")

Repeat
   event = WaitWindowEvent()
   
   Select event
      Case #PB_Event_Timer 
         If EventTimer() = #timer
            clip$ = GetClipboardText()
            If clip$ 
               SetGadgetText(#string1, clip$)
               SetClipboardText("")
            EndIf
         EndIf
         
      Case #PB_Event_Gadget
         Select EventGadget()
            Case #string1
               If EventType() = #PB_EventType_Focus 
                  RemoveWindowTimer(#Window, #timer)
               EndIf
               
               If EventType() = #PB_EventType_LostFocus
                  text$ = GetGadgetText(#string1)
                  SetGadgetText(#string2, text$)
                  AddWindowTimer(#window, #timer, 500)
               EndIf
               
            Case #string2
               
         EndSelect         
         
   EndSelect
   
Until event = #PB_Event_CloseWindow

Re: Ein String Gadget automatisch und manuell bearbeiten

Verfasst: 17.05.2019 23:03
von Kiffi
Bisonte hat geschrieben:Hm.... ich weiss nicht, wo du die Glaskugel hernimmst Ray :o
das kann man sich so ein bisschen herleiten, wenn man die letzten Postings von Sommertv durchliest.
Ich vermute mal, dass er permanent (evtl. mittels Timer) den Clipboard-Text in das StringGadget schreibt.
Ein manuelles Bearbeiten ist dann (ohne Fokus-Test) natürlich nicht mehr möglich.

Grüße ... Peter

Re: Ein String Gadget automatisch und manuell bearbeiten

Verfasst: 17.05.2019 23:32
von Sommertv
Danke...
ich habs jetzt so gelöst:

ElseIf EventGadget = #MeineEingabe
KlickLabelEingabe=#True
EndIf

Und dann in der Timer Schleife:

If Not KlickLabelEingabe
Eingabe$ = GetClipboardText()
SetGadgetText (#MeineEingabe, Eingabe$)
EndIf

Nachdem der String verarbeitet ist, setze ich KlickLabelEingabe=#False