da es im Gegensatz zum EditorGadget für das StringGadget offenbar kein SetGadgetAttribute(..., #PB_String_ReadOnly, #False) gibt, habe ich mich an einer JavaScript Inline Lösung versucht.
So weit so unvollständig.
Das Beschreiben des StringGadgets ist nach dem Aufruf der Prozedur SetReadOnly() möglich. Das Problem ist der Mauszeiger. Er wandelt sich nicht zum Caret-Symbol, wenn ich über das Feld hoovere. Hierzu müsste ich offenbar das class attribute des übergeordneten DIV Elements neu setzen, aber wie ich das mache, dazu habe ich leider nichts passenden gefunden.
Hier der entsprechende Screenshot zu der Problematik. In gelb das ReadOnly StringGadget nach Aufruf meiner Prozedure und in orange ein normales StringGadget ohne ReadOnly Flag.
Die Unterschiede zwischen den übergeordneten DIV Elementen beider Gadgets ist, dass die Klasse des ReadOnly Gadgets noch folgende Werte zusätzlich enthält (in rot markiert): dijitTextBoxReadOnly dijitReadOnly
Wie kommt man an die ID dieses Containers heran, um die class zu ändern?
Code: Alles auswählen
; ! $("<style>.dijitTextBoxReadOnly { color: #000000; }</style>").appendTo("head");
Procedure SetReadOnly(iGadgetNr, iReadOnly)
Protected.i gadid = GadgetID(iGadgetNr)
If iReadOnly = #False
!v_gadid.gadget.textbox.readOnly=false;
Else
!v_gadid.gadget.textbox.readOnly=true;
EndIf
EndProcedure
If OpenWindow(0, 0, 0, 322, 205, "StringGadget Flags", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
StringGadget(0, 8, 10, 306, 20, "Normal StringGadget...")
StringGadget(1, 8, 35, 306, 20, "1234567", #PB_String_Numeric)
StringGadget(2, 8, 60, 306, 20, "Read-only StringGadget", #PB_String_ReadOnly)
StringGadget(3, 8, 85, 306, 20, "lowercase...", #PB_String_LowerCase)
StringGadget(4, 8, 110, 306, 20, "uppercase...", #PB_String_UpperCase)
StringGadget(5, 8, 140, 306, 20, "Borderless StringGadget", #PB_String_BorderLess)
StringGadget(6, 8, 170, 306, 20, "Password", #PB_String_Password)
SetReadOnly(2, #False)
; SetGadgetAttribute(2, #PB_String_ReadOnly, #False)
EndIf
PS: Wenn ich alle offenen Punkte gelöst habe, die ich für das Projekt klären muss, wird es hier auch wieder ruhiger.