Toon posts:

[Delphi] MDIChild form modal tonen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Is het mogelijk om een MDIChild modal te tonen (ShowModal)? Volgens mij kan het niet, want een MDIChild moet de property visible altijd op True hebben en bij het dynamisch aanmaken van dat form wordt dus gelijk het form getoond.

Maar ik wil het volgende:

Ik heb een combobox in mijn Beheer form. Als 1e item staat daar Toevoegen. Als de gebruiker die kiest, dan wordt het form met die stamgegevens getoond. Nu wil ik dus dat form modal tonen. Als de gebruiker een item heeft toegevoegd wil ik dan het scherm weer sluiten en terug keren naar het hoofdscherm.

Of is dit misschien een fout ontwerp?

Verwijderd

MDI kent GEEN modal..

MISCHIEN werkt de API-call : MoveWindow

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 09:31

Crazy D

I think we should take a look.

Zo te horen moet je van die form gewoon geen MDI-child form maken, maar een gewone form. Nou weet ik niet of je dat in Delphi door elkaar kunt gebruiken, het lijkt me van wel. Maar als je dat formulier altijd modal wilt tonen (dus ook als iemand gaat wijzigen) dan hoeft het geen mdi-child te zijn.

Al zou ik er denk ik zelf voor kiezen om het wel een mdi-child te laten zijn, zodat je ook iets anders kunt doen tussendoor. Ik weet niet wat je aan het maken bent, maar het is uitermate k*t als je een debiteur aan het toevoegen bent, en je tussendoor even een ordertje in moet voeren, en je kan die order niet invoeren totdat je het andere venster gesloten hebt. Probeer zoveel mogelijk "tegelijkertijd" te laten gebeuren (dus het ook mogelijk maken om bv 2 debiteuren tegelijkertijd aan te maken), dat werkt imho het makkelijkste (heb gewerkt met een programma waar dat niet kon en tis dus echt irritant als je dan de ene debiteur moet saven (mits je de verplichte gegevens al wel gevuld had), debiteurnr moet onthouden, nieuwe invoeren, en dan weer die andere gaan wijzigen). En voor bv orders geldt dat net zo.

Exact expert nodig?


Verwijderd

Topicstarter
Oke er zit dus niks anders op dan het normaal te tonen.

Maar ik heb nog een andere vraag. De gebruiker heeft dus op Toevoegen geklikt ==> andere form wordt getoond ==> gebruiker voegt een nieuw item toe (en sluit dit form) ==> vervolgens is hij weer terug op het hoofdform.

Dus nu moet het nieuwe item getoond worden. Nu kan ik natuurlijk iedere keer als hij de lijst toont (de combobox) alle items opnieuw opvragen d.m.v. een query alleen lijkt mij dat niet echt slim.

Hoe zouden jullie dat doen?

Bijv met messages werken intern?

  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 31-08 21:58

Delphi32

Heading for the gates of Eden

Op vrijdag 26 juli 2002 22:37 schreef tokkie het volgende:
Oke er zit dus niks anders op dan het normaal te tonen.

Maar ik heb nog een andere vraag. De gebruiker heeft dus op Toevoegen geklikt ==> andere form wordt getoond ==> gebruiker voegt een nieuw item toe (en sluit dit form) ==> vervolgens is hij weer terug op het hoofdform.

Dus nu moet het nieuwe item getoond worden. Nu kan ik natuurlijk iedere keer als hij de lijst toont (de combobox) alle items opnieuw opvragen d.m.v. een query alleen lijkt mij dat niet echt slim.
Het form met de toevoegen-knop weet na het afsluiten van het nieuwe-item-form het resultaat van de actie (er is toegevoegd of niet). Als er toegevoegd is, moet dat form dus zijn combo refreshen.
Als je een TDB(Lookup)ComboBox gebruikt zit er niets anders op dan je dataset te refreshen. Gebruik je een non-data-aware variant dan zijn er vast wel slimmere manieren te bedenken om uit te zoeken hoe je het nieuwe record in je combo krijgt, maar ik zou normaal gesproken in elk geval mijn dataset refreshen. Mijn stelregel in dit soort situaties is:
als het te lang duurt om de combo te refreshen middels een gewone dataset.refresh, dan zitten er meestal teveel gegevens in de combo en moet ik het op een andere manier gaan oplossen (lees: geen combo gebruiken).

Verwijderd

Topicstarter
Op zaterdag 27 juli 2002 00:33 schreef Delphi32 het volgende:
Het form met de toevoegen-knop weet na het afsluiten van het nieuwe-item-form het resultaat van de actie (er is toegevoegd of niet).
Het niewe-item-form hoeft niet perse gesloten te worden. Dus kan je niet weten of de gebruiker klaar is met het invoegen. Hij kan gewoon het scherm open laten staan, omdat het geen modal form is.

  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 31-08 21:58

Delphi32

Heading for the gates of Eden

Op zaterdag 27 juli 2002 12:35 schreef tokkie het volgende:

[..]

Het niewe-item-form hoeft niet perse gesloten te worden. Dus kan je niet weten of de gebruiker klaar is met het invoegen. Hij kan gewoon het scherm open laten staan, omdat het geen modal form is.
Je eerdere post hierboven suggereerde juist wel dat het form modal getoond werd. Je beschrijft een duidelijk begin- en eindpunt van een handeling, iets wat je niet voor elkaar krijgt met non-modal forms :)

Maar goed, je kunt natuurlijk altijd op de OnAfterPost event van je item-tabel de item-lookup-query refreshen. Data-aware controls die hangen aan die item-lookup-query zijn dan ook meteen voorzien van de nieuwe data.
Pagina: 1