Toon posts:

[VB.Net] to MDI or not to MDI

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben net klaar met het uittekenen van mijn programmastructuur en sta op het punt te beginnen met het uitbouwen van mijn GUI. Maar aangezien dit mijn eerste echte applicatie is en ik geen ervaring heb in het bouwen van windows-applicaties twijfel ik over de werkwijze.

Ik ken ondertussen MDI maar weet ook dat er zoiets bestaat als Split Container en User Controls.

Nu, welk van de twee wordt het meest gebruikt en wat wordt door jullie aangeraden. Heeft het ene voordelen ten opzichte van het andere of zie ik misschien nog wel een andere manier van opbouw over het hoofd. Graag jullie mening, het betrerft een applicatie met drie verschillende schermen.

Alvast bedankt.

Tim

Acties:
  • 0 Henk 'm!

  • Flard
  • Registratie: Februari 2001
  • Laatst online: 22:19
Ik zou gaan voor een MDI-achtige interface als de gebruiker de mogelijkheid heeft een semi-oneindig aantal vensters te openen. (afhankelijk van het soort users kies ik dan meestal voor tabs, MDI of een docking library).

In jouw voorbeeld, met drie schermen, kun je het misschien mooier verdelen met splitcontainers en/of tabs.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op donderdag 16 april 2009 @ 22:42:
Nu, welk van de twee wordt het meest gebruikt
In welke context/domein?
Verwijderd schreef op donderdag 16 april 2009 @ 22:42:
en wat wordt door jullie aangeraden
Zonder kennis van wat je probeert te doen: neither.
Verwijderd schreef op donderdag 16 april 2009 @ 22:42:
Heeft het ene voordelen ten opzichte van het andere
Uiteraard; anders waren ze er niet allebei geweest ;) Welke voor/nadelen heb je zelf al verzonnen?
Verwijderd schreef op donderdag 16 april 2009 @ 22:42:
Graag jullie mening, het betrerft een applicatie met drie verschillende schermen.
Zo werkt het hier niet; we zien graag ook wat je zélf al bedacht hebt. Als je je mening een beetje onderbouwt hebben we een leuke discussie om aan te gaan; maar je vraag hier neerplempen zonder zelf enige overpeinzingen erbij te zetten is gewoon anderen het denkwerk voor je laten doen ;) Dus... Ga je gang; leef je uit. Vertel! :Y) Ik heb wel nog wat leesvoer voor je :P

[ Voor 4% gewijzigd door RobIII op 17-04-2009 00:23 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik wou eigenlijk gewoon weten of beide evenwaardige alternatieven zijn zonder echt te willen weten wat ik nu specifiek voor mijn programma hoef te gebruiken. Maar ik neem aan dat beide veel gebruikte technieken zijn en dan waarschijnlijk ook vaak in combinatie met elkaar.

Maar om het even visueel voor te stellen.

Dit is volgens mij puur MDI en doe je niet met Split Container:
Afbeeldingslocatie: http://theremedy.be/temp/mdi.jpg

En dit is volgens mij SplitContainer/User Controls en doe je beter niet met MDI:
Afbeeldingslocatie: http://theremedy.be/temp/splitcontainer.jpg

Spreek me tegen wanneer het niet zo is.

Mijn layout lijkt op die tweede, er zijn 4 grote iconen bovenaan de pagina die in een onderste container de betreffende pagina's met hun eventuele tabs moeten laden. Is het een goede keuze te gaan voor een opbouw met SplitContainer?

Of zijn er nog andere technieken die ik momenteel over het hoofd zie?

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 20:50

Sebazzz

3dp

Verwijderd schreef op vrijdag 17 april 2009 @ 09:00:
Maar om het even visueel voor te stellen.
Dit is volgens mij puur MDI en doe je niet met Split Container:
[afbeelding]
Tabcontrol, MDI zijn meerdere vensters in één "moeder" venster.
En dit is volgens mij SplitContainer/User Controls en doe je beter niet met MDI:
[afbeelding]
User controls zijn denk ik semantiek niets waard, ze doen niks en ze zijn niks. Het is een groep van controls die samen als één control samenwerken (DRY-principe, je kan ze overal gebruiken zonder dubbele code).

Een splitcontainer, wat wel wat doet met de user, is twee containers gescheiden door een beweegbare splitter. Tenzij je het beweegbare erin wilt hebben lijkt het mij niet de beste keuze.

offtopic:
Is MDI niet een beetje 2002?

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Vooruit dan maar, ik heb een beslissing genomen. Wat ik ga doen is volgende; een moederformulier definiëren (MDI) waar ik mijn 4 andere formulieren ga inladen. De navigatie zal gebeuren dmv 4 iconen die op elk kindformulier terug gaan komen. Dit is geen probleem want ik definieer ze als User Control (dus geen overbodige code).

Lijkt dit jullie een plausibele oplossing te zijn?

Acties:
  • 0 Henk 'm!

  • Boss
  • Registratie: September 1999
  • Laatst online: 21:54

Boss

+1 Overgewaardeerd

Nee, dat is niet goed. De navigatie doe je door middel van 4 iconen die op het MDI parent formulier staan. De formulieren zouden onderling zo min mogelijk afhankelijkheden moeten hebben.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op vrijdag 17 april 2009 @ 09:00:

Dit is volgens mij puur MDI en doe je niet met Split Container:
[afbeelding]
Nee, dat is een SDI met tabs. Er is helemaal niets "multiple Document" aan :)
Verwijderd schreef op vrijdag 17 april 2009 @ 09:00:
En dit is volgens mij SplitContainer/User Controls en doe je beter niet met MDI:
[afbeelding]
Ook gewoon een SDI (met een shitload aan textboxes :o )
Verwijderd schreef op vrijdag 17 april 2009 @ 09:00:
Spreek me tegen wanneer het niet zo is.
En daarom wees ik je dus op die blogpost: verdiep je eerst in de materie voordat je er mee aan de gang gaat of een (weloverwogen) keuze kunt maken.

MDI
Afbeeldingslocatie: http://69.10.233.10/KB/miscctrl/HostMFC/HostMFC1.gif

SDI
Afbeeldingslocatie: http://www.java2s.com/Code/VBImages/SingleDocumentInterfaceSDIDemo.PNG

TDI
Afbeeldingslocatie: http://www.wfu.edu/~yipcw/atg/moz_ff_tb/images/firefox-tabs-right_click.gif

GSI
Afbeeldingslocatie: http://www.tuningnews.net/news/070607a/opel-corsa-gsi.jpg
:+

Wikipedia: Comparison of document interface
Verwijderd schreef op vrijdag 17 april 2009 @ 10:16:
Lijkt dit jullie een plausibele oplossing te zijn?
Nee; niet echt. Noem eens 1 voorbeeld waar je deze rare constructie nog meer hebt gezien?

[ Voor 23% gewijzigd door RobIII op 17-04-2009 12:22 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • steffex
  • Registratie: Augustus 2003
  • Laatst online: 12-08 00:24
TDI is wat populairder tegenwoordig dan MDI.
Natuurlijk is het compleet afhankelijk wat je applicatie moet doen...

ikzelf zou eerder kijken naar een TDI oplossing, omdat het gewoon een stuk overzichtelijker werkt dan een hoop van die child windows over elkaar heen...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nee; niet echt. Noem eens 1 voorbeeld waar je deze rare constructie nog meer hebt gezien?
Dat is nu net het probleem dat ik een complete noob ben op gebied van windows applicatiedesign (ik vertoef hoofdzakelijk in de webwereld). Ik probeer gewoon voorbeelden te analyseren en de onderliggende structuur ervan thuis te brengen.

Maar zoals uit de antwoorden blijkt moet ik het niet te ver gaan zoeken en kom je een heel eind met SDI, TDI en MDI. In mijn geval zal ik dus kiezen voor een MDI gecombineerd met TDI.

Bedankt voor het ophelderen.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
stef-o schreef op vrijdag 17 april 2009 @ 12:23:
ikzelf zou eerder kijken naar een TDI oplossing, omdat het gewoon een stuk overzichtelijker werkt dan een hoop van die child windows over elkaar heen...
Wat die onoverzichtelijke child windows betreft, het is de bedoeling het ene te sluiten terwijl het andere opent. Of streeft dit nu net het ganse doel van MDI voorbij?

Hm, elk antwoord schijnt weer een nieuwe vraag op te roepen op het moment, weinig motiverend...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
RobIII schreef op vrijdag 17 april 2009 @ 12:02:

Afbeeldingslocatie: http://theremedy.be/temp/splitcontainer.jpg

Ook gewoon een SDI (met een shitload aan textboxes :o )
Als dit gewoon SDI is, hoe ziet de navigatiestructuur met die knoppen er volgens jou dan uit? Gaan die adhv Show/Hide andere informatie op het scherm tonen of openen die gewoon nieuwe vensters?

[ Voor 22% gewijzigd door Verwijderd op 17-04-2009 12:40 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op vrijdag 17 april 2009 @ 12:38:
[...]


Als dit gewoon SDI is, hoe ziet de navigatiestructuur met die knoppen er volgens jou dan uit?
Dat was voor mij niet meteen duidelijk een navigatiestructuur en leek me, op 't eerste oog, meer een zut logo's. Hoe dan ook, die interface is nou niet echt het toonbeeld van correct GUI design ;)
Verwijderd schreef op vrijdag 17 april 2009 @ 12:38:
Gaan die adhv Show/Hide andere informatie op het scherm tonen of openen die gewoon nieuwe vensters?
Weet ik veel :? Ik ken die applicatie niet.
Verwijderd schreef op vrijdag 17 april 2009 @ 12:25:
Dat is nu net het probleem dat ik een complete noob ben op gebied van windows applicatiedesign (ik vertoef hoofdzakelijk in de webwereld). Ik probeer gewoon voorbeelden te analyseren en de onderliggende structuur ervan thuis te brengen.
Je mag dan wel in de "webwereld" zitten, je maakt me niet wijs dat je nog nooit met een IDE, Word, browser of whatever gewerkt hebt ;) Dus je ként zat voorbeelden zonder dat je 't misschien weet ;) Als je serieus hier mee aan de slag wil moet je je gewoon even verdiepen in de basics en van daar uit verder werken. Zomaar iets kiezen omdat 't er "hip" uit ziet is het stomste wat je kunt doen. Een goede GUI assisteert een gebruiker in de taak die 'ie probeert te verrichten en is er dus niet om te showcasen wat iemand wel allemaal voor vette shizzle kan programmeren. Een goede GUI zal dus ook op basis van de informatie die de gebruiker gepresenteerd krijgt en moet verwerken en op de handelingen die hij zal moeten verrichten op die informatie etc. etc. etc. ontworpen (en gekozen) worden.

[ Voor 69% gewijzigd door RobIII op 17-04-2009 12:57 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 16:04
Meer screenshots van die applicatie. De Free License en About openen een nieuw (modaal) scherm, Exit sluit de applicatie, alleen wat subscribe doet is niet duidelijk, maar ik verwacht dat die ook een nieuw scherm opent.

Dus die applicatie heeft 1 hoofdscherm, en een paar andere, losse schermen. Dus SDI.

Voor jouw doel lijkt mij SDI met een tab interface met 4 tabs erop de beste oplossing. MDI is meer geschikt als je een applicatie als Word gaat maken, waarin je meerdere documenten tegelijk kan openen die allemaal hetzelfde uiterlijk hebben.

Hail to the king baby!


Acties:
  • 0 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 22:56
Persoonlijk vind ik MDI eigenlijk alleen nut hebben mits het gecombineerd wordt met enige vorm van docking. Ik denk dat een TDI hier prima op z'n plaats is.
Verwijderd schreef op vrijdag 17 april 2009 @ 12:32:
[...]
Wat die onoverzichtelijke child windows betreft, het is de bedoeling het ene te sluiten terwijl het andere opent. Of streeft dit nu net het ganse doel van MDI voorbij?
Nee! Dat is nu juist niet de bedoeling van een MDI! Een MDI is gemaakt om met meerdere documenten tegelijk te kunen werken (denk aan zo'n beetje elke IDE, Visual Studio, Eclipse, DreamWeaver, TextPad). Je kan dus binnen je hoofdscherm zoveel schermen (documenten) openen als je wilt. Wat is het nut van een multiple! document interface als je telkens het ene scherm sluit en een nieuwe opent?

[ Voor 68% gewijzigd door sig69 op 17-04-2009 13:17 ]

Roomba E5 te koop


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok, ik heb snel iets in elkaar geshopped, hopelijk wordt het nu wat duidelijker.

Afbeeldingslocatie: http://theremedy.be/temp/app.jpg

De knoppen bovenaan zijn de navigatie, en elk opgeroepen form/user control/whatever zal gebruik maken van zijn eigen tab-navigatie.

Hoe pak ik dit best aan, SDI of MDI?

Acties:
  • 0 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 22:56
Snap je nu het verschil tussen SDI en MDI eigenlijk wel? Niet lullig bedoeld hoor...

[ Voor 20% gewijzigd door sig69 op 17-04-2009 13:19 ]

Roomba E5 te koop


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
sig69 schreef op vrijdag 17 april 2009 @ 13:18:
Snap je nu het verschil tussen SDI en MDI eigenlijk wel? Niet lullig bedoeld hoor...
Ja, maar ik snap de manier van navigeren binnen een SDI niet goed. Hoe zorg ik ervoor dat het ene scherm zichtbaar wordt en het andere verdwijnt. Het is niet de bedoeling na een tijdje vier schermen in mijn taakbalk te hebben openstaan.

Acties:
  • 0 Henk 'm!

  • ? ?
  • Registratie: Mei 2007
  • Niet online

? ?

..

[ Voor 99% gewijzigd door ? ? op 25-01-2013 09:44 ]


Acties:
  • 0 Henk 'm!

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 16:04
Verwijderd schreef op vrijdag 17 april 2009 @ 13:16:
Ok, ik heb snel iets in elkaar geshopped, hopelijk wordt het nu wat duidelijker.

[afbeelding]

De knoppen bovenaan zijn de navigatie, en elk opgeroepen form/user control/whatever zal gebruik maken van zijn eigen tab-navigatie.

Hoe pak ik dit best aan, SDI of MDI?
Ik zou het SDI houden, en elk van de 4 formulieren als frames (of panels afhankelijk van je IDE) maken. Als je dan op een knop klikt laat je het bijbehorende frame/panel bovenop alle andere zien zodat de andere niet zichtbaar zijn.

Hail to the king baby!


Acties:
  • 0 Henk 'm!

  • EfBe
  • Registratie: Januari 2000
  • Niet online
VS.NET is MDI, alleen zijn alle documents ge'dockt' in de central tab pane (dus ieder document is een tab). Deze interface is geschikt voor het editen van meerdere gelijke elements waarbij de user moet kunnen switchen tussen de elements. MDI wordt zelf tegenwoordig nauwelijks gedaan, men kiest dan altijd voor een docked interface zoals vs.net en docked slided windows.

Heb je 1 ding te editen en heb je gewoon meerdere stappen, dan is MDI niet geschikt. Als het te druk wordt kun je meerdere stappen over meerdere tabs verdelen. Je shopped interface is geen MDI, want je bent niet aan meerdere dingen TEGELIJK aan het editen waar je tussen kunt switchen, je hebt gewoon een menu structuur en dan verschillende schermen. Dus idd wat Fastman zegt.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


Acties:
  • 0 Henk 'm!

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 13:37

alienfruit

the alien you never expected

Verder kan je een MDI applicatie gemakkelijk omvormen naar de TDI of SDI applicatie. Gewoon de venster aanmaken en vervolgens een TabControl of Container als parent.

code:
1
2
3
4
5
var frmContents: TForm;
begin
   frmContents := TContentsForm.Create();
   pnlContainer.Parent = frmContents;
end;
Pagina: 1