boven property

Status
Niet open voor verdere reacties.

JEPEDEWE

Terugkerende gebruiker
Lid geworden
14 jun 2006
Berichten
1.682
In een module schrijf ik:

Code:
Function Bestanden(frm As Form)
Dim ctl As Control
For Each ctl In frm.Controls
    With ctl
        Select Case .ControlType
            Case acCommandButton
                If Left(.Name, 9) = "Knp_best_" Then
                    .Visible = True
                End If
        End Select
    End With
Next ctl
End Function

dat werkt perfect, maar kan ik hier, op de een of andere manier ook de hoogte en de afstand tot boven in kwijt, zodat alle knoppen op dezelfde hoogte komen te staan
Bedankt
JP
 
Laatst bewerkt:
Je hebt al eerder volgens mij een vraag over die knoppen gesteld; ik had toen ook al de gedachte waarom je zo met knoppen zit te rotzooien. Zelf zet ik die knoppen over elkaar heen, netjes uitgelijnd. Gewoon met de hand dus, er is geen enkele noodzaak om dat met VBA te doen toch?
Nog beter is het natuurlijk, en dat doe ik dus bij voorkeur, om een paar knoppen te gebruiken die dan, afhankelijk van de gewenste functies, een andere caption (en functie uiteraard) krijgen. Scheelt een hoop knoppen en vooral een hoop gedoe.
 
Als je die over mekaar zet dan is dit lastig als je ze moet selecteren om te bewerken, dus ik maak ze allemaal extra dun en zet ze onder mekaar, door de hoogte en de afstand tot boven te veranderen in de functie zien alles er netjes uit.. dus, via welk commando kan ik dat doen?
 
Als je die over mekaar zet dan is dit lastig als je ze moet selecteren om te bewerken
Daar heb je het menu voor. Kun je perfect selecteren welke knop je nodig hebt. Moet je die knoppen uiteraard wel een logische naam hebben gegeven. Maar nog veel handiger is dus om met een minimaal aantal knoppen te werken die je dan aanpast per functie. Je kunt met een Select Case alle knopacties die nu onder één knop zitten, waardoor je zoveel knoppen nodig hebt, alle acties van die losse knoppen uit laten voeren. En die Select Case baseer je dan op de Caption van die knop. Overzichtelijker dan wat je nu hebt. En ook nog eens redelijk simpel aan te passen.
 
Vraagt weer heel wat denk en herprogrammeerwerk (en dus weer vele forumvragen en ontgoochelingen) en ik heb daar geen tijd/zin in dus, dat brengt mij terug naar mijn initiele vraag... via welk commando bepaal ik de hoogte en de afstand van de bovenlijn van een drukknop...
 
Het gekke is (vind ik althans) dat je het antwoord zelf al gegeven hebt in bericht #1; je had ons dus helemaal niet nodig :). Wél een Nederlands-Engels woordenboek trouwens, want op de een of andere manier heb je nog niet helemaal door dat in VBA Engelse commando's worden gebruikt, en dat je Nederlandse begrippen dus eerst naar het Engels moet vertalen. Het gaat dan om de volgende twee woorden/begrippen: "hoogte" en "afstand tot boven". "Hoogte" is natuurlijk "Height" en "afstand tot boven" is "Top".
Je functie ziet er dan zo uit:
Code:
Function Bestanden(frm As Form, knop As String)
Dim ctl As Control
For Each ctl In frm.Controls
    With ctl
        Select Case .ControlType
            Case acCommandButton
                If Left(.Name, 4) = "Knp_" Then
                    .Visible = (Left(.Name, 9) = knop)
                    .Top = 200
                    .Height = 400
                    .Width = 600
                End If
        End Select
    End With
Next ctl
End Function

Uiteraard wel even de getallen aanpassen naar wat je wilt hebben. De maten zijn onhandig in het gebruik, omdat je niet met cm's werkt maar met twips. Je kunt uiteraard met een msgbox de afmetingen van een ander object uitlezen, en die waarden overnemen. Ik heb de functie op basis van een andere vraag een beetje opgeleukt, want je hebt meerdere knoppen die je wilt uitlijnen op basis van de beginletters. Met deze variant worden automatisch alle knoppen netjes verborgen of zichtbaar gemaakt, op basis van de functie-aanroep. Die ziet er dan dus iets anders uit. Nu gebruik je waarschijnlijk Bestanden Me. Dat moet je veranderen in Bestanden Me, "Knp_best_". En als je een andere reeks knoppen wilt verander je dus de parameter. Dus dan krijg je dit soort opdrachten:
Code:
    Bestanden Me, "Knp_niew_"
    Bestanden Me, "Knp_best_"
Daarbij zit dus een kleine extra check op de overige knoppen, die je uiteraard niet aan wilt passen. Alle dynamische knoppen moeten dus in naamgeving een structuur hebben die de overige knoppen niet hebben.
 
Heel helder
Wist niet van het bestaan van twips.. op welke cursus had ik DAT moeten leren
 
Gewoon in een tekstveld gaan staan, klikken in de eigenschap <Hoogte> (of breedte, of Top etc) en op <F1> drukken. Krijg je netjes de helpteksten te zien, en leggen ze ook uit wat 'twips' is :).
 
Moest je nu nog even naar dat “werkongevallengedoe” kunnen kijken...
 
Werkt perfect..
De reden waarom ik het echt voor mekaar kreeg was dankzij: "Intellisense"
Als ik het puntje intyp, dan zou ik Top of Height moeten krijgen, maar niet dus..
Je kan niet zeggen dat ik mijn best niet doe he Michel... ;)
 
Als er ergens in de db een fout zit, werkt IntelliSense niet (altijd). Bij mij gaan er dan dus alarmbellen rinkelen, en ga ik eerst de db compileren om de fouten op te sporen en te verbeteren. Daarna werkt IntelliSense weer prima.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan