Seite 1 von 1

Wie Stringgadgetinhalt markieren?

Verfasst: 12.09.2004 13:24
von Icke
Hab schon im Archiv gesucht, bis auf Danilos Lösung (SelectStringText) aber nichts weiter gefunden.
Wenn ich mit Tab ins nächste Feld springe möchte ich den Inhalt bereits markiert haben, ein Standard der bei vielen Programmen am Markt so programmiert wird.

Beispiel Code :

Code: Alles auswählen


Enumeration
  #Window_0
EndEnumeration

Enumeration
  #String_0
  #String_1
  #String_2
EndEnumeration

If OpenWindow(#Window_0, 259, 85, 399, 123,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Test")
  If CreateGadgetList(WindowID())
    StringGadget(#String_0, 40, 45, 90, 30, "111")
    StringGadget(#String_1, 150, 45, 90, 30, "222")
    StringGadget(#String_2, 260, 45, 90, 30, "333")
  EndIf
EndIf


Repeat
  
  key = WaitWindowEvent()
  GadgetID = EventGadgetID()   
  
  If key = #PB_Event_CloseWindow
    quit = 1
  EndIf
  
  Delay(10)
Until quit=1

End

Beim Doppelklick in ein Feld und anschließendem durchgehen der Felder mit Tab bleiben die Inhalte markiert.

Es muß doch eine Lösung geben...

Verfasst: 12.09.2004 13:48
von PBZecke
Grundsätzlich geht es damit:

Code: Alles auswählen

    SendMessage_(GadgetID(#String_0),#em_setsel,0,255)
    ActivateGadget(#String_0)
Das jetzt auf Deine Wünsche anzupassen sollte kein großes Problem für Dich sein.


Edit:

Nochwas: Damit das StringGadget, das den Focus verliert die Markierung weiterhin beibehält musst Du das Gadget mit

Code: Alles auswählen

    StringGadget(#String_0, 40, 45, 90, 30, "111", #ES_NOHIDESEL)

Verfasst: 12.09.2004 18:59
von Icke
Vielen Dank für deine Unterstützung, PBZecke.

Ich habs jetzt so gelöst, ist vielleicht nicht der optimale Code aber es geht :

Code: Alles auswählen


Enumeration
  #Window_0
EndEnumeration

Enumeration
  #String_0
  #String_1
  #String_2
EndEnumeration

If OpenWindow(#Window_0, 259, 85, 399, 123,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Test")
  If CreateGadgetList(WindowID())
    StringGadget(#String_0, 40, 45, 90, 30, "111")
    StringGadget(#String_1, 150, 45, 90, 30, "222")
    StringGadget(#String_2, 260, 45, 90, 30, "333")
  EndIf
EndIf

SendMessage_(GadgetID(#String_0),#EM_SETSEL,0,255):ActivateGadget(#String_0)
ActivateGadget(#String_0)

Repeat
  
  key = WaitWindowEvent()
  GadgetID = EventGadgetID()
  
  If key = #PB_Event_CloseWindow
    quit = 1
  EndIf

  If LastID<>GadgetID
    SendMessage_(GadgetID(GadgetID),#EM_SETSEL,0,255)
    ActivateGadget(GadgetID)
  EndIf
  
  LastID=GadgetID
  
  Delay(10)
  
Until quit=1
  
End


Verfasst: 13.09.2004 17:28
von CNESM
Hi,

ah wieder ein Thema das mich interessiert. Ich darf doch oder :)

Ist es eigentlich möglich, die Farbe (blau) des markierten Bereichs mittels Callback selbst zu bestimmten. Alles andere kann man schon einfärben, doch dafür habe ich noch nix gefunden ;(

Verfasst: 13.09.2004 19:39
von Icke
Wie kann man denn z.B. die Schrift in einem Text bzw. Stringgadget einfärben? Wüsste jetzt garnicht wie...

Verfasst: 13.09.2004 21:09
von Icke
ups, gefunden ...