Ein String Gadget automatisch und manuell bearbeiten

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

Ein String Gadget automatisch und manuell bearbeiten

Beitrag 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
Wenn einem die einfachen Dinge net einfallen, klappt's meistens umständlich...
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Ein String Gadget automatisch und manuell bearbeiten

Beitrag 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()
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Bisonte
Beiträge: 2427
Registriert: 01.04.2007 20:18

Re: Ein String Gadget automatisch und manuell bearbeiten

Beitrag 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)"....
PureBasic 6.04 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Re: Ein String Gadget automatisch und manuell bearbeiten

Beitrag 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
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Ein String Gadget automatisch und manuell bearbeiten

Beitrag 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
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: Ein String Gadget automatisch und manuell bearbeiten

Beitrag 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
Wenn einem die einfachen Dinge net einfallen, klappt's meistens umständlich...
Antworten