Wie Stringgadgetinhalt markieren?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Icke
Beiträge: 143
Registriert: 08.09.2004 13:19

Wie Stringgadgetinhalt markieren?

Beitrag 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...
Benutzeravatar
PBZecke
Beiträge: 399
Registriert: 02.09.2004 17:34

Beitrag 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)
Nein, ich habe die Suche nicht benutzt, und deshalb auch nichts dazu gefunden... :lol:
Icke
Beiträge: 143
Registriert: 08.09.2004 13:19

Beitrag 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

CNESM
Beiträge: 311
Registriert: 29.08.2004 15:16
Kontaktdaten:

Beitrag 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 ;(
Icke
Beiträge: 143
Registriert: 08.09.2004 13:19

Beitrag von Icke »

Wie kann man denn z.B. die Schrift in einem Text bzw. Stringgadget einfärben? Wüsste jetzt garnicht wie...
Icke
Beiträge: 143
Registriert: 08.09.2004 13:19

Beitrag von Icke »

ups, gefunden ...
Antworten