Z-Position von Gadgets

Anfängerfragen zum Programmieren mit PureBasic.
The Rookie
Beiträge: 14
Registriert: 19.04.2006 13:00

Z-Position von Gadgets

Beitrag von The Rookie »

Hallo Zusammen,

ich versuche über ein Text-Gadget ein anderes (kleineres) Text-Gadget drüber zu legen.
Zuerst erstelle ich die Gadgets und anschließend verändere ich nochmals ihr Aussehen (Schrift, Farbe, ...)
Bei der späteren Darstellung im Fenster ging ich eigentlich davon aus, dass das zuerst erstellte Gadget UNTER dem danach erstellten Gadget liegen wird - leider scheint dem nicht so zu sein.

Ich habe bereits verschiedene Reihenfolgen ausprobiert (sowohl beim Erstellen, als auch beim späteren Verändern), leider ohne das gewünschte Ergebnis bzw. ohne erkennbare Zusammenhänge von Reihenfolge der Befehle und Erscheinungsbild auf dem Window.

Gibt es evtl. soetwas wie ein Z-Position von Gadgets?
Also einen Wert, der festlegt, welches Gadget über welchem liegt?

Oder gibt es evtl. irgendeine andere (sichere) Methode um bestimmte Gadgets über andere zu legen?

Grüße und schon mal vielen Dank für die Hilfe,

The Rookie.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Z-Position von Gadgets

Beitrag von Kiffi »

> Bei der späteren Darstellung im Fenster ging ich eigentlich davon aus,
> dass das zuerst erstellte Gadget UNTER dem danach erstellten Gadget
> liegen wird - leider scheint dem nicht so zu sein.

mh, das verwundert mich jetzt allerdings auch. Kannst Du mal ein Stück
Code posten, bei dem das nachvollziehbar passiert?

Grüße ... Kiffi
Sven
Beiträge: 374
Registriert: 23.09.2004 12:01

Beitrag von Sven »

>>Bei der späteren Darstellung im Fenster ging ich eigentlich davon aus, dass das zuerst erstellte Gadget UNTER dem danach erstellten Gadget liegen wird - leider scheint dem nicht so zu sein.

Nein, das ist nicht so, die Darstellung hängt davon ab, in welcher Reihenfolge die "Zeichne das Gadget neu"-Befehle für die Gadgets abgearbeitet werden. Du kannst es also höchstens über die Z-Order und WIN-API versuchen. Hab ich aber auch noch nicht gemacht.

Text auf Image und dieses als ImageGadget anzeigen ist wohl keine Option?

Sven
The Rookie
Beiträge: 14
Registriert: 19.04.2006 13:00

Beitrag von The Rookie »

Hallo nochmal, ...

scheinbar hat die falsche Z-Order was mit dem Zuweisen eines GadgetFonts zu tun. Denn wie ich beim testen herausgefunden habe, scheint die Z-Order anfänglich in Ordnung zu sein.
Erst nach dem Setzen eines Fonts werden die betroffenen Gadgets in der Z-Order nach hinten verlegt.

Evtl. ein Bug den man melden sollte ??? :roll:

Anbei mal ein kleines Beispiel dazu:

Code: Alles auswählen

If OpenWindow(0,1,1,500,260,"Gadget Z-Buffer Bug")
	If CreateGadgetList(WindowID(0))
		LoadFont(0,"Arial",20)
		TextGadget(0,40,40,WindowWidth(0)-70, WindowHeight(0)-82," erstes TextGadget")
		TextGadget(1,60,0,WindowWidth(0)-62, WindowHeight(0)-2," zweites TextGadget")
		TextGadget(2,0,200,120,40," drittes TextGadget")
		SetGadgetColor(0,#PB_Gadget_BackColor,$8888aa)
		SetGadgetColor(1,#PB_Gadget_BackColor,$998888)
		SetGadgetColor(2,#PB_Gadget_BackColor,$99aa88)
		; Es scheint etwas mit dem zugewiesenen Font zu tun haben.
		; Scheinbar verändert das Zuweisen eines Fonts die Z-Order eines Gadgets.
		; Denn wenn nachfolgende Zeile auskommentiert wird, stimmt die Reihenfolge wieder.
		SetGadgetFont(1,FontID(0))
		;SetGadgetFont(2,FontID(0))  ; eine weitere Variante zum Ausprobieren.
		Repeat
			Event = WaitWindowEvent()
		Until Event = #PB_Event_CloseWindow
	EndIf
EndIf
End
Gibt es evtl. (wie von Sven angesprochen) eine Möglichkeit die Z-Order nachträglich zu korrigieren?

ThanX und Gruß,
The Rookie.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Entweder erstellst du dein Fenster mit pb_window_invisible und machst es
nach deinen Aktionen mit hidewindow(0,0) wieder sichtbar oder du nimmst
setwindowpos_().
Antworten