• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 162
  • Last Modified:

how to execute this code - Argument not optional

I have the following code that shows how to print from a flexgrid in VB6.   The only problem is that I don't know how to call this routine in my command button on my form.  

I get the error "argument not optional."  Can someone explain why that happens

Private Sub Command4_Click()
Call PrintFlexGrid
End Sub

Private Sub PrintFlexGrid(ByVal ptr As Object, ByVal flx As _
    MSFlexGrid, ByVal xmin As Single, ByVal ymin As Single)
Const GAP = 60

Dim xmax As Single
Dim ymax As Single
Dim X As Single
Dim c As Integer
Dim r As Integer

    With ptr.Font
        .Name = flxData.Font.Name
        .Size = flxData.Font.Size
    End With

    With flxData
        ' See how wide the whole thing is.
        xmax = xmin + GAP
        For c = 0 To .Cols - 1
            xmax = xmax + .ColWidth(c) + 2 * GAP
        Next c

        ' Print each row.
        ptr.CurrentY = ymin
        For r = 0 To .Rows - 1
            ' Draw a line above this row.
            If r > 0 Then ptr.Line (xmin, _
                ptr.CurrentY)-(xmax, ptr.CurrentY)
            ptr.CurrentY = ptr.CurrentY + GAP

            ' Print the entries on this row.
            X = xmin + GAP
            For c = 0 To .Cols - 1
                ptr.CurrentX = X
                ptr.Print BoundedText(ptr, .TextMatrix(r, _
                    c), .ColWidth(c));
                X = X + .ColWidth(c) + 2 * GAP
            Next c
            ptr.CurrentY = ptr.CurrentY + GAP

            ' Move to the next line.
            ptr.Print
        Next r
        ymax = ptr.CurrentY

        ' Draw a box around everything.
        ptr.Line (xmin, ymin)-(xmax, ymax), , B

        ' Draw lines between the columns.
        X = xmin
        For c = 0 To .Cols - 2
            X = X + .ColWidth(c) + 2 * GAP
            ptr.Line (X, ymin)-(X, ymax)
        Next c
    End With
End Sub

' Truncate the string so it fits within the width.
Private Function BoundedText(ByVal ptr As Object, ByVal txt _
    As String, ByVal max_wid As Single) As String
    Do While ptr.TextWidth(txt) > max_wid
        txt = Left$(txt, Len(txt) - 1)
    Loop
    BoundedText = txt
End Function

Open in new window

0
al4629740
Asked:
al4629740
  • 2
1 Solution
 
Éric MoreauSenior .Net ConsultantCommented:
don't you have a minimum of description on this method? where did you copy it from?

it looks like ptr could be a printer object but that I am not sure.

flx is your flexgrid control for sure.

xmin and ymin looks like margin, so maybe you can try with 0 to start with

That would look something like:
Call PrintFlexGrid(YourPrinterObject, theNameOfYourMSFlexGridControl, 0, 0)

Open in new window

0
 
GrahamSkanRetiredCommented:
Oh dear
You have posted hundreds of questions on this forum, but don't seem to have absorbed any of the concepts of programming. I suggest that you start again with a beginners programming tutorial. Any should do
0
 
al4629740Author Commented:
I could do without the critical remarks...
0
 
al4629740Author Commented:
I took Grahams suggestion and figured it out.  Thanks for your help Eric.
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now