【问题标题】:Visual Foxpro Data Grid based entry screen forms基于 Visual Foxpro 数据网格的输入屏幕表单
【发布时间】:2013-04-12 10:24:14
【问题描述】:

我有三个表格,第一个是缔约方名称,第二个是质量,第三个是 存储采购订单。目前我开发了带有文本框的订单输入表单。 当我在同一日期有来自一方的 10 或 20 多个不同质量的订单时,很难输入订单。 现在我想在网格中制作它。首先选择日期,然后选择派对并输入任意数量的订单。但我不知道如何在 Visual Foxpro 中做到这一点。我尝试了很多以找到一些示例或示例,但未能找到。我想在这里提到的另一件事是,这是我的 4 个表单应用程序中唯一的一个表单。我需要知道如何在网格中进行计算。

请帮忙。

【问题讨论】:

    标签: forms datagrid visual-foxpro


    【解决方案1】:

    在 VFP 命令窗口中,打开任务窗格管理器并选择解决方案示例。搜索网格,你会发现一堆使用网格的例子。

    【讨论】:

    • 我试过了,但不是我想要的。还有一件事我想在这里提一下,解决方案示例没有任何好的示例来学习数据网格编程。
    【解决方案2】:

    这样的?

    createtables()
    ON ERROR 
    oForm = CREATEOBJECT("myform")
    oForm.visible = .t. 
    READ EVENTS  
    DEFINE CLASS mygrid as grid
        PROCEDURE init
            this.top = 40
            this.Left = 10
            this.Width = 450 
            this.ColumnCount = 6
            this.DeleteMark = .f.
            this.RecordMark = .f.
            this.RecordSource = "porders"
            this.column1.ControlSource = this.RecordSource + ".podate" 
            this.column1.Header1.Caption = "PO Date"
            this.column1.width = 75     
            this.column2.ControlSource = this.RecordSource + ".ponum" 
            this.column2.Header1.Caption = "PO Num"
            this.column2.width = 65
            this.column3.ControlSource = this.RecordSource + ".poparty"         
            this.column3.Header1.Caption = "Party"
            this.column3.width = 65
            this.column4.ControlSource = this.RecordSource + ".poqty" 
            this.column4.Header1.Caption = "Qty"
            this.column4.width = 65
            this.column5.ControlSource = this.RecordSource + ".poprice"
            this.column5.Header1.Caption = "Price"
            this.column5.width = 65
            this.column6.addobject("oqualities", "myqualities")
            this.column6.CurrentControl = "oqualities"
            this.column6.width = 65
            this.column6.sparse = .t.
            this.column6.Header1.Caption = "Quality"
            this.column6.ControlSource = this.RecordSource + ".poquality"       
        ENDPROC 
    ENDDEFINE 
    DEFINE class mycombo as combobox
        PROCEDURE init
            this.top = 10
            this.left = 150 
            this.Style = 2 
            this.RowSource = "parties.name"
            this.RowSourceType = 6       
        ENDPROC     
        PROCEDURE interactivechange
            SELECT (this.Parent.oGrid.RecordSource)
            lcVal = ["] + ALLTRIM(this.value) + ["]
            SET FILTER TO ALLTRIM(poparty) = &lcVal     
            this.Parent.ogrid.refresh()
        ENDPROC 
    ENDDEFINE 
    DEFINE class myqualities as combobox
        PROCEDURE init
            this.Style = 2
            this.RowSource = "qualities.desc"
            this.RowSourceType = 6      
        ENDPROC     
    ENDDEFINE 
    DEFINE CLASS mybutton as commandbutton
        PROCEDURE init
            LPARAMETERS tcMode
            this.Caption = tcMode
            this.Top = 250
            this.Left = 10
        ENDPROC  
        PROCEDURE click     
            IF this.Caption == "ADD"
                IF EMPTY(ALLTRIM(this.Parent.oparties.value))
                    MESSAGEBOX("Please select party")
                    RETURN .f.
                ENDIF 
                SELECT (this.Parent.ogrid.recordsource)         
                APPEND BLANK
    
                replace podate WITH this.parent.odate.value, ;
                        ponum WITH INT(RAND()*100000), ;
                        poparty WITH this.Parent.oparties.value, ;
                        poqty WITH 1                    
    
                this.Parent.ogrid.setfocus()
            ENDIF 
        ENDPROC 
    ENDDEFINE  
    DEFINE CLASS mydate as TextBox
        PROCEDURE init
            this.Value = DATE()
            this.Left = 10  
            this.Top = 10
        ENDPROC 
    ENDDEFINE 
    DEFINE CLASS myform as form
        PROCEDURE init
            this.AddObject("ogrid", "mygrid")
            this.AddObject("odate", "mydate")
            this.AddObject("oparties", "mycombo")
            this.AddObject("oAdd", "mybutton", "ADD")               
            this.ogrid.visible = .t.
            this.oparties.visible = .t.
            this.oAdd.visible = .t. 
            this.odate.visible = .t.        
            this.Height = 300
            this.Width = 470
            this.Visible = .t.
        ENDPROC 
    ENDDEFINE 
    PROCEDURE createtables
        IF !USED('parties')
            CREATE TABLE parties FREE (name c(20))
            INSERT INTO parties values("John")
            INSERT INTO parties values("Richard")
            INSERT INTO parties values("Melvin")
        ENDIF 
        IF !USED('qualities')
            CREATE TABLE qualities FREE (desc c(20))
            INSERT INTO qualities values("GOOD")
            INSERT INTO qualities values("BAD")
            INSERT INTO qualities values("SMELLY")
        ENDIF   
        IF !USED('porders')
            CREATE TABLE porders FREE (ponum i, podate D, poparty c(20), poqty n(10,2), poprice n(10,2), poquality c(20))
        ENDIF 
    ENDPROC 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多