| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2602 人关注过本帖, 1 人收藏
标题:请教 求助 Grid中 创建的按钮控件 如何让它始终显示当前行的按钮?
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用ksbbzhr在2012-12-7 14:36:50的发言:

之前说的方法  是把按钮组放到表格外面独立  
但是这样一来就必须要先到表格里定位到所需要的记录
然后再点击外面的按钮组    否则按钮组怎么判断我需要的哪一行数据呢

这样比较稍微麻烦了点

Grid移动光带条,就是数据表的记录指针移动,点击外面的按钮,按钮中的代码直接提取表的当前记录数据,就是光带处的数据。

授人以渔,不授人以鱼。
2012-12-07 14:40
ksbbzhr
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2012-12-4
收藏
得分:0 
对啊  可是必须要先在表中选择一行记录   然后点击外面的按钮组   
就是两步操作了   麻烦
2012-12-07 15:43
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你现在不也是先把光带移到需要的记录上再点击左边的按钮吗?光带在哪里,数据就在那里的呀。

授人以渔,不授人以鱼。
2012-12-07 15:45
ksbbzhr
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2012-12-4
收藏
得分:0 
不是  现在是  左边的按钮在不点击的时候不完全隐藏   只是暗色显示    可以直接点击需要的数据行
点击之后就按钮组会变成亮色显示  
只是偶尔有时候  在鼠标滚子滚动的时候 会出现两行亮色显示的按钮    不过也无所谓了  同事们使用的时候基本都是查询到1~5行     大量数据行的情况很少出现   只要鼠标不滚动   那种情况就更不会出现

图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 ksbbzhr 于 2012-12-10 13:36 编辑 ]
2012-12-10 13:32
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
鼠标移到左方点击按钮,怎么不是一样呢。

授人以渔,不授人以鱼。
2012-12-10 16:54
ksbbzhr
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2012-12-4
收藏
得分:0 
直接点击暗色显示的非当前行   第一列   合同文本  等按钮组 在非当前行仅仅是暗色显示   也是可以点击的   
不需要先将光标定位到需要的行激活按钮组       只是当点击了暗色显示的按钮后   该行按钮就变成亮色显示了
2012-12-11 09:18
ksbbzhr
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2012-12-4
收藏
得分:0 
再请教下  从Citrix 上 Sap 拷贝数据到vfp 乱码问题   vfp 是 9.0 英文版
我们公司2年前开始实施Sap     并且必须登录德国Citrix 运行德国服务器上的程序  才能使用Sap   
而并非在自己的电脑上使用Sap 客户端程序
出于需要  我必须每天从Sap中 将检验员输入的不合格单信息拷贝至我自己编制的vfp 程序
却发现 拷贝至vfp(英文版) 的信息  凡是中文的全部变成了乱码   
但是拷贝至其他程序  比如 记事本    word  等等 全部正常的     恰好vfp中是乱码的
想了好多办法都不行    必须要中转下  先拷贝到word  再从word 拷贝出来   太麻烦了
无奈之下  vfp中创建 word 对象   让这个中转的操作自动完成

请教下有没有更好的办法      必须安装个补丁程序 内码什么的 彻底解决
谢谢
2012-12-11 12:12
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用ksbbzhr在2012-12-11 09:18:46的发言:

直接点击暗色显示的非当前行   第一列   合同文本  等按钮组 在非当前行仅仅是暗色显示   也是可以点击的   
不需要先将光标定位到需要的行激活按钮组       只是当点击了暗色显示的按钮后   该行按钮就变成亮色显示了

这样跟全部显示没什么不同,也无需弄那么复杂了,呵呵。

授人以渔,不授人以鱼。
2012-12-11 12:17
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册


程序代码:
Main()
RETURN 

PROCEDURE Main()
    LOCAL loForm
    loForm = NEWOBJECT("Class_Main")
    loForm.Show
    READ EVENTS
ENDPROC 

DEFINE CLASS Class_Main AS Form
    Caption = "ksbbzhr"
    Width = 800
    Height = 600
    BorderStyle = 1
    ShowTips = .T.
   
    ADD OBJECT Grid1 AS Class_Grid
   
    PROCEDURE Load
        SET DELETED ON
        IF !USED("Table1")
            USE Table1 EXCLUSIVE IN 0
        ENDIF
    ENDPROC
   
    PROCEDURE Unload
        USE IN Table1
    ENDPROC
   
    PROCEDURE Init
        ThisForm.Arrange
    ENDPROC
   
    PROCEDURE Destroy
        CLEAR EVENTS
    ENDPROC
   
    PROCEDURE Arrange
        WITH ThisForm.Grid1
            .Top = 5
            .Left = 5
            .Width = ThisForm.Width - .Left - 5
            .Height = ThisForm.Height - .Top - 5
            .Arrange
        ENDWITH
    ENDPROC
   
    PROCEDURE Grid1.Init
        WITH This._Grid
            .HighlightStyle = 2
            .RecordSourceType = 1
            .RecordSource = "Table1"
        ENDWITH
    ENDPROC
   
    PROCEDURE Show
        This.Grid1.SetFocus
    ENDPROC
   
ENDDEFINE 

DEFINE CLASS Class_Grid AS Container
    BorderWidth = 0
   
    HIDDEN _Record[1]

    ADD OBJECT _Buttons AS CommandGroup WITH BorderStyle = 0
    ADD OBJECT _Info    AS EditBox
    ADD OBJECT _Grid    AS Grid         WITH DeleteMark = .F.
    ADD OBJECT _EditCmd AS CommandGroup WITH BorderStyle = 0
   
    PROCEDURE Arrange
        WITH This._Buttons
            .Top = 0
            .Left = 0
        ENDWITH
        WITH This._Info
            .Top = This._Buttons.Top + This._Buttons.Height + 5
            .Left = This._Buttons.Left
            .Height = This.Height - .Top
            .Width = This._Buttons.Width - .Left
        ENDWITH
        WITH This._EditCmd
            .Top = This.Height - .Height
            .Left = This.Width - .Width
        ENDWITH
        WITH This._Grid
            .Top = 0
            .Left = This._Buttons.Left + This._Buttons.Width + 5
            .Height = This._EditCmd.Top - .Top - 5
            .Width = This.Width - .Left
        ENDWITH
    ENDPROC
   
    PROCEDURE GotFocus
        This._Grid.SetFocus
    ENDPROC
   
    PROCEDURE _Buttons.Init
        LOCAL laCaption[6,2], lnIndex, lnRow, lnCol, lnWidth, lnHeight, lnPos
       
        laCaption[1,1] = "_SPQCP"
        laCaption[1,2] = RGB(0,128,0)
        laCaption[2,1] = "_ÁªÏµµ¥"
        laCaption[2,2] = RGB(0,0,255)
        laCaption[3,1] = "_ºÏͬÎı¾"
        laCaption[3,2] = RGB(213,0,0)
        laCaption[4,1] = "NCR"
        laCaption[5,1] = "¶¯Æ½ºâ"
        laCaption[6,1] = "³ö³§¼Ç¼"
       
        lnWidth = 60
        lnHeight = 19
       
        WITH This
            .ButtonCount = ALEN(laCaption, 1)
            lnRow = 1
            lnCol = 1
            FOR lnIndex = 1 TO ALEN(laCaption, 1)
                WITH .Buttons[lnIndex]
                    lnPos = ATC("_", laCaption[lnIndex,1])
                   .Caption = SUBSTRC(laCaption[lnIndex,1], lnPos + 1)
                    IF (lnPos > 0)
                        .FontUnderline = .T.
                    ENDIF
                    .FontBold = .T.
                    IF !EMPTY(laCaption[lnIndex,2])
                        .ForeColor = laCaption[lnIndex,2]
                    ENDIF
                    .Width = lnWidth
                    .Height = lnHeight
                    .Top = 2 + (lnRow - 1) * (lnHeight + 2)
                    .Left = 3 + (lnCol - 1) * (lnWidth + 2)
                    IF MOD(lnIndex, 3) == 0
                        lnRow = lnRow + 1
                        lnCol = 1
                    ELSE
                        lnCol = lnCol + 1
                    ENDIF
                ENDWITH
            NEXT
            .Width = 3 + 3 * (lnWidth + 2) + 3
            .Height = 2 + 2 * (lnHeight + 2) + 2
        ENDWITH
       
    ENDPROC
   
    PROCEDURE _Buttons.Click
        MESSAGEBOX("µ±Ç°¼Ç¼: " + TRANSFORM(RECNO("Table1")) + "  °´Å¥: " + This.Buttons[This.Value].Caption)
        This.Parent._Grid.SetFocus
    ENDPROC 

    PROCEDURE _Grid.AfterRowColChange(tnColumn)
        This.Parent.Show_Data()
    ENDPROC
   
    PROCEDURE Show_Data
        LOCAL lcString, lnIndex
       
        lcString = ""
        FOR lnIndex = 1 TO FCOUNT("Table1")
            lcString = lcString + FIELD(lnIndex, "Table1", 1) + ": " + TRANSFORM(EVALUATE("Table1." + FIELD(lnIndex, "Table1"))) + CHR(13) + CHR(10)
        NEXT
        This._Info.Value = lcString
       
    ENDPROC
   
    PROCEDURE _EditCmd.Init
        LOCAL laButtons[4,2], lnIndex, lnWidth, lnHeight
       
        laButtons[1,1] = "&Ocirc;&ouml;&frac14;&Oacute;[\<A]"
        laButtons[1,2] = "&Ocirc;&ouml;&frac14;&Oacute;&Ograve;&raquo;&Igrave;&otilde;&ETH;&Acirc;&micro;&Auml;&frac14;&Ccedil;&Acirc;&frac14;"
        laButtons[2,1] = "&Eacute;&frac34;&sup3;&yacute;[\<D]"
        laButtons[2,2] = "&Eacute;&frac34;&sup3;&yacute;&micro;±&Ccedil;°&frac14;&Ccedil;&Acirc;&frac14;"
        laButtons[3,1] = "&cedil;&acute;&Ouml;&AElig;[\<C]"
        laButtons[3,2] = "&frac12;&laquo;&micro;±&Ccedil;°&frac14;&Ccedil;&Acirc;&frac14;&cedil;&acute;&Ouml;&AElig;&micro;&frac12;&Auml;&Uacute;&acute;&aelig;&frac14;&ocirc;&Igrave;ù°&aring;"
        laButtons[4,1] = "&eth;¤&Igrave;ù[\<V]"
        laButtons[4,2] = "&frac12;&laquo;&Auml;&Uacute;&acute;&aelig;&Ouml;&ETH;&micro;&Auml;&frac14;&Ccedil;&Acirc;&frac14;&eth;¤&Igrave;ù&micro;&frac12;&micro;±&Ccedil;°&frac14;&Ccedil;&Acirc;&frac14;&sup2;&cent;&Egrave;&iexcl;&acute;ú&Ouml;&reg;"
       
        lnWidth = 60
        lnHeight = 25
       
        WITH This
            .ButtonCount = ALEN(laButtons, 1)
            FOR lnIndex = 1 TO .ButtonCount
                WITH .Buttons[lnIndex]
                    .Caption = laButtons[lnIndex,1]
                    .ToolTipText = laButtons[lnIndex,2]
                    .Width = lnWidth
                    .Height = lnHeight
                    .Top = 0
                    .Left = (lnIndex - 1) * lnWidth
                ENDWITH
            NEXT
            .Buttons[4].Enabled = .F.
            .Width = .ButtonCount * lnWidth
            .Height = lnHeight
        ENDWITH
    ENDPROC
   
    PROCEDURE _EditCmd.Click
        DO CASE
            CASE This.Value == 1
                This.Parent.Append_Record
            CASE This.Value == 2
                This.Parent.Delete_Record
            CASE This.Value == 3
                This.Parent.Copy_Record
            CASE This.Value == 4
                This.Parent.Paste_Record
        ENDCASE
        This.Parent._Grid.SetFocus
    ENDPROC
   
    PROCEDURE Append_Record
        SELECT Table1
        APPEND BLANK
    ENDPROC
   
    PROCEDURE Delete_Record
        IF MESSAGEBOX("&Auml;ú&Egrave;·&Egrave;&Iuml;&Eacute;&frac34;&sup3;&yacute;&micro;±&Ccedil;°&frac14;&Ccedil;&Acirc;&frac14;&Acirc;&eth;&pound;&iquest;", 32 + 4 + 256, ThisForm.Caption) == 6
            SELECT Table1
            DELETE
            SKIP -1
        ENDIF
    ENDPROC
   
    PROCEDURE Copy_Record
        LOCAL lcAlias, lnFields, lnIndex, lcField
       
        WITH This
            lcAlias = ._Grid.RecordSource
            lnFields = FCOUNT(lcAlias)
            DIMENSION ._Record[lnFields]
            FOR lnIndex = 1 TO lnFields
                lcField = lcAlias + "." + FIELD(lnIndex, lcAlias)
                ._Record[lnIndex] = EVALUATE(lcField)
            NEXT
            ._EditCmd.Buttons[4].Enabled = .T.
        ENDWITH
    ENDPROC
   
    PROCEDURE Paste_Record
        LOCAL lcAlias, lnFields, lnIndex, lcField
       
        WITH This
            lcAlias = ._Grid.RecordSource
            lnFields = FCOUNT(lcAlias)
            SELECT (lcAlias)
            FOR lnIndex = 1 TO lnFields
                lcField = lcAlias + "." + FIELD(lnIndex, lcAlias)
                REPLACE &lcField WITH ._Record[lnIndex]
            NEXT
            ._EditCmd.Buttons[4].Enabled = .F.
        ENDWITH
    ENDPROC 

ENDDEFINE


[ 本帖最后由 TonyDeng 于 2012-12-12 03:23 编辑 ]

授人以渔,不授人以鱼。
2012-12-12 01:52
ksbbzhr
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2012-12-4
收藏
得分:0 
这样的界面对于我们来说 非常不习惯  别扭  

请教下  怎么解决从sap上拷贝数据到vfp中乱码的问题
2012-12-12 09:15
快速回复:请教 求助 Grid中 创建的按钮控件 如何让它始终显示当前行的按钮?
数据加载中...
 
   



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

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