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
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
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?
Ist wohl zuviel verlangt es einfach auszuprobieren

Verfasst: 19.06.2007 09:16
von RiSiNG
ts-soft hat geschrieben:>> Was funktioniert an diesem Code denn nicht?
Ist wohl zuviel verlangt es einfach auszuprobieren

Äää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
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
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?