网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
02月11日漏签0天
vb吧 关注:156,053贴子:1,166,294
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 1 2 3 4 下一页 尾页
  • 46回复贴,共4页
  • ,跳到 页  
<<返回vb吧
>0< 加载中...

【求助】关于创建255个以上控件的问题

  • 只看楼主
  • 收藏

  • 回复
  • genmoon
  • 啥也不懂
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
本人在写一个游戏的修改器,在写好各个方面的代码后,发现在1个窗口内,只能创建254个控件。
无奈之下,求助求助。希望各位达人不鄙指教。在下不胜感激。
见下图。



  • 119.141.10.*
快试试吧,
可以对自己使用挽尊卡咯~
◆
◆
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
不要使用控件数组,使用一个控件,和一个变量数组。
在控件上鼠标点击的时候,根据XY得到点击的是那个方块。


2026-02-11 12:15:35
广告
不感兴趣
开通SVIP免广告
  • dfqshy
  • 函数调用
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
用动态增加数组控件的方法,我记得以前在窗体上增加600多个动态控件也OK的


  • dfqshy
  • 函数调用
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
第二个问题
Private Sub Picture1_Click(Index As Integer)
    If Picture1(Index).BackColor = &HC0C0C0 Then
        Picture1(Index).BackColor = &HFF0000 '蓝色
    Else
        Picture1(Index).BackColor = &HC0C0C0 '灰色
    End If
End Sub


  • genmoon
  • 啥也不懂
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
首先,感谢回复。
我先行研究一下。
本人极菜,第二个问题,我是明白的。
但:是否使用控件数组,控件数可以超过255这个数目呢?
关于2楼、3楼dfqshy 的具体做法,我暂时不懂,有空可否详细说一下呢?


  • dfqshy
  • 函数调用
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
以前做类似的静态修改器比较多,你讲一下具体要求,我帮你写好代码。如:控件名、高、宽,每排多少个,共多少排?


  • dfqshy
  • 函数调用
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
http://hi.baidu.com/dfqshy/blog/item/739800f4167a8e63dcc4745b.html
这个地图修改器,就是动态增减数组控件的方法做的,要源码留邮箱(三天内有效^_^)


  • 雀巢vb豆浆
  • 函数调用
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Dim Table(21, 54) As Integer
Private Sub Form_Load()
     Me.Width = Me.Width + 1100 * Screen.TwipsPerPixelX - Me.ScaleWidth     '1100=55*20 Pixels
     Me.Height = Me.Height + 440 * Screen.TwipsPerPixelY - Me.ScaleHeight   ' 440=22*20 Pixels
     Me.ScaleMode = vbPixels: Me.BackColor = &H80000016: Me.AutoRedraw = True
   Dim i As Integer
     For i = 0 To 21
        Line (0, i * 20)-(1100, i * 20), &H80000014
        Line (0, i * 20 + 19)-(1100, i * 20 + 19), &H80000015
     Next
     For i = 0 To 54
        Line (i * 20, 0)-(i * 20, 440), &H80000014
        Line (i * 20 + 19, 0)-(i * 20 + 19, 440), &H80000015
     Next
     Me.Picture = Me.Image: Me.Cls
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
   Dim ix As Integer, iy As Integer
     If Button = vbLeftButton Then
        ix = X \ 20: iy = Y \ 20
        Table(iy, ix) = (Table(iy, ix) + 1) Mod 2
        Line (ix * 20 + 1, iy * 20 + 1)-(ix * 20 + 18, iy * 20 + 18), IIf(Table(iy, ix) = 0, &H80000016, vbBlue), BF
     End If
End Sub



2026-02-11 12:09:35
广告
不感兴趣
开通SVIP免广告
  • genmoon
  • 啥也不懂
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
十分感谢dfqshy ,先留邮箱:
genmoon@163.com
程序的具体要求:
小方块55×22,共1210个。
另外有一个textbox1,
点击第一行第一个小方格,txtText1.text在后面增加字符1e2c3350,
点击第一行第二个小方格,txtText1.text在后面增加字符352488ef,
。。。。。。
每个小方格增加的字符不尽相同。(我可以根据要求自己填上,因为每个是不规则的)
---------------------------------------------------------------------
就以上的功能,请dfqshy 帮帮忙。感谢。


  • genmoon
  • 啥也不懂
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我打完一堆字才发现雀巢vb豆浆兄给写了代码,感谢感谢。
我极菜、先研究一下。


  • dfqshy
  • 函数调用
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
窗体上建一个 Picture1(0)
Private Sub Command1_Click()
Dim i As Long, index As Long, row As Long
index = 1210 '控件组总数
row = 22   '每排22个
If index > 1 Then
For i = 1 To index - 1
    Load Picture1(i)
    Me.Caption = "控件个数 = " & i + 1
    If i Mod row = 0 Then
       Picture1(i).Left = Picture1(0).Left
       Picture1(i).Top = Picture1(i - row).Top + Picture1(0).Height
    Else
       If i >= row Then
          Picture1(i).Top = Picture1(i - row).Top + Picture1(0).Height
       Else
          Picture1(i).Top = Picture1(0).Top
       End If
       Picture1(i).Left = Picture1(i - 1).Left + Picture1(0).Width
   End If
   Picture1(i).Visible = True
Next
End If
End Sub


  • dfqshy
  • 函数调用
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
上面这个代码很好用,但效率不高,建议在PictureBox控件中获取鼠标 X Y的方法去实现你要的功能。


  • genmoon
  • 啥也不懂
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
感谢dfqshy 兄写的代码。。
邮件也收到了。。




  • qjblrve
  • 网络通信
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
类


2026-02-11 12:03:35
广告
不感兴趣
开通SVIP免广告
  • 雀巢vb豆浆
  • 函数调用
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
什么都不必做 新建一个标准EXE工程 然后把下面的代码COPY进去,RUN!
Option Explicit
Dim Table(21, 54) As Integer
Dim TabStr(21, 54) As String
Dim WithEvents Pic1 As VB.PictureBox
Dim WithEvents Text1 As VBControlExtender
Private Sub Form_Load()
      Me.Width = Me.Width + 1220 * Screen.TwipsPerPixelX - Me.ScaleWidth
      Me.Height = Me.Height + 440 * Screen.TwipsPerPixelY - Me.ScaleHeight
      Me.ScaleMode = vbPixels: Me.Show
      Licenses.Add "Forms.TextBox.1", "Forms.TextBox.1"
      Set Text1 = Me.Controls.Add("Forms.TextBox.1", "TextBox1", Me)
      Text1.object.MultiLine = True: Text1.object.ScrollBars = 2
      Text1.Move 1100, 0, 120, 440: Text1.Visible = True
      Set Pic1 = Me.Controls.Add("VB.PICTUREBOX", "Pic1", Me)
      Pic1.BorderStyle = vbBSNone: Pic1.ScaleMode = vbPixels: Pic1.AutoRedraw = True
      Pic1.Width = 1100: Pic1.Height = 440: Pic1.Move 0, 0: Pic1.Visible = True
      Call CreatTable: Call CreatTabStr
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
     Set Pic1 = Nothing: Set Text1 = Nothing: End
End Sub
Private Sub Pic1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim ix As Integer, iy As Integer
      If Button = vbLeftButton Then
         ix = X \ 20: iy = Y \ 20
         Table(iy, ix) = (Table(iy, ix) + 1) Mod 2
         If Table(iy, ix) = 1 Then
            Text1.object.Text = Text1.object.Text + TabStr(iy, ix) + vbCrLf
            Pic1.Line (ix * 20 + 1, iy * 20 + 1)-(ix * 20 + 18, iy * 20 + 18), vbBlue, BF
         Else
            Text1.object.Text = Replace(Text1.object.Text, TabStr(iy, ix) + vbCrLf, vbNullString)
            Pic1.Line (ix * 20 + 1, iy * 20 + 1)-(ix * 20 + 18, iy * 20 + 18), &H80000016, BF
         End If
      End If
End Sub
Public Sub CreatTable()
   Dim i As Integer, j As Integer
     Erase Table: Pic1.BackColor = &H80000016
     For i = 0 To 21
        Pic1.Line (0, i * 20)-(1100, i * 20), &H80000014
        Pic1.Line (0, i * 20 + 19)-(1100, i * 20 + 19), &H80000015
     Next
     For i = 0 To 54
        Pic1.Line (i * 20, 0)-(i * 20, 440), &H80000014
        Pic1.Line (i * 20 + 19, 0)-(i * 20 + 19, 440), &H80000015
     Next
     Pic1.Picture = Pic1.Image: Pic1.Cls: Text1.object.Text = ""
End Sub
Public Sub CreatTabStr()
   Dim i As Integer, j As Integer
     For i = 0 To 54
        For j = 0 To 21
           TabStr(j, i) = CStr(j) + ", " + CStr(i)
        Next
     Next
End Sub



登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 3 4 下一页 尾页
  • 46回复贴,共4页
  • ,跳到 页  
<<返回vb吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示