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
Ein String Gadget automatisch und manuell bearbeiten
-
- 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
Wenn einem die einfachen Dinge net einfallen, klappt's meistens umständlich...
Re: Ein String Gadget automatisch und manuell bearbeiten
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()
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
Hm.... ich weiss nicht, wo du die Glaskugel hernimmst Ray
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)"....
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.10 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
- hjbremer
- Beiträge: 822
- Registriert: 27.02.2006 22:30
- Computerausstattung: von gestern
- Wohnort: Neumünster
Re: Ein String Gadget automatisch und manuell bearbeiten
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
Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Re: Ein String Gadget automatisch und manuell bearbeiten
das kann man sich so ein bisschen herleiten, wenn man die letzten Postings von Sommertv durchliest.Bisonte hat geschrieben:Hm.... ich weiss nicht, wo du die Glaskugel hernimmst Ray
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
-
- 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
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
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...