[AccessD] A2003: Table Driven button list on Continuous Forms

Mark A Matte markamatte at hotmail.com
Wed Sep 10 07:51:46 CDT 2008


Darren,

I done something similar...but not with buttons.  So I modified to see if I could get what you need.  I used a form,subform, and table.  I got the idea from a sample Candace Tripp had on her site years ago.  There is no error handling...just code.

Let me know if you have any questions or need a sample mdb.

Thanks,

Mark A. Matte

Here is the code for each form:
SubForm:  sfrmMyButtons

Option Compare Database

Function ImClicked()
Dim CNM
Dim ctlCurrentControl As Control

Set ctlCurrentControl = Screen.ActiveControl
CNM = Right(ctlCurrentControl.Name, Len(ctlCurrentControl.Name) - 4)

If Me("tgl_" & CNM) = 0 Or IsNull(Me("tgl_" & CNM)) = True Then
    Me("tgl_" & CNM) = -1
    Me("lb1_" & CNM).Visible = False
    Me("lb2_" & CNM).Visible = True
Else
    Me("tgl_" & CNM) = 0
    Me("lb1_" & CNM).Visible = True
    Me("lb2_" & CNM).Visible = False
End If
End Function


Main Form:  frmMakeButton


Function MakeButtons()
Dim dbs As Database, rst As Recordset, intI As Integer
    Dim ctlLabel As Control, ctlText As Control, ctlToggle As Control, ctlButton As Control
    Dim intDataX As Integer, intDataY As Integer
    Dim intLabelX As Integer, intLabelY As Integer
    DoCmd.OpenForm "sfrmMyButtons", acDesign

    Dim ctl As Control
LoopAgain:
        For Each ctl In Forms!sfrmMyButtons.Controls
         Dim test
         DeleteControl "sfrmMyButtons", ctl.Name
        Next ctl
If Forms!sfrmMyButtons.Controls.Count> 0 Then GoTo LoopAgain
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("SELECT Table2.emails FROM Table2 WHERE Table2.Group= '" & [Forms]![frmMakeButton]![Combo3] & "';")

    rst.MoveLast
    rst.MoveFirst
    
    intLabelX = 100
    intLabelY = 100
    intDataX = 1000
    intDataY = 100

For intI = 1 To rst.RecordCount
    '********************************
    Set ctlToggle = CreateControl("sfrmMyButtons", acToggleButton, , "", "", intLabelX, intLabelY, 2000, 500)
        ctlToggle.Name = "tgl_" & rst!emails
        ctlToggle.TabStop = 0
        ctlToggle.Enabled = False
    Set ctlLabel = CreateControl("sfrmMyButtons", acLabel, , "", "66666666662222222000000", intLabelX, intLabelY, 2000, 500)
        ctlLabel.Name = "lb1_" & rst!emails
        ctlLabel.Caption = rst!emails
        ctlLabel.TextAlign = 2
    Set ctlLabel = CreateControl("sfrmMyButtons", acLabel, , "", "66666666662222222000000", intLabelX, intLabelY + 100, 2000, 500)
        ctlLabel.Name = "lb2_" & rst!emails
        ctlLabel.Caption = rst!emails
        ctlLabel.TextAlign = 2
        ctlLabel.Visible = False
    Set ctlButton = CreateControl("sfrmMyButtons", acCommandButton, , "", "66666666662222222000000", intLabelX, intLabelY, 2000, 500)
        ctlButton.Visible = True
        ctlButton.Name = "cmd_" & rst!emails
        ctlButton.Transparent = True
        ctlButton.OnMouseDown = "=imClicked()"
        ctlButton.OnMouseUp = "=imClicked()"
    intLabelY = intLabelY + 500

    '********************************
rst.MoveNext

Next intI
Set dbs = Nothing
Set rst = Nothing
    DoCmd.Close acForm, "sfrmMyButtons", acSaveYes
End Function

Private Sub Combo3_AfterUpdate()
Me!sfrmMyButtons.SourceObject = ""
MakeButtons
Me!sfrmMyButtons.SourceObject = "sfrmMyButtons"
End Sub

> From: darren at activebilling.com.au
> To: accessd at databaseadvisors.com
> Date: Tue, 9 Sep 2008 09:52:18 +1000
> Subject: Re: [AccessD] A2003: Table Driven button list on Continuous Forms
>
> Hi Kath
>
> Thanks for the reply
> I just wanted to build a list of buttons (that grows and shrinks)on a continuous
> form for each of our clients. Clients are selected by tabs and the list of
> buttons is 'built' on each tab click (In a sub form). The table is a list of
> applications each client has and I want a button list of their applications and
> I wanted the caption on the button and the list of buttons to be table driven.
>
> That ain't gonna work. So I used a transparent text box over the no caption
> button that looked OK until you click it. Then the mouse simply moves to the
> text box and the text of 'the button' is selected. Then I wanted the 'look' of a
> button being pushed and look of a button being released when the mouse got to
> this transparent text box. Too tricky
>
> I gave up - can't easily be done and I have already used an inappropriate amount
> of time chasing the 'look'
>
> Darren
>
> -----Original Message-----
> From: accessd-bounces at databaseadvisors.com
> [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Kath Pelletti
> Sent: Tuesday, 9 September 2008 9:10 AM
> To: Access Developers discussion and problem solving
> Subject: Re: [AccessD] A2003: Table Driven button list on Continuous Forms
>
> Darrren -
>
> I'm not sure that I *entirely* understand what you are trying to do, but if
> you want bound controls which look like rounded buttons, then can draw a
> rounded button (in Word or PPoint), and then sit the bound control on top of
> it (text box) and set it's back style to transparent.
>
> Why do you need a mouse down/up event?
>
> kath
>
> ----- Original Message -----
> From: "Darren D" 
> To: "'Access Developers discussion and problem solving'"
> 
> Sent: Monday, September 08, 2008 10:24 PM
> Subject: [AccessD] A2003: Table Driven button list on Continuous Forms
>
>
>> Hi All
>>
>>
>>
>> I have a table of application names that will grow and shrink with many
>> fields
>> but the 2 of interest are.
>>
>> APPID = AutoNumber and AppName = Text
>>
>>
>>
>> I want a continuous form to have a button for each item in that table.
>>
>> Trouble is It is a bit tricky to get the caption for each button to = the
>> AppName for each record in the table
>>
>> I can 'fake' it using labels but if I write a routine to simulate a mouse
>> down
>> and mouse up to mimic raises and depressions then
>>
>> all the labels that are simulated buttons on the form depress and raise at
>> the
>> same time
>>
>> Besides I would prefer to have the 'rounded' look to the buttons simply to
>> match
>> the rest of my screen design
>>
>>
>>
>> I know many people have done this sort of thing before - But how have you
>> managed it on a continuous form driven by a table
>>
>>
>>
>> Many thanks in advance
>>
>>
>>
>> Darren
>>
>>
>>
>> --
>> AccessD mailing list
>> AccessD at databaseadvisors.com
>> http://databaseadvisors.com/mailman/listinfo/accessd
>> Website: http://www.databaseadvisors.com
>>
>
>
> --
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
>
> --
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com

_________________________________________________________________
See how Windows connects the people, information, and fun that are part of your life.
http://clk.atdmt.com/MRT/go/msnnkwxp1020093175mrt/direct/01/



More information about the AccessD mailing list