splittergadget

Anfängerfragen zum Programmieren mit PureBasic.
delikanli_19_82
Beiträge: 173
Registriert: 30.11.2010 02:34

splittergadget

Beitrag von delikanli_19_82 »

hallo leute,

ich bin mir nicht sicher, was ich falsch gemacht habe. hab den ganzen code aus frustation weggelöscht.

ich möchte eigentlich auf einem fenster sowas haben:

----------------------------------------
toolbar
----------------------------------------
|.........| Mitte oben|................|
|.........|................| Rechts oben |
| Links |---------------| ------------- |
|.........|................| Rechts unten |
|.........|Mitte Unten|................|
|.........|................|................|
----------------------------------------
Statusbar
----------------------------------------

- Links, Mitte und Rechts sollen horizontal splittbar sein.
- Auch wenn der Fenster in der Größe verändert wird.

- Mitte und Rechts sollen auch vertikal splittbar sein.
- Auch wenn der Fenster in der Größe verändert wird.

- In Links wird ein ScrollAreaGadget liegen, das die
größe anpasst.

- Mitte oben aiuch ScrollArea.
- Mitte unten sowie rechts oben und unten jeweils ContainerGagdet.

kann mir jemand helfen?

in meinem code hatte ich ständig das problem, das beim resizen des Fensters, die besagten gaeiledgets die
größenanpassung nicht machten.

und der rechte teile verschob sich mit der mittleren splitter komplett.

mfg
kurt
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: splittergadget

Beitrag von TomS »

delikanli_19_82 hat geschrieben:gaeiledgets
Bitte was?
Sorry, ich kann mit deinem "Ascii-Diagramm" nichts anfangen. Kannst du nicht wenigstens was halbwegs ordentliches mit Paint malen?
Die Gadgets musst du schon selber resizen.

Code: Alles auswählen

OpenWindow(0, 0, 0, 200, 200, "", #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
ButtonGadget(0,0,0,200,200,"Button")

Repeat
	event = WaitWindowEvent(20)
	
	Select event
		Case #PB_Event_SizeWindow
			ResizeGadget(0, 0, 0, WindowWidth(0), WindowHeight(0))
	EndSelect 
		
Until event = #PB_Event_CloseWindow
delikanli_19_82
Beiträge: 173
Registriert: 30.11.2010 02:34

Re: splittergadget

Beitrag von delikanli_19_82 »

hallo TomS,

als diagramm:

www.gonuldefterim.de/abbild.JPG

ja zum resizen der elemente muss ich eben wissen, wie die abmaße des linken, rechten, oben, unteren splittanteils für den betroffenen containergadget/scrollareagadgets aussehen, damit ich den korrekt resizen kann.

das es geresized werden muss, ist mir schon klar. ich weiß nur nicht, wie ich an die werte komme. welche befehle ich dazu verwenden muss. zum beispiel die sache mit dem gadgetwidth/gadgetheight bringt mir nichts, da es die gesamtabmaße der splittergadgets gibt. klar kann ich die auch auf die container anwenden, aber der ereignis, während der splitter geslidet wird, ist mir nicht bekannt.

mfg
kurt
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: splittergadget

Beitrag von Kiffi »

Du musst Dir einfach vergegenwärtigen, dass ein SplitterGadget
immer nur zwei Gadgets aufnehmen kann.

Also:

'Mitte oben' und 'Mitte unten' -> SplitterGadget1
'Rechts oben' und 'Rechts unten' -> SplitterGadget2
'SplitterGadget1' und 'SplitterGadget2' -> SplitterGadget3
'Links' und 'SplitterGadget3' -> SplitterGadget4

Und schon hast Du es :-)

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: splittergadget

Beitrag von TomS »

Code: Alles auswählen

Enumeration
	#Links
	#MitteOben
	#MitteUnten
	#RechtsOben
	#RechtsUnten
	
	#Splitter_Links_Rest
	#Splitter_Mitte_Rechts
	#Splitter_Mitte
	#Splitter_Rechts
EndEnumeration

OpenWindow(0, 0, 0, 800, 600, "SplitterGadget", #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)

ButtonGadget(#Links, 0, 0, 0, 0, "Links")
ButtonGadget(#MitteOben, 0, 0, 0, 0, "Mitte oben")
ButtonGadget(#MitteUnten, 0, 0, 0, 0, "Mitte unten")
ButtonGadget(#RechtsOben, 0, 0, 0, 0, "Rechts oben")
ButtonGadget(#RechtsUnten, 0, 0, 0, 0, "Rechts unten")


SplitterGadget(#Splitter_Mitte, 0, 0, 0, 0, #MitteOben, #MitteUnten)
SplitterGadget(#Splitter_Rechts, 0, 0, 0, 0, #RechtsOben, #RechtsUnten)

SplitterGadget(#Splitter_Mitte_Rechts, 0, 0, 0, 0, #Splitter_Mitte, #Splitter_Rechts, #PB_Splitter_Vertical)
SplitterGadget(#Splitter_Links_Rest, 0, 0, WindowWidth(0), WindowHeight(0), #Links, #Splitter_Mitte_Rechts ,#PB_Splitter_Vertical)


Repeat
	event = WaitWindowEvent(20)
	
	Select event
		Case #PB_Event_SizeWindow
			ResizeGadget(#Splitter_Links_Rest, 0, 0, WindowWidth(0), WindowHeight(0))
	EndSelect 
	
Until event = #PB_Event_CloseWindow
Bitte sehr.
delikanli_19_82 hat geschrieben:ja zum resizen der elemente muss ich eben wissen, wie die abmaße des linken, rechten, oben, unteren splittanteils für den betroffenen containergadget/scrollareagadgets aussehen, damit ich den korrekt resizen kann.
Du musst nicht einmal selber etwas resizen, außer das äußerste Splittergadget (im Code letzte, da die verwendeten Gadgets, ja schon existieren müssen) an's Fenster anzupassen.

Wenn in einem Bereich mehr als ein Gadget sein soll, dann nimmst du ein Containergadget und passt die darin befindlichen Gadgets an. Die größe bekommst du ja mit GadgetWidth(#Container) und GadgetHeight(#Container).
Oder eben ein ScrollAreaGadget.

EDIT: Toolbar und Statusbar hab ich weggelassen, aber das kriegst du sicher selber hin.
Beim resizen des "Haupt"-Splittergadgets darauf achten, die Höhe der Toolbar und der Statusbar von WindowHeight() abzuziehen.
delikanli_19_82
Beiträge: 173
Registriert: 30.11.2010 02:34

Re: splittergadget

Beitrag von delikanli_19_82 »

vielen dank TomS
Antworten