Seite 1 von 2

ImageGadget - StringGadget - anscheinendes Redraw Problem

Verfasst: 19.06.2007 08:32
von RiSiNG

Code: Alles auswählen

win=OpenWindow(0,0,0,400,300,"Test v1.0  |  2007 By RiSiNG",#PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_MinimizeGadget)
CreateGadgetList(win)
    GadgetToolTip(15,"")
  StringGadget(16,7,232,250,20,"",#PB_String_BorderLess)  
    GadgetToolTip(16,"")
  CreateImage(0,254,24)
    StartDrawing(ImageOutput(0))
      Box(0,0,254,24,RGB(255,255,255))
    StopDrawing()
  ImageGadget(17,5,230,254,24,ImageID(0))  
Repeat
  Select WaitWindowEvent()
    Case #WM_CLOSE
      End
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 0
      EndSelect
  EndSelect
ForEver
Wenn ich jetzt etwas ins StringGadget eingebe und mein Fenster über den Bildschirmrand hinaus bewege, verschwindet der Text. Beim Markieren taucht er aber wieder auf.
Wie könnte man diesen Bug beseitigen?

Verfasst: 19.06.2007 08:38
von ts-soft
>> Wie könnte man diesen Bug beseitigen?
Funktionstüchtiger Code wäre natürlich nett :wink:

Wenn Du das ImageGadget nicht über dem StringGadget plazieren würdest,
wäre das Problem beseitigt.

Verfasst: 19.06.2007 08:58
von RiSiNG
ts-soft hat geschrieben:>> Wie könnte man diesen Bug beseitigen?
Funktionstüchtiger Code wäre natürlich nett :wink:
Was funktioniert an diesem Code denn nicht?
ts-soft hat geschrieben:Wenn Du das ImageGadget nicht über dem StringGadget plazieren würdest,
wäre das Problem beseitigt.
Ja, genau da ist ja der Knackpunkt! das StringGadget soll ja genau über dem ImageGadget plaziert sein, damit es das borderlesse StringGadget nicht so mickrig (wie auch immer man das schreibt) aussieht.

Verfasst: 19.06.2007 09:06
von ts-soft
>> Was funktioniert an diesem Code denn nicht?

Code: Alles auswählen

GadgetToolTip(15,"") 
Ist wohl zuviel verlangt es einfach auszuprobieren :freak:

Verfasst: 19.06.2007 09:16
von RiSiNG
ts-soft hat geschrieben:>> Was funktioniert an diesem Code denn nicht?

Code: Alles auswählen

GadgetToolTip(15,"") 
Ist wohl zuviel verlangt es einfach auszuprobieren :freak:
Ääähmmm ok... funzte bei mir perfekt mit PB v4.02, aber das was du aufzeigst ist ein kleines "Überbleibsel"...

Büdde schön:

Code: Alles auswählen

win=OpenWindow(0,0,0,400,300,"Test v1.0  |  2007 By RiSiNG",#PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_MinimizeGadget)
CreateGadgetList(win)
  StringGadget(0,7,232,250,20,"test test",#PB_String_BorderLess)  
    GadgetToolTip(0,"test test")
  CreateImage(0,254,24)
    StartDrawing(ImageOutput(0))
      Box(0,0,254,24,RGB(255,255,255))
    StopDrawing()
  ImageGadget(1,5,230,254,24,ImageID(0))  
Repeat
  Select WaitWindowEvent()
    Case #WM_CLOSE
      End
  EndSelect
ForEver
Wäre echt toll, wenn jmd. die Lösung für mein Problem finden würde!

Verfasst: 19.06.2007 09:41
von Kiffi
RiSiNG hat geschrieben:Wäre echt toll, wenn jmd. die Lösung für mein Problem finden würde!
wenn Du die Reihenfolge der zu erstellenden Gadgets tauscht, dann hast Du
kein Redraw-Problem mehr.

Grüße ... Kiffi

//EDIT: Oh, Verzeitung! Das hat Thomas oben ja schon bereits erwähnt.

Verfasst: 19.06.2007 09:43
von D@nte

Code: Alles auswählen

CreateGadgetList(win)
  StringGadget(16,7,232,250,25,"",#PB_String_BorderLess)
Repeat
Und fertig...
Sieht jetzt genauso aus wie in deinem Beispiel-Code, wenne was anderes willst hätteste nen andern posten müssen ;p

Verfasst: 19.06.2007 09:44
von RiSiNG
Kiffi hat geschrieben:
RiSiNG hat geschrieben:Wäre echt toll, wenn jmd. die Lösung für mein Problem finden würde!
wenn Du die Reihenfolge der zu erstellenden Gadgets tauscht, dann hast Du
kein Redraw-Problem mehr.

Grüße ... Kiffi
Stimmt, aber das komische ist, dass das StringGadget dann keinen Fokus mehr annimmt, d.h. ich kann es nicht mehr bearbeiten.
D@nte hat geschrieben:

Code: Alles auswählen

CreateGadgetList(win)
  StringGadget(16,7,232,250,25,"",#PB_String_BorderLess)
Repeat
Und fertig...
Sieht jetzt genauso aus wie in deinem Beispiel-Code, wenne was anderes willst hätteste nen andern posten müssen ;p
Nein, das was ich erreichen wollte ist eigentlich nur, das ich die linke oder rechte Seite um 1-2px mit Hilfe des ImageGadgets verlängere, da das borderlesse StringGadget mir so optisch besser gefällt.

Verfasst: 19.06.2007 09:52
von ts-soft
Ich sehe keinen Unterschied :mrgreen:
Auf die Brutale gehts so:

Code: Alles auswählen

    Case #PB_Event_MoveWindow
      InvalidateRect_(GadgetID(0), 0, 0)

Verfasst: 19.06.2007 09:55
von RiSiNG
ts-soft hat geschrieben:Ich sehe keinen Unterschied :mrgreen:
Auf die Brutale gehts so:

Code: Alles auswählen

    Case #PB_Event_MoveWindow
      InvalidateRect_(GadgetID(0), 0, 0)
Coole Sache, danke funzt! Gibt es vll. noch eine elegantere Möglichkeit, d.h. das der Text erst gar nicht verschwindet?