Toon posts:

[VB] progressbar in een modal form

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben ff een progje aan het testen in homesite en daar heb ik een dll voor geschreven die ik aanroep vanuit homesite. Maar het probleem is alleen dat ik de progressbar niet aan de gang krijg. Ik krijg het form wel te zien en ook de progressbar, maar hij loopt niet en hide en unvisible zetten werkt ook niet. Kan je een progressbar wel gebruiken in een model form?

Verwijderd

Tuurlijk. Zodra je de progresbar update moet je DoEvents aanroepen, anders houdt het modalform de cpu vast en krijgt de achterliggende VB runtime geen tijd om eventafhandeling naar windows door te sturen, maw je windowmessagehandler krijgt nooit de cpu.

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

Crazy D

I think we should take a look.

Ik zou niet weten waarom niet, het is alleen een beetje de vraag waar de form wordt getoont, en waar de aktie wordt uitgevoerd waarvoor de progressbar nodig is.
Ik neem aan dat je weet dat als je een form modal toont, de "aanroepende form" wacht tot de modale form weer gesloten (geunload) is. Als je dus in een functie zit, daar toon je de form, en vervolgens wil je een lange aktie gaan uitvoeren, werkt dat dus niet, aangezien de aktie pas wordt uitgevoerd als je de form met progressbar unload...

Exact expert nodig?


  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Hoog je wel de value van de ProgressBar op?

Verwijderd

Topicstarter
Ja dat wel ja, maar zodra ik de eerste value erin gooi dan is het einde oefening.

Ik gebruik deze toepassing in homesite om in asp componenten te checken of ze gesloten worden. Hij gaat van het huidige document regel voor regel kijken of er een component geopend of geclosed word. En in die loop zit mijn progressbar. Als ie klaar is dan opent ie het tweede form met een overzicht van alle componenten.

Otis: Ik ga daar eens naar kijken, wat je zegt klinkt behoorlijk logisch!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 19:44

Gerco

Professional Newbie

Probeer dit maar eens:
code:
1
2
FModalForm.Show vbModal
MsgBox "bladieblaat"

Die msgbox krijg je niet te zien als dat form modal is, ook niet als je doevents aanroept. Je event handling gaat dan wel door, maar de code in de huidige sub gaat niet verder tot dat modal form weg is.

Als je bijvoorbeeld met een timer ofzo het werk doet, is dat geen probleem, maar als je dus zoiets wilt doen:
code:
1
2
3
4
5
6
FmodalForm.Show vbModal

' Doe een hoop zooi
FModalForm.ProgressBar.Value = blaat

Unload FModalForm

Dan gaat dat dus niet werken, dan moet je een non-modal form gebruiken.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Verwijderd

Topicstarter
Ja precies, ik heb dus hetzelfde gedaan zoals je beschreef, het enige probleem is dat ik een dll gebruik en non-modal form dat vreet ie dus echt niet, zat al te zoeken naar dat DoEvent maar dat heb ik ook nog niet echt werken, :(

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

Crazy D

I think we should take a look.

Op donderdag 18 juli 2002 09:20 schreef voetenzalf het volgende:
Ja precies, ik heb dus hetzelfde gedaan zoals je beschreef, het enige probleem is dat ik een dll gebruik en non-modal form dat vreet ie dus echt niet, zat al te zoeken naar dat DoEvent maar dat heb ik ook nog niet echt werken, :(
Waarom vreet ie een non-modal form niet? En waarvan/op is die form modal?
Hierboven staat uitgelegt hoe het werkt, een modale form kun je hiervoor alleen gebruiken als je de betreffende code die moet worden uitgevoert in een timer zet :P of als de grote aktie ook in de modale form gedaan wordt. Modale forms zijn hier trouwens ook niet echt helemaal bedoelt, maar goed. Wat je nog weleens ziet is dat de form normaal getoont wordt, maar dat de hoofdform gedisabled is, of zodra het de focus krijgt, deze doorstuurt naar de progess-window.
De enigste smerige workaround waardoor je zoiets kunt doen:
frmModal.Show vbModal
' voer lange aktie uit
Is door de lange aktie in een timer-event te zetten. De timer tikt wel door bij mijn weten, mjah dit idee heb je niet van mij want ik vind 'm wel ranzig ;)

Exact expert nodig?

Pagina: 1