Seite 1 von 2
StringGadget mit #PB_String_Numeric lässt Text zu
Verfasst: 24.04.2009 11:56
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
Verfasst: 24.04.2009 19:16
von Batze
Ist kein Bug würde ich mal behaupten.
Verfasst: 24.04.2009 19:52
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...
Verfasst: 24.04.2009 20:02
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.
Verfasst: 24.04.2009 21:43
von Rokur
Dann verwendet PB hier ein Feature vom Betriebssystem, welches nicht überall gleich funktioniert?
Verfasst: 24.04.2009 21:58
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.
Verfasst: 25.04.2009 04:49
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
Verfasst: 25.04.2009 10:06
von Andesdaf
> XP weiß ich jetzt nicht mehr
Dort auch ein BalloonTip.
@WorkAround:
mit STRG-EINFG kannste immernoch buchstaben einfügen
[Vista-32bit]
Verfasst: 25.04.2009 10:13
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
Dat geid man garnich
Verfasst: 25.04.2009 10:25
von Andesdaf
oh oh...
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