StringGadget mit #PB_String_Numeric lässt Text zu

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
Rokur
Beiträge: 167
Registriert: 29.12.2005 09:58
Computerausstattung: Intel Core2 Quad (4x2,4 GHz), 4096 MB RAM, GForce 8800GTX 786 MB
Windows XP 32 Bit, PureBasic 4.40 (x86)

StringGadget mit #PB_String_Numeric lässt Text zu

Beitrag von Rokur »

Hab grad einen kleinen Bug beim StringGadget gefunden:
Wenn ich das Gadget mit #PB_String_Numeric definiere, dann kann ich zwar über die Tastatur nur Ziffern eingeben wie es sein sollte, aber über die Zwischenablage (Strg+V oder Rechtsklick "Einfügen") kann ich alle möglichen Zeichen reinkopieren.

Getestet mit PB 4.30 Windows XP 32 Bit
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

Ist kein Bug würde ich mal behaupten.
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

man kann in der Tat jedes beliebige Zeichen einfügen:

Code: Alles auswählen

 If OpenWindow(0, 0, 0, 230, 90, "Event-Handling Beispiel...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

   StringGadget  (1, 10, 10, 200, 20, "Klick mich",#PB_String_Numeric)
   CheckBoxGadget(2, 10, 40, 200, 20, "Markiere mich")

   If CreateMenu(0, WindowID(0))
     MenuTitle("Menu")
     MenuItem(1, "Eintrag 1")
     MenuItem(2, "Eintrag 2")
     MenuItem(3, "Eintrag 3")
   EndIf

   Repeat
     Event = WaitWindowEvent()
     
     Select Event
     
       Case #PB_Event_Gadget
         Select EventGadget()
           Case 1 : Debug "Schalter 1 angeklickt!"
           Case 2 : Debug "Schalter 2 angeklickt!"
           Case 3 : Debug "Schalter 3 angeklickt!"
         EndSelect
       
       Case #PB_Event_Menu
         Select EventMenu()
           Case 1 : Debug "Menü-Eintrag 1 angeklickt!"
           Case 2 : Debug "Menü-Eintrag 2 angeklickt!"
           Case 3 : Debug "Menü-Eintrag 3 angeklickt!"
         EndSelect
     
     EndSelect
   Until Event = #PB_Event_CloseWindow
 EndIf

(Sorry für den kopierten Code)

Getestet mit PB4.3 (Vista - 32 Bit)

Ob das aber nun an PB direkt liegt ist die Frage...
Win11 x64 | PB 6.20
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

Beitrag von ts-soft »

Ich würde sagen, das ist eine Einschränkung des OS. Unter Vista bekomme
ich keine ungültigen Zeichen über die Zwischenablage eingefügt, per Code
ist das natürlich möglich, wäre ja auch dumm, wenn nicht.
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
Rokur
Beiträge: 167
Registriert: 29.12.2005 09:58
Computerausstattung: Intel Core2 Quad (4x2,4 GHz), 4096 MB RAM, GForce 8800GTX 786 MB
Windows XP 32 Bit, PureBasic 4.40 (x86)

Beitrag von Rokur »

Dann verwendet PB hier ein Feature vom Betriebssystem, welches nicht überall gleich funktioniert?
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

Beitrag von ts-soft »

Rokur hat geschrieben:Dann verwendet PB hier ein Feature vom Betriebssystem, welches nicht überall gleich funktioniert?
So sieht es aus! Unter Vista kommt ein Ballontip, der sagt unzulässiges
Zeichen, XP weiß ich jetzt nicht mehr, die davor machen es in jedem Fall anders.
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
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

Beitrag von ts-soft »

Falls Interesse an einem WorkAround besteht:

Code: Alles auswählen

EnableExplicit

Global oldStringGadgetCB

Procedure StringGadgetCB(hWnd, uMsg, wParam, lParam)
  Select uMsg
    Case #WM_CHAR
      Select wParam
        Case 47 To 57 ; erlaubte Zeichen 0 - 9
        Default
          ProcedureReturn #False
      EndSelect
    Case #WM_CONTEXTMENU ; Kontextmenü unterdrücken 
      ProcedureReturn #False
  EndSelect
  
  ProcedureReturn CallWindowProc_(oldStringGadgetCB, hWnd, uMsg, wParam, lParam)
EndProcedure

OpenWindow(0, #PB_Ignore, #PB_Ignore, 200, 40, "test", #PB_Window_SystemMenu)
StringGadget(0, 10, 10, 180, 20, "")
SetActiveGadget(0)

oldStringGadgetCB = SetWindowLongPtr_(GadgetID(0), #GWL_WNDPROC, @StringGadgetCB())

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
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
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

> XP weiß ich jetzt nicht mehr
Dort auch ein BalloonTip.

@WorkAround:
mit STRG-EINFG kannste immernoch buchstaben einfügen

[Vista-32bit]
Win11 x64 | PB 6.20
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

Beitrag von ts-soft »

Andesdaf hat geschrieben:@WorkAround:
mit STRG-EINFG kannste immernoch buchstaben einfügen

[Vista-32bit]
Dann ist Dein PC oder das OS kaputt :mrgreen:
Dat geid man garnich
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
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

oh oh... :mrgreen:

aber das Wort Ralph kann man per STRG-EINFG und dann SHIFT-EINFG
noch einfügen

oben meine ich natürlich Shift und nicht strg
Win11 x64 | PB 6.20
Antworten