| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1585 人关注过本帖
标题:VFP9.0下表单的修改问题
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你那個Grid是想幹嘛的?

授人以渔,不授人以鱼。
2013-10-15 14:52
qjbzjp
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:尧的故乡
等 级:贵宾
威 望:48
帖 子:1914
专家分:4397
注 册:2007-3-14
收藏
得分:10 
是这样吗:
有关表1.rar (5.86 KB)

相互学习,互相交流,共同提高。
2013-10-15 16:59
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
運行看看:
test.zip (12.77 KB)


我不知道在這個功能中,你那個下拉框起什麽作用,修改表基本信息,單位名稱隨時會變動,在這裡做個下拉列表是不必要的,所以我沒做那個。

授人以渔,不授人以鱼。
2013-10-15 20:38
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
程序代码:
CLEAR ALL
SET PATH TO "E:\Projects\mytools"
SET PROCEDURE TO "MyTools"
Main()
CLEAR ALL
RETURN 

*-----------------------------
* 程序主入口
*-----------------------------
PROCEDURE Main()
    LOCAL loMainForm
    loMainForm = CREATEOBJECT("_MainForm")    && 在內存中創建已定義的類對象實例
    loMainForm.Show                           && 讓窗體在屏幕上呈現出來可見
    READ EVENTS                               && 啟動交互事務處理機制,窗體才不會一閃而過
ENDPROC 

*-----------------------------
* 主窗體的數據環境
*-----------------------------
DEFINE CLASS _DataEnvironment AS DataEnvironment 

    AutoOpenTables = .T.                && 數據環境在窗體創建時自動生效
    AutoCloseTables = .T.               && 在窗體關閉時自動關閉數據環境

    *-------------------------
    * 打開數據
    *-------------------------
    PROCEDURE OpenTables
        OPEN DATABASE 数据1 SHARED
        USE 财务信息 ALIAS FinancialInfo SHARED IN 0
    ENDPROC
   
    *-------------------------
    * 關閉數據
    *-------------------------
    PROCEDURE CloseTables
        CLOSE DATABASES ALL
    ENDPROC
   
ENDDEFINE 

*-----------------------------
* 主窗體表單類設計
*-----------------------------
DEFINE CLASS _MainForm AS myForm

    *-------------------------
    * 在表單設計器中填寫相應的屬性的行爲即是被轉換為以下的賦値語句
    Caption = "修改財務信息"
    WindowState = 2
    ShowWindow = 2
    MinHeight = 600
    MinWidth = 800
    DEClassLibrary = "TEST.PRG"
    DEClass = "_DataEnvironment"
    *-------------------------
   
    *-------------------------
    * 給窗體添加控件,在表單設計器中拖拉控件到窗體上即被轉換為以下語句
    ADD OBJECT Label1 AS Label WITH Caption = "修改財務信息", FontSize = 16, FontBold = .T., Alignment = 2
    ADD OBJECT Grid1  AS Grid
    ADD OBJECT Edit1  AS _EditContainer
    *-------------------------
   
    *-------------------------
    * 設計Grid1的行爲
    PROCEDURE Grid1.Init
        WITH This
            .DeleteMark = .F.                          && 不顯示刪除記錄標誌列(請注意SET DELETED的設置情況,應與ON匹配)
            .SetAll("FontBold", .T., "Header")         && 把所有Grid列標題文字加粗
            .ReadOnly = .T.                            && 不允許在Grid中編輯數據(本來直接在這裡編輯數據即可)
            .HighlightStyle = 2
        ENDWITH
    ENDPROC
   
    PROCEDURE Grid1.AfterRowColChange(tnColumnIndex)
        * 當Grid上的單元格變動時刷新表單內容,編輯文本框上的數據即會自動刷新
        ThisForm.Refresh
    ENDPROC
    *-------------------------
   
    *-------------------------
    * 根據窗體的動態尺寸排列其上的控件,當用戶改變窗體尺寸時自動縮放控件
    *-------------------------
    PROCEDURE Arrange
        WITH ThisForm.Label1
            .Top = 5
            .Left = 0
            .Height = 30
            .Width = ThisForm.Width
        ENDWITH
        WITH ThisForm.Grid1
            .Top = 2 * ThisForm.Height / 3
            .Left = 5
            .Height = ThisForm.Height - .Top - 5
            .Width = ThisForm.Width - .Left - 5
        ENDWITH
        WITH ThisForm.Edit1
            .Top = ThisForm.Label1.Top + ThisForm.Label1.Height + 5
            .Left = 5
            .Height = ThisForm.Grid1.Top - .Top - 5
            .Width = ThisForm.Width - .Left - 5
        ENDWITH
    ENDPROC
   
    PROCEDURE Refresh
        DODEFAULT()
        ThisForm.Grid1.AutoFit()            && Grid控件的列寬根據內容自動調整
    ENDPROC
   
ENDDEFINE 

*-----------------------------
* 字段編輯容器類定義
*-----------------------------
DEFINE CLASS _EditContainer AS Container 

    BackStyle = 0
    BorderWidth = 0
   
    *-------------------------
    * 動態添加編輯項目,通過輪詢表字段而得
    *-------------------------
    PROCEDURE Init
        LOCAL lnIndex, lcControlName, lnHeight, laStruct[1]
       
        AFIELDS(laStruct, "FinancialInfo")
        lnHeight = 25
        WITH This
            FOR lnIndex = 1 TO FCOUNT("FinancialInfo")
                lcControlName = "Get" + TRANSFORM(lnIndex, "@L 99")
                .AddObject(lcControlName, "myGet")                                            && 所有用AddObject()方法添加的控件均是動態添加
                WITH .&lcControlName
                    .Top = 5 + (lnIndex - 1) * (lnHeight + 5)
                    .Left = 5
                    .AddObject("Label1", "Label")
                    WITH .Label1
                        .Caption = FIELD(lnIndex, "FinancialInfo", 1) + ": "                   && 當是數據庫表時,用此函數獲得字段Caption字符串
                        .FontBold = .T.
                        .Width = 80
                        .Alignment = 1
                    ENDWITH
                    .AddObject("Text1", "_GetTextBox")
                    WITH .Text1
                        .ControlSource = "FinancialInfo." + FIELD(lnIndex, "FinancialInfo")    && 綁定文本框的數據源到字段上
                        .Width = laStruct[lnIndex,3] * 7                                       && 文本框的寬度按字段設計寬度等比例設置
                    ENDWITH
                    .SetAll("Height", lnHeight)
                    .SetAll("Visible", .T.)                                                    && 動態添加的控件必須設置此屬性讓其可視
                    .Arrange                                                                   && 根據向Get容器添加的控件數目和尺寸調整位置及容器尺寸
                ENDWITH
            NEXT
            .SetAll("Visible", .T.)                                                            && 讓Get容器可視
        ENDWITH
       
    ENDPROC
   
ENDDEFINE 

*-----------------------------
* 編輯字段的文本框類定義
*-----------------------------
DEFINE CLASS _GetTextBox AS TextBox

    PROCEDURE Valid
        * 當離開文本框時刷新表單內容,主要是Grid控件中的欄寬自適應要在此觸發
        ThisForm.Refresh
    ENDPROC
   
ENDDEFINE


[ 本帖最后由 TonyDeng 于 2013-10-15 23:45 编辑 ]

授人以渔,不授人以鱼。
2013-10-15 23:29
牧神之
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2013-10-14
收藏
得分:0 
非常感谢你帮我解答,我的组合框是因为公司太多,需要对指定公司做修改的意思,不过我昨天乱做给弄了一下,还有请问下proc...endproc这是什么循环的呀,我从没用过
2013-10-16 08:56
牧神之
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2013-10-14
收藏
得分:0 
回复 22楼 qjbzjp
谢谢您的回答,我先试试哈,无论对不对都挺感激您的
2013-10-16 08:57
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
proc……endproc不是循環,是過程(函數)代碼。
收到的鲜花
  • 牧神之2013-10-16 17:14 送鲜花  2朵   附言:我很赞同,非常感谢帮我的各位

授人以渔,不授人以鱼。
2013-10-16 11:35
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
單位名稱多,更加不能用下拉框,不方便使用的。在上面那個是修改編輯界面,內容填寫下去,就不存在搜索的問題,而是直接把數據改動了,所以不能在這裡兼職搜索。可以在下面Grid位置上設置搜索欄,隨著鍵入的文字在Grid中自動定位(或篩選)符合條件的記錄,需知上面的數據呈現是跟隨Grid記錄的變動而變動的。

授人以渔,不授人以鱼。
2013-10-16 12:51
快速回复:VFP9.0下表单的修改问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038344 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved