Hello Johnny,
On Sunday 30 August 2009, 12:57, Johnny Rosenberg wrote:
> I have a dialogue with some buttons and boxes. Eight of the buttons
> does basically the same thing, but to different objects, so I need to
> write 8 macros for these, one for each button, since I can not call a
> subroutine with parameters from a command button.
but you get an event object, see bellow...
> My solution right now is to let the buttons call each own subroutine,
> for example the first button calls:
> Sub MySub1
> MySub(1)
> End Sub
>
> So all the subroutines call MySub, but with different parameters, and
> of course MySub looks something like this:
> Sub MySub(X As Integer)
> Dim CtlName As String
> Dim Ctl As Object
> Ctl=Dlg.getControl("ComboBox" + LTrim(Str(X)))
> ' Well, then it's doing stuff with Ctl and so on…
> End Sub
>
> Of the easiest way would to assign the first button to MySub(1) and so
> on, making 8 subroutines unnecessary, but no matter what I try it
> doesn't seem like this is possible.
> Another solution would be to let all the 8 buttons call this one and
> only subroutine:
> Sub MySub
> Dim X As String
> X=Blahblah ' The name of the last button that was pressed…
> Select Case X
> Case "CommandButton1"
> 'Do something
> 'And so on
> End Select
> End Sub
>
> Hm… when thinking about it, this solution is maybe not that much
> convenient after all…
>
> Suggestions?
assign all the buttons to the same macro:
Sub BtnPressed(oEvent as Object)
Dim oControl as Object
Dim oModel as Object
oControl = oEvent.Source
oModel = oControl.getModel()
End Sub
In this way, you can access the control and its model, and check what button
was pressed (by checking the control's model name, which is unique; or by
setting an action command to each button; etc. etc. use your imagination)
Regards
--
Ariel Constenla-Haile
La Plata, Argentina
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]