标题:摇号程序(修改版)
只看楼主
godkong
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2023-3-23
结帖率:33.33%
已结贴  问题点数:10 回复次数:4 
摇号程序(修改版)
求VB程序,实现以下功能:
1、把一组要摇号的姓名放在一个1.TXT文档中,
2、读取1.TXT文件的姓名,点击按钮,随机排序,并加序号
3、根据TEXT的宽度和TEXT组件的字号大小,大概算出每行可以显示几个名字,然后设定每行显示这么多名字,然后全部1.TXT文件里的名字全部显示出来!
请问大神,这样的话程序怎么写?

[此贴子已经被作者于2023-4-10 11:09编辑过]

搜索更多相关主题的帖子: 修改 显示 TXT 名字 TEXT 
2023-04-10 11:07
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:33
帖 子:1883
专家分:2904
注 册:2009-12-22
得分:4 
此问题丢给ChatGpt 3.5来回答,如下:

摇号程序(修改版)
求VB程序,实现以下功能:
1、把一组要摇号的姓名放在一个1.TXT文档中,
2、读取1.TXT文件的姓名,点击按钮,随机排序,并加序号
3、根据TEXT的宽度和TEXT组件的字号大小,大概算出每行可以显示几个名字,然后设定每行显示这么多名字,然后全部1.TXT文件里的名字全部显示出来!
请问大神,这样的话程序怎么写?

以下是一个简单的VB程序示例,可以完成你所需要的功能:


Private Sub btnLuckyDraw_Click()
    '读取1.txt文件中的姓名到数组中
    Dim nameArr() As String
    Dim fso As New Scripting.FileSystemObject
    Dim fileObj As Scripting.TextStream
   
    Set fileObj = fso.OpenTextFile("1.txt", ForReading)
    nameArr = Split(fileObj.ReadAll(), vbCrLf)
    fileObj.Close
   
    '随机排序并加序号
    Randomize
    Dim i As Long
    Dim temp As String
   
    For i = 0 To UBound(nameArr)
        temp = nameArr(i)
        j = Int(Rnd() * UBound(nameArr))
        nameArr(i) = nameArr(j)
        nameArr(j) = temp
        nameArr(i) = i + 1 & ". " & nameArr(i)
    Next i
   
    '计算每行可以显示的名字数量
    Dim textWidth As Single
    textWidth = TextWidth(nameArr(0))
    Dim maxCols As Long
    maxCols = Int(Me.Width / textWidth)
   
    '在TEXT组件中显示所有名字
    txtNames.Text = ""
    Dim row As Long
    row = 1
   
    For i = 0 To UBound(nameArr)
        If i Mod maxCols = 0 Then
            txtNames.Text = txtNames.Text & vbCrLf
            row = row + 1
        End If
        txtNames.Text = txtNames.Text & nameArr(i) & " "
    Next i
   
End Sub

注:上述程序依赖于"Microsoft Scripting Runtime"的库,请确保你的电脑中已经安装了该库。

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2023-04-10 17:55
godkong
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2023-3-23
得分:0 
回复 2楼 yuma
谢谢,导出时候有这个提示,是否意味着没有你说的RUNTIME库?
2023-04-12 10:58
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:4 
方法1
工程,引用
按2楼最后的提示去找名字进行引用。
如果电脑里不存在该对象,会找不到,不过你这个工程里是不会出现这种情况。

方法2
使用CreateObject方法来创建
dim fso as object    '申明对象
Set fso=CreateObject(″Scripting.FileSystemObject″)   '创建对像,可以不引用,但需要电脑存在对象,否则报错。

自己写程序,建议 方法1 ,好处多多。

授人于鱼,不如授人于渔
早已停用QQ了
2023-04-12 13:01
东海ECS
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:Python
等 级:版主
威 望:19
帖 子:376
专家分:1454
注 册:2023-1-24
得分:4 
以下是实现您所需功能的VB程序。请注意,代码中可能需要根据具体情况进行调整和修改。

程序代码:
Private Sub btnStart_Click()
    ' 读取1.TXT文件的姓名
    Dim strFileName As String
    Dim arrNames() As String
    Dim i As Integer
    
    strFileName = "1.TXT" ' 1.TXT文件路径
    Open strFileName For Input As #1
    Do While Not EOF(1)
        ReDim Preserve arrNames(i)
        Line Input #1, arrNames(i)
        i = i + 1
    Loop
    Close #1
    
    ' 随机排序,并加序号
    Dim j As Integer, k As Integer, temp As String
    For j = LBound(arrNames) To UBound(arrNames)
        k = Int(Rnd() * (UBound(arrNames) - j) + j)
        temp = arrNames(j)
        arrNames(j) = arrNames(k)
        arrNames(k) = temp
        arrNames(j) = j + 1 & "." & arrNames(j) ' 加序号
    Next j
    
    ' 显示随机排序后的姓名
    Dim intWidth As Integer, intFontSize As Integer
    intWidth = TextWidth("姓名") + 20 ' 每个TEXT组件的宽度
    intFontSize = 12 ' TEXT组件的字号大小
    Dim intCols As Integer, intRows As Integer, intIdx As Integer
    intCols = Int(Me.Width / intWidth) ' 每行可以显示的名字个数
    For i = LBound(arrNames) To UBound(arrNames)
        intIdx = i Mod intCols
        If intIdx = 0 Then intRows = intRows + 1
        With Me.Controls.Add("Forms.TextBox.1", "txtName" & i)
            .Top = 40 + intRows * (intFontSize + 5)
            .Left = 20 + intIdx * intWidth
            .Text = arrNames(i)
            .Width = intWidth - 10
            .Height = intFontSize + 5
            .Font.Size = intFontSize
        End With
    Next i
End Sub

您需要创建一个窗体,使用一个名为btnStart的按钮触发程序。在点击按钮时,程序会首先读取1.TXT文件中的姓名,然后进行随机排序,并为每个姓名加上序号。最后,程序根据TEXT的宽度和字号大小计算每行可以显示几个名字,自动布局在窗体上。




会当凌绝顶,一览众山小.
2023-04-15 11:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-511856-1-1.html




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

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