Cursor aus readonly-StringGadget entfernen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Cursor aus readonly-StringGadget entfernen

Beitrag von Delle »

Hallo,

ich habe ein StringGadget readonly gesetzt und mit weißem Hintergrund versehen.

Wenn der User nun reinklickt, erscheint ein Cursor und es macht den Anschein als er könnte er darin irgendetwas eingeben :)

Wie kann ich das vermeiden?

Danke,
Delle
PB 6.21 | Win 11
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Cursor aus readonly-StringGadget entfernen

Beitrag von ts-soft »

SetActiveGadget
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Re: Cursor aus readonly-StringGadget entfernen

Beitrag von Delle »

Öhm das ist genau das Gegenteil was ich wollte :)
PB 6.21 | Win 11
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Cursor aus readonly-StringGadget entfernen

Beitrag von ts-soft »

Code: Alles auswählen

If OpenWindow(0, 0, 0, 322, 205, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  TextGadget(0, 0, 0, 0, 0, "")
  StringGadget(1, 8,  10, 306, 20, "Readonly StringGadget", #PB_String_ReadOnly)
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow : Break
      Case #PB_Event_Gadget
        If EventGadget() = 1 And EventType() = #PB_EventType_Focus
          SetActiveGadget(0)
        EndIf
    EndSelect
  ForEver
EndIf

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Re: Cursor aus readonly-StringGadget entfernen

Beitrag von Shardik »

Warum so umständlich mit einem unsichtbaren "Geister"-Gadget, Thomas?
Mit HideCaret_(GadgetID(x)) geht es in Windows kürzer und eleganter:

Code: Alles auswählen

OpenWindow(0, 0, 0, 322, 205, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
StringGadget(0, 8,  10, 306, 20, "Readonly StringGadget", #PB_String_ReadOnly)
Repeat
  WindowEvent = WaitWindowEvent()
  If EventGadget() = 0 And EventType() = #PB_EventType_Focus
    HideCaret_(GadgetID(0))
  EndIf
Until WindowEvent = #PB_Event_CloseWindow
Bei dieser Vorgehensweise erscheint kein Cursor, es kann aber trotzdem noch Text markiert werden!
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Cursor aus readonly-StringGadget entfernen

Beitrag von STARGÅTE »

Shardik hat geschrieben:[...] geht es in Windows kürzer [...]
Aber eben nur unter Windows.

Im übrigen kann man auch einfach:
SetActiveGadget(#PB_Default)
nutzen, dann wird keins mehr aktiviert.

Code: Alles auswählen

If OpenWindow(0, 0, 0, 322, 205, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  StringGadget(1, 8,  10, 306, 20, "Readonly StringGadget", #PB_String_ReadOnly)
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow : Break
      Case #PB_Event_Gadget
        If EventGadget() = 1 And EventType() = #PB_EventType_Focus
          SetActiveGadget(#PB_Default)
        EndIf
    EndSelect
  ForEver
EndIf
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Cursor aus readonly-StringGadget entfernen

Beitrag von ts-soft »

Shardik hat geschrieben:Bei dieser Vorgehensweise erscheint kein Cursor, es kann aber trotzdem noch Text markiert werden!
Das macht wohl keinen Sinn :mrgreen:
Geistergadget ist ja meist auch nicht nötig, es gibt ja meist bereits irgendwelche Gadgets.

Den Tipp von STARGÅTE mit -1 kannte ich auch noch nicht :allright:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Re: Cursor aus readonly-StringGadget entfernen

Beitrag von Shardik »

ts-soft hat geschrieben:Das macht wohl keinen Sinn :mrgreen:
Das sehe ich aber anders. Nimm einmal an, daß ich IP-Adressen von anderen PCs im Netzwerk
in einem mehrzeiligen, schreibgeschützten StringGadget anzeige. Wenn ich dann eine markiere,
kann ich sie mit Strg+C kopieren und in einer Konsole hinter einem Ping-Befehl einfügen, um zu
überprüfen, ob der PC zur Zeit erreichbar ist. Wieso macht das keinen Sinn? /:->

Und wenn das Markieren nicht gewünscht ist, kann man ja STARGÅTEs Tipp verwenden. :allright:
ts-soft hat geschrieben:Geistergadget ist ja meist auch nicht nötig, es gibt ja meist bereits irgendwelche Gadgets.
Das macht dann auch einen sehr professionellen Eindruck, wenn der Anwender auf ein schreibgeschütztes
StringGadget klickt und dann plötzlich der Fokus auf ein bestimmtes anderes Gadget wechselt... :lol:
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Cursor aus readonly-StringGadget entfernen

Beitrag von ts-soft »

Shardik hat geschrieben:
ts-soft hat geschrieben:Geistergadget ist ja meist auch nicht nötig, es gibt ja meist bereits irgendwelche Gadgets.
Das macht dann auch einen sehr professionellen Eindruck, wenn der Anwender auf ein schreibgeschütztes
StringGadget klickt und dann plötzlich der Fokus auf ein bestimmtes anderes Gadget wechselt... :lol:
Es ist normal, das dann der Focus auf das nächste Gadget in der Tabreihenfolge springt. Was sollte daran unprofessionell sein.

Markieren ohne Cursor halte ich für unprofessionell :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: Cursor aus readonly-StringGadget entfernen

Beitrag von edel »

Warum willst du ein Stringgadget nehmen wenn es nicht wie ein solches funktionieren soll?
In dem Fall kannst du doch auch einfach nen Textgadget nehmen.
Antworten