Ik heb een form, met daarop een picturebox die ik gebruik als container om me dlls te laden. Allee als ik me dll laad in die picturebox, heeft me form geen focus meer waardoor ik de sneltoetsen van het menu niet meer kan gebruiken. Daarnaast staat het niet zo netjes als de titelbalk niet actief wordt weergegeven. Iemand een idee?
Nadat je je dll geladen hebt kan je je focus toch weer terug zetten met:
Visual Basic:
1
| form1.setfocus |
dat is niet echt een nette oplossing. Daarnaast moet dan elke keer die code aangeroepen worden als je ook maar iets doet in de container... daarnaast wil ik ook toetsen kunnen opvangen in de container zelf.Mr_UnAnimouS schreef op 18 maart 2003 @ 10:50:
Nadat je je dll geladen hebt kan je je focus toch weer terug zetten met:
Visual Basic:
1 form1.setfocus
Ik moet bv tekst in tekstvak kunnen invullen en dan met bv F1-F12 menu blijven bereiken
Ik heb geen kennis van VB, maar is er geen mogelijkheid om je scherm (tijdelijk) modal te maken?
Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.
Ik neem aan dat je een form uit die dll met setparent in die picturebox inlaadt? Dit probleem had ik namelijk ook.... ik heb het opgelost door op dat form een frame te plaatsen, daar alle controls in geplakt en vervolgens dat frame in die picturebox geplaats... Dan blijft de titelbalk netjes geactiveerd....
[ Voor 22% gewijzigd door DukeMan op 18-03-2003 12:45 ]
Ja dat bedoel ik inderdaad, de dll die geladen is wordt mbv setparent in de picturebox gezet. De picturebox is dan dus de cotainer.NTGiant schreef op 18 maart 2003 @ 11:52:
Ik neem aan dat je een form uit die dll met setparent in die picturebox inlaadt? Dit probleem had ik namelijk ook.... ik heb het opgelost door op dat form een frame te plaatsen, daar alle controls in geplakt en vervolgens dat frame in die picturebox geplaats... Dan blijft de titelbalk netjes geactiveerd....
Maar jouw oplossing is niet bij mij van toepassing denk ik. omdat ik onafhankelijk wil blijven en niet de controls uit de dlls slopen en direct in me project op de frame te plakken
edit: ik heb ook ongeveer die code gebruikt maar dat lost niet mijn probleem op..
[ Voor 5% gewijzigd door robbertb op 18-03-2003 13:25 ]
ik ga ook niet los alle controls ophalen, ik heb ik de form in mijn (plugin) dll een frame gemaakt en daar alle controls ingeplakt.... vervolgens heb ik in die dll een GetSettings die de frameset terug geeft, deze wordt vervolgens als child in die picture box gezet. Ik hoef niets te doen met de controls.. die blijven in het frame staan...
ik ben in princiepe ook onafhankelijk, mits alle controls die je wilt zien in je picturebox in dat frame zit...
ik ben in princiepe ook onafhankelijk, mits alle controls die je wilt zien in je picturebox in dat frame zit...
mja okeej dat werkt opzich wel aardig.. thanx..NTGiant schreef op 18 March 2003 @ 14:18:
ik ga ook niet los alle controls ophalen, ik heb ik de form in mijn (plugin) dll een frame gemaakt en daar alle controls ingeplakt.... vervolgens heb ik in die dll een GetSettings die de frameset terug geeft, deze wordt vervolgens als child in die picture box gezet. Ik hoef niets te doen met de controls.. die blijven in het frame staan...
ik ben in princiepe ook onafhankelijk, mits alle controls die je wilt zien in je picturebox in dat frame zit...
maar mn menu is nou niet altijd bereikbaar met de functietoetsen (F1-F12)... via alt is het wel altijd te bereiken.. beetje vreemd dus.
Daar ook een oplossing voor ?
Verwijderd
Wanneer werken de functietoetsen niet? Wanneer ze het niet doen als een bepaald object gefocussed is kun je misschien bij het event keypress() dit doen:
Visual Basic:
1
| Call mnuknop_click() |
Verwijderd
Toevallig liep ik gister tegen PRECIES hetzelfde probleem aan... maar dit lijkt me een heel aardige oplossing.NTGiant schreef op 18 March 2003 @ 14:18:
ik ga ook niet los alle controls ophalen, ik heb ik de form in mijn (plugin) dll een frame gemaakt en daar alle controls ingeplakt.... vervolgens heb ik in die dll een GetSettings die de frameset terug geeft, deze wordt vervolgens als child in die picture box gezet. Ik hoef niets te doen met de controls.. die blijven in het frame staan...
ik ben in princiepe ook onafhankelijk, mits alle controls die je wilt zien in je picturebox in dat frame zit...
Nu heb ik het maar opgelost met SetFocus en SendKeys, maar dat is natuurlijk geen echte oplossing...
dat is ook niet echt een goede oplossing lijkt me, want dan moet ik dat ook bij ALLE componenten doen...Verwijderd schreef op 24 maart 2003 @ 09:31:
Wanneer werken de functietoetsen niet? Wanneer ze het niet doen als een bepaald object gefocussed is kun je misschien bij het event keypress() dit doen:
Visual Basic:
1 Call mnuknop_click()
Ik heb het als ik bv in een tekstvak va een gelade dll zit, en dan overschakel naar een ander met F2, en als ik dan weer terug wil met F1 naar vorige dll gaat dat nog geloof ik maar daarna weer F2 werkt dan iet meer.. beetje vaag. Lijkt erop dat probleem is van focus van component ofzo.
Daaraast heb ik ook nog als probleem dat mijn kruisje van me hoofdform niet meer werkt, het programma sluit dan niet af... dat is als ik hem in VB run, maar ik er exe van, werkt dit wel weer goed.
Verder heb ik nog een stukje code, wat hier verder niet zoveel mee te make heeft, maar wat oook niet goed werkt:
Visual Basic:
1
2
3
4
| MsgBox "totaal voor omzetting: " & totaal If totaal = False Then totaal = True If totaal = True Then totaal = False MsgBox "totaal na: " & totaal |
soms zet hij de boolean niet om
En als ik em onder vb start dan zegt ie bij de eerste messagebox totaal = ONWAAR
en bij de 2e totaal=false
Alsof vb beetje in de war is en de ene keer op zn engels doet en daarna op Nederlands. Ik probeerde net weer en had voor: totaal = onwaar en na: totaal=onwaar.
Terwijl ik toch bij de general declarations heb staan:
"Dim totaal As Boolean"
[ Voor 17% gewijzigd door robbertb op 24-03-2003 11:01 ]
Verwijderd
Zo:
Visual Basic:
1
2
3
4
5
6
7
| MsgBox "totaal voor omzetting: " & totaal If totaal = False Then totaal = True Else totaal = False End If MsgBox "totaal na omzetting: " & totaal |
[ Voor 12% gewijzigd door Verwijderd op 24-03-2003 11:27 ]
Verwijderd
Visual Basic:
1
2
3
| MsgBox "totaal voor omzetting: " & totaal totaal = Not totaal MsgBox "totaal na: " & totaal |
Is nog makkelijker
(Dit draait de waarde altijd om, bij jouw code ging hij 'm twee keer omdraaien...)
Hms deze oplossing is natuurlijk nog mooier dan bovenstaande.. maar bovenstaande werkte al..Verwijderd schreef op 24 March 2003 @ 14:23:
Visual Basic:
1 2 3 MsgBox "totaal voor omzetting: " & totaal totaal = Not totaal MsgBox "totaal na: " & totaal
Is nog makkelijker![]()
(Dit draait de waarde altijd om, bij jouw code ging hij 'm twee keer omdraaien...)
Maargoed snap niet waarom hij in mijn geval niet werkte, wat ik had staan zou toch ook moeten werken?
Maargoed even wat meer ontopic:
Iemand al idee waarom de functietoetsen van menu niet altijd meer werken? (van de zelfgemaakte applicatie)
[ Voor 16% gewijzigd door robbertb op 24-03-2003 21:45 ]
Als ie False is werkt die code inderdaad niet; de eerste regel maakt hem True, waarna de tweede regel hem vrolijk weer op False zetrobbertb schreef op 24 maart 2003 @ 21:39:
[...]
Hms deze oplossing is natuurlijk nog mooier dan bovenstaande.. maar bovenstaande werkte al..
Maargoed snap niet waarom hij in mijn geval niet werkte, wat ik had staan zou toch ook moeten werken?
Maargoed even wat meer ontopic:
Iemand al idee waarom de functietoetsen van menu niet altijd meer werken? (van de zelfgemaakte applicatie)
Voor wat betreft het focus probleem: dat zou kunnen komen doordat de windows die je in de picturebox gooit met SetParent stiekum geen childwindows zijn, maar 'gewone' windows (ook al hebben ze een parent). Je zou eens kunnen proberen om de WS_CHILD flag voor die windows aan te zetten.
Om dat te bereiken gebruik je eerst GetWindowLong met GWL_STYLE om de huidige style op te vragen, vervolgens het WS_CHILD bitje op 1 te zetten (met een bitwise OR), en die nieuwe style aan de window te geven met SetWindowLong.
4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1
Verwijderd
IDD dat werkt ook, in dit geval, maar stel dat je een string hebt met drie mogelijk heden en in het gevan hij een van de 2 eerst is moet z'n waarde veranderen, dan werkt jouw code niet, de mijne is universeler.Verwijderd schreef op 24 March 2003 @ 14:23:
Visual Basic:
1 2 3 MsgBox "totaal voor omzetting: " & totaal totaal = Not totaal MsgBox "totaal na: " & totaal
Is nog makkelijker![]()
(Dit draait de waarde altijd om, bij jouw code ging hij 'm twee keer omdraaien...)
Pagina: 1