ImageGadget - StringGadget - anscheinendes Redraw Problem

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
RiSiNG
Beiträge: 92
Registriert: 18.06.2006 10:31
Kontaktdaten:

ImageGadget - StringGadget - anscheinendes Redraw Problem

Beitrag 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?
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
RiSiNG
Beiträge: 92
Registriert: 18.06.2006 10:31
Kontaktdaten:

Beitrag 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.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> Was funktioniert an diesem Code denn nicht?

Code: Alles auswählen

GadgetToolTip(15,"") 
Ist wohl zuviel verlangt es einfach auszuprobieren :freak:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
RiSiNG
Beiträge: 92
Registriert: 18.06.2006 10:31
Kontaktdaten:

Beitrag 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!
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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.
Zuletzt geändert von Kiffi am 19.06.2007 09:45, insgesamt 1-mal geändert.
a²+b²=mc²
Benutzeravatar
D@nte
Beiträge: 324
Registriert: 24.04.2007 15:33
Wohnort: Berlin

Beitrag 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
Zuletzt geändert von D@nte am 19.06.2007 09:45, insgesamt 1-mal geändert.
Benutzeravatar
RiSiNG
Beiträge: 92
Registriert: 18.06.2006 10:31
Kontaktdaten:

Beitrag 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.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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)
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
RiSiNG
Beiträge: 92
Registriert: 18.06.2006 10:31
Kontaktdaten:

Beitrag 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?
Antworten