Springen naar inhoud


Meerdere instanties van een frame


  • Log in a.u.b. om te beantwoorden
Er zijn 5 reacties in dit onderwerp

#1 VB6Dummy

VB6Dummy

    VBIB Godfather

  • Leden
  • PipPipPipPipPipPipPipPip
  • 5388 berichten
    Laatst bezocht 26 dec 2014 17:43

Geplaatst op 06 mei 2011 - 19:16

Met mijn code toon je een form modaal tov een ander form. de code na de aanroep van het form wordt pas uitgevoerd nadat het modale form gesloten is.
Code:
Dim c As New clsFormModality
c.ShowModalToParent frmOptions, Me
Msgbox "Dit bericht wordt pas getoond nadat frmOptions gesloten is."


!!! Voor zij die mijn code zouden willen gebruiken in een MDI toepassing:
WijzigCode:
m_ModalForm.Show vbModeless, Parent
in Code:
m_ModalForm.Show vbModeless

Dit geeft anders problemen.

Groeten,
malloc

#2 VB6Dummy

VB6Dummy

    VBIB Godfather

  • Leden
  • PipPipPipPipPipPipPipPip
  • 5388 berichten
    Laatst bezocht 26 dec 2014 17:43

Geplaatst op 06 mei 2011 - 19:16

aahzo,

ja maar bij mij is het probleem niet dat 't form modaal moet opgeroepen worden,
maar vooral dat die code niet verder wordt uitgevoerd,
omdat deze een loop bevat, die hetzelfde form nog X aantal keren oproept.

De MDI-eigenschap is, omdat mijn programma uit 2 grote delen bestaat, dat nog in veel kleine delen is opgesplits,
maar wel in hetzelfde kader moeten worden weergegeven en ook in de taskbar zo getoond worden.
Met de MDI parent, kunnen de gebruikers ook heel mijn programma in 1x sluiten en vooral minimaliseren. Anders slingerden er overal losse venstertjes rond en had je 10 vensters in je taskbar.

Maar toch bedankt voor je code!
Hij zal me elders wel van pas komen!

#3 VB6Dummy

VB6Dummy

    VBIB Godfather

  • Leden
  • PipPipPipPipPipPipPipPip
  • 5388 berichten
    Laatst bezocht 26 dec 2014 17:43

Geplaatst op 06 mei 2011 - 19:16

Dj Vince zei:

frmtest(X).Show 1
werkt bij mij niet, omdat ik met MDI child forms zit,
en daar werkt modal niet bij. Maar ik heb het als volgt gemaakt:

          Do While frmtest(X).Visible = True
             DoEvents
          Loop


Waarom doe je dit?


Even mijn gedacht hierover.
Als je in een MDI applicatie een form modal zou willen tonen dan is het meestal niet nodig van dit form een MDI-Child te maken. (Denk aan een Options window bijvoorbeeld)


Het kan echter gebeuren dat je in een MDI applicatie een form wil hebben dat wel degelijk een MDI-child is maar dat toch "modaal" wordt getoond, maar dan enkel voor ??n bepaald form in de applicatie. Andere child forms kunnen dan nog steeds de focus krijgen, maar het ownerform dat het "modale" form heeft opgeroepen, niet.
Ik heb hiervoor eens een klasse geschreven:Code:
Option Explicit


' Declare a form variable withevents to be able' to find out when the form unloads.Private WithEvents m_ModalForm     As Form' Set to true when the modal form unloadsPrivate bModalFormUnloaded         As Boolean '----------------------------------------------------------- --------------------' Procedure : ShowModalToParent' Purpose   : Shows the ModalForm modal to the Parent form only.'             Other forms will still be able get the focus. '----------------------------------------------------------- --------------------Public Sub ShowModalToParent(ByRef ModalForm As Form, ByRef Parent As Form)    Set m_ModalForm = ModalForm    ' Disable the parent form and show the modal form    Parent.Enabled = False    m_ModalForm.Show vbModeless, Parent        ' DoEvents until the modal form unloads    bModalFormUnloaded = False    Do While Not bModalFormUnloaded        DoEvents    Loop        ' The modal form is closed, enable the parent again    Parent.Enabled = TrueEnd SubPrivate Sub m_ModalForm_Unload(Cancel As Integer)    bModalFormUnloaded = TrueEnd Sub


Nu kan je een form "modaal" tonen voor het operoepende form alleen.
Code:
Dim c As New clsFormModality
c.ShowModalToParent frmOptions, Me


Groeten,
malloc

#4 VB6Dummy

VB6Dummy

    VBIB Godfather

  • Leden
  • PipPipPipPipPipPipPipPip
  • 5388 berichten
    Laatst bezocht 26 dec 2014 17:43

Geplaatst op 06 mei 2011 - 19:16

Excuseer, ik bedoelde inderdaad forms...
Die vergissing maak ik nu eens altijd!

Prachtig! Bedankt voor de code!



frmtest(X).Show 1

werkt bij mij niet, omdat ik met MDI child forms zit,
en daar werkt modal niet bij. Maar ik heb het als volgt gemaakt:

          Do While frmtest(X).Visible = True
             DoEvents
          Loop

Ook mijn excuses voor de laatste keer op de IRC chatbox,
ik zit hier niet thuis, en de verbinding bleef hier maar uitvallen,
met als gevolg dat ik maar af en toe en dan nog eens heel kort op de chatbox kon...

In ieder geval bedankt voor jullie hulp!!

#5 VB6Dummy

VB6Dummy

    VBIB Godfather

  • Leden
  • PipPipPipPipPipPipPipPip
  • 5388 berichten
    Laatst bezocht 26 dec 2014 17:43

Geplaatst op 06 mei 2011 - 19:16

Hallo

Voor de duidelijkheid, er wordt hier wel over forms gesproken en niet over frames. Dan zou ik het volgende doen:

Code:
Dim X As Integer
Dim frmtest() As Form

For X = 0 To intUserAantalFrames
  ReDim Preserve frmtest(X)
  Set frmtest(X) = frmCostResult
  frmtest(X).Show 1
Next



Bij het sluiten van een frmtest(x) verschijnt er opnieuw eentje naar gelang uw waarde van intUserAantalFrames

Succes

#6 VB6Dummy

VB6Dummy

    VBIB Godfather

  • Leden
  • PipPipPipPipPipPipPipPip
  • 5388 berichten
    Laatst bezocht 26 dec 2014 17:43

Geplaatst op 06 mei 2011 - 19:15

Hallo, ik zit met volgend probleem:

ik heb een frame dat ik meermaals oproep om er verschillende vragen in te stellen;
Een soort template dus.

Nu hangt het aantal keren dat ik dat frame moet openen af,
van de user input. Als die 5 is, dan moet dat frame dus 5x komen,
en ik moet er achteraf ook nog terug aankunnen,
met de inhoud die de gebruiker erin typte.

Dit om die dan op te kunnen slaan, achteraf,
in een text file.

        For X = 0 To intUserAantalFrames
             Dim frmTest(X) As New frmCostResult
             frmTest(X).Show
        Next X

Mag blijkbaar niet... omdat X een constante moet zijn




0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


Untitled 1

Met dank aan J├╝rgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
Met dank aan PascalBianca voor de jarenlange inzet van vbib.be (anno dec 2016)