Vraag & Antwoord

Programmeren

Alweer VBA: Min Max Buttons

11 antwoorden
  • Ik ga rustig verder: op een MS Acces form kun je wel Min Max Buttons plaatsen, op een MS Word form (gemnaakt met VBA dus) niet. Klopt dat? Zo ja, is daar een oplossing voor?
  • Wat bedoel je met een min - max button. Is dit de wisseknop of wil je het minimum of maximum van een reeks ?
  • Min Max Buttons zijn twee knopjes in de "blauwe" balk, en die knopjes staan naast het "kruisje" (het knopje sluiten). Met Min minimaliseer je het scherm, met Max maximaliseer je het scherm: standaard Windows handelingen kortom. Dat kan wel met een MS Access formulier, maar kan dat ook met een MS Word formulier?
  • Voorzover ik weet zijn deze knopjes niet beschikbaar voor een userform in VBA WORD. Misschien kan het via een Windows API call.
  • Ik weet iets van VBA maar helemaal niets van API calls (dat is toch werken met DLL's?). Waar kan je daar meer over vinden? Op de site van Bill?
  • En zou hier het verlossende woord tussen zitten:http://www.andreavb.com/tip050002.html?
  • Lijkt er wel op, maar alleen uitproberen geeft het uiteindelijke antwoord.
  • Ik heb al een beetje lopen rommelen - er gebeurde helaas wienig. Op een site waarnaar flvanSon wij in ander onderdeel van dit forum een verwees - zo'n 10 min. nadat ik een vraag zelf had opgelost! - las ik echter dat "the hWnd property of Word's various windows" niet beschikbaar zijn in VBA - geen flauw idee wat dat betekent, maar veel goeds voorspelt het niet.
  • De h staat voor handle en Wnd is kort voor Window oftewel venster. Windows gebruikt een handle (uniek nummer) als identificatie voor een venster. Als er geen hWnd voor een Word venster is dan kun je ook een flink aantal api functies niet aanroepen. In de code op de site van Andrea hebben vier van de vijf functies de hWnd nodig. Je kunt een hWnd met een functie opvragen, kijk maar naar het volgende simpele voorbeeld: [code:1:1e2911421d]Option Explicit Private Declare Function FindWindow Lib &quot;user32&quot; Alias &quot;FindWindowA&quot; (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Sub Form_Load() Dim WinWnd As Long, Ret As String 'Vraag naar de exacte titel van het venster Ret = InputBox(&quot;Geef de exacte titel van het venster:&quot;) 'Zoek het venster WinWnd = FindWindow(vbNullString, Ret) If WinWnd = 0 Then MsgBox &quot;Kon het venster niet vinden ...&quot; Else MsgBox &quot;hWnd = &quot; &amp; WinWnd End If End Sub[/code:1:1e2911421d] Dit gaat uiteraard alleen op als die word vensters een titel hebben Oh ja, als je geen tekst in het tekstvak doet dan vindt hij toch ergens een hWnd, heb alleen geen zin om uit te zoeken waarvan. _________________ I'm not a complete idiot, some parts are missing. <font size=-1>[ Dit Bericht is bewerkt door: DarkScribe op 2002-03-09 19:54 ]</font>
  • Dat werkt inderdaad prima. Bedankt! Inmiddels had ik overigens ontdekt dat de functie GetActiveWindow() uit user32 hetzelfde resultaat geeft, maar jouw Sub lijkt zo op het eerste gezicht beter, want niet afhankelijk van de vraag welk Window nu actief is (of is dat onzin?). Enfin, ik heb de Code van de site van Andrea gebruikt en ... er verschijnen zowaar Min Max Buttons op het form zonder dat de boel crasht. De buttons doen ook wat ze moeten doen, dus we zijn er bijna. Nog niet helemaal: mijn buttons verschijnen namelijk pas nadat je of met de muis over hun &quot;plaats&quot; beweegt of de desbtreffende titelbalk aanklikt! Iemand enig idee waar ik moet zoeken om die (laatste) hobbel te nemen?
  • Zat te denken aan Object.ReFresh eventueel in samenwerking met een DoEvents.

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.