用VB实现类电子表格的数据录入

   ----在编程中经常会遇到应用程序中要输入大量数据的问题,如果能在该程序中实现象电子表格那样的输入界面,就可以解决这个问题。

  ----VB虽提供了Grid网格控件,但其只具有显示输出功能,要使其能接受输入数据,必须对它加以改造,在计算机报刊中的许多文章都对此进行了探讨,但所用方法都不能令人满意,笔者经过摸索,找出以下办法,供有兴趣者参考。

  ----首先在VB5.0环境下Form1中放上如图1所示的各控件:Text1;Grid1;

  Command1;Command2;Vscroll1;Hscroll1。

  图1Form1及其控件

  ----双击Form1打开Code窗口,编制程序代码。

  Dimin putcolnum,in putrownumAsInteger

  PrivateSubCommand2_Click()

  End

  EndSub

  PrivateSubForm_Activate()

  Text1.SetFocus'文本框获得焦点

  EndSub

  PrivateSubForm_Load()

  Grid1.ColWidth(0)=540

  Grid1.RowHeight(0)=216'单元格的宽和高

  in putcolnum=13

  in putrownum=15'表中显示的列、行数

  Grid1.Cols=20

  Grid1.Rows=20'表中总的列、行数

  HScroll1.Height=300

  VScroll1.Width=300'水平和垂直滚动条的高、宽度

  Grid1.Height=(in putrownum 1)'

  (Grid1.RowHeight(0) Grid1.GridLineWidth*12)

  12 HScroll1.Height

  '800×600象素时为12;640×480为15

  Grid1.Width=(in putcolnum 1)*

  (Grid1.ColWidth(0) Grid1.GridLineWidth*12)

  12 VScroll1.Width

  '表的高、宽度

  HScroll1.Width=Grid1.Width-VScroll1.Width

  VScroll1.Height=Grid1.Height-HScroll1.Height

  '水平和垂直滚动条的宽、高度

  HScroll1.Left=Grid1.Left

  HScroll1.Top=Grid1.Top Grid1.Height-HScroll1.Height

  '水平滚动条的位置

  VScroll1.Left=Grid1.Left Grid1.Width-VScroll1.Width

  VScroll1.Top=Grid1.Top

  '垂直滚动条的位置

  HScroll1.Min=1

  HScroll1.Max=Grid1.Cols-in putcolnum

  VScroll1.Min=1

  VScroll1.Max=Grid1.Rows-in putrownum

  '水平和垂直滚动条的范围

  Text1.Width=Grid1.ColWidth(0)

  Text1.Height=Grid1.RowHeight(0)

  '文本框的宽、高度

  Text1.Left=Grid1.Left Grid1.ColWidth(0)

  Grid1.GridLineWidth*12

  Text1.Top=Grid1.Top Grid1.RowHeight(0)

  Grid1.GridLineWidth*12

  '文本框的位置

  '初始化赋值

  Text1.Visible=True

  ForI=1ToGrid1.Cols-1

  Grid1.Col=I

  Grid1.Row=0

  Grid1.Text=Str(I)

  Grid1.Col=0

  Grid1.Row=I

  Grid1.Text=Str(I)

  NextI

  Grid1.Col=1

  Grid1.Row=1'网格的列、行初始位置

  Grid1.SelStartCol=1

  Grid1.SelStartRow=1'网格中单元格的列、行初始位置

  Grid1.LeftCol=1

  Grid1.TopRow=1'网格中左上角的列、行初始位置

  EndSub

  PrivateSubGrid1_MouseDown(ButtonAsInteger,

  ShiftAsInteger,XAsSingle,YAsSingle)

  Grid1.Col=Grid1.SelStartCol

  Grid1.Row=Grid1.SelStartRow

  Text1.Text=Grid1.Text

  colnum=Grid1.Col-Grid1.LeftCol 1

  rownum=Grid1.Row-Grid1.TopRow 1

  Text1.Left=Grid1.Left (Grid1.ColWidth(0)

  Grid1.GridLineWidth*12)*colnum

  Text1.Top=Grid1.Top (Grid1.RowHeight(0)

  Grid1.GridLineWidth*12)*rownum

  EndSub

  PrivateSubGrid1_MouseUp(ButtonAsInteger,

  ShiftAsInteger,XAsSingle,YAsSingle)

  Text1.SetFocus

  EndSub

  PrivateSubHScroll1_Change()

  startcol=Grid1.LeftCol

  Grid1.LeftCol=HScroll1.Value

  Grid1.SelStartCol=Grid1.SelStartCol

  Grid1.LeftCol-startcol

  Grid1.Col=Grid1.SelStartCol

  Text1.Text=Grid1.Text

  EndSub

  PrivateSubText1_Change()

  Grid1.Text=Text1.Text

  EndSub

  PrivateSubText1_KeyDown(KeyCode

  AsInteger,ShiftAsInteger)

  SelectCaseKeyCode

  Case38'光标向上

  Grid1.Text=Text1.Text

  IfGrid1.SelStartRow<2Then

  IfGrid1.TopRow>1Then

  VScroll1.Value=VScroll1.Value-1

  Else

  Grid1.SelStartRow=1

  EndIf

  Else

  IfGrid1.TopRow=Grid1.SelStartRowThen

  VScroll1.Value=VScroll1.Value-1

  Else

  Grid1.SelStartRow=Grid1.SelStartRow-1

  EndIf

  EndIf

  Grid1.Col=Grid1.SelStartCol

  Grid1.Row=Grid1.SelStartRow

  colnum=Grid1.Col-Grid1.LeftCol 1

  rownum=Grid1.Row-Grid1.TopRow 1

  Text1.Text=Grid1.Text

  Text1.Left=Grid1.Left (Grid1.ColWidth(0)

  Grid1.GridLineWidth*12)*colnum

  Text1.Top=Grid1.Top (Grid1.RowHeight(0)

  Grid1.GridLineWidth*12)*rownum

  ExitSub

  Case40'光标向下

  Grid1.Text=Text1.Text

  IfGrid1.SelStartRow>in putrownum-1Then

  IfGrid1.TopRow

  VScroll1.Value=VScroll1.Value 1

  Else

  IfVScroll1.Value=VScroll1.MaxAnd

  Grid1.SelStartRow

  Grid1.SelStartRow=Grid1.SelStartRow 1

  Else

  Grid1.SelStartRow=Grid1.Rows-1

  EndIf

  EndIf

  Else

  IfGrid1.TopRow=Grid1.SelStartRow-in putrownumThen

  VScroll1.Value=VScroll1.Value 1

  Else

  Grid1.SelStartRow=Grid1.SelStartRow 1

  EndIf

  EndIf

  Grid1.Col=Grid1.SelStartCol

  Grid1.Row=Grid1.SelStartRow

  colnum=Grid1.Col-Grid1.LeftCol 1

  rownum=Grid1.Row-Grid1.TopRow 1

  Text1.Text=Grid1.Text

  Text1.Left=Grid1.Left (Grid1.ColWidth(0)

  Grid1.GridLineWidth*12)*colnum

  Text1.Top=Grid1.Top (Grid1.RowHeight(0)

  Grid1.GridLineWidth*12)*rownum

  ExitSub->

时间: 2024-09-17 01:35:24

用VB实现类电子表格的数据录入的相关文章

vb.net类的封装,继承,多态,抽象之一

封装|继承   封装就是把各种方法和变量合并到一个类,用这个类代表某个对象为完成一定的任务所能保存的范围以及它能执行的操作. 继承就是根据现有类的方法和成员变量生成新的类的功能 多态就是对象随着程序执行而使其形式发生改变的能力. 抽象就是在暂时忽略对象的具体细节的功能. 在类中,构造器的方法使简化类的成员变量的初始化处理,当用继承从一个类构造另一个类的时候,会有两套构造器发生作用,即基类构造器和派生类构造器 例如: Public Class Form1    Inherits System.Wi

VB.net类和模块的概念提问

问题描述 请问规范的程序什么情况需要类和模块,类和模块里面包含了些什么代码?新手,希望达人能告诉我. 解决方案 解决方案二:兄弟看资料吧,一搜一大堆.如果时间精力不够,可以先不用,从基本的代码写起,等熟悉了,再学吧.解决方案三:使用模块一般仅仅是出于代码重用的目的,比如说有一个验证日期格式的函数,可以写到模块里直接调用,我觉得模块类似于静态类使用类的情况包括:有继承.重载的需要:需要触发事件等考虑到扩展性,一般都使用类解决方案四:模块和类的概念是编程的基础知识,这些概念是不份语言的.不同的语言,

vb.net 类的属性的设置和获取问题

怎么样定义一个自定义类的属性呢?怎么样来设置和获取它的属性呢?下面是一个类的例子: Public Class TestClass Test          Private _classid As String    ''' <summary>    ''' 设置和获取分类ID    ''' </summary>    Public Property classid()Property classid() As Integer        Get            Retur

称骨算命的VB.NET类

Public Class ClassChG Private vWeight As Integer = 0 Private vResultWord As String 'vDate格式为:1978-8-10 'vTime值为: '子:子(23:00-1:00) '丑:丑(1:00-3:00) '寅:寅(3:00-5:00) '卯:卯(5:00-7:00) '辰:辰(7:00-9:00) '巳:巳(9:00-11:00) '午:午(11:00-13:00) '未:未(13:00-15:00) '申:

VB多类图片数据库存取技巧

  一.实现思路: 用户添加或修改图片时控制使用COMMONDIALOG的SHOWOPEN对话框,然后记录通用对话框的FILENAME到变量A,再使用APP.PATH找到到特定目录下的该图片文件,改变窗体上放置图片控件的属性即可显示.数据库中只使用一文本型字段记录下变量A,图片文件保存在程序目录下,此法可同时使用GIF.JPG和BMP等等图像文件. 二.实现方法: 1.在窗体上建立IMAGE控件,名为IMAGE1. 2.用DATA控件得到数据源表. 3.建立"更改图片"按钮COMMAN

从VB6到VB.NET的变化综述 (转)

随着Microsoft .NET平台的发布,Visual Basic开始成为一种完全面向对象的语言,简称为VB.NET.虽然有了一些根本性的变化,开发者从VB6到VB.NET的学习热情依然相当高,即使对于有经验的编程人员也是如此.本文中,我将列出Visual Basic语言中的变化,并在适当的地方举例说明.这里所列出的可能不完全,但是已经包括了大部分的功能.如果你是一个想要转到VB.NET上去的 VB程序员,这篇文章就一定要读一读. ASP.NET Beta 1版本可以从http://www.a

从VB6到VB.NET的变化综述(转)

从VB6到VB.NET的变化综述 当创建ASP.NET页面时,需要使用一种与兼容 .NET的编程语言,如C#.VB.NET或JScript.NET.但是从VB6/VBScript 到VB.NET有许多重要的变化,这正是本文所涉及的内容. 另外,如果想获得更多有关的信息,我强烈推荐你阅读Microsoft的文章:为Visual Basic 6.0应用程序升级到Visual Basic.NET做好准备. 引言随着Microsoft .NET平台的发布,Visual Basic开始成为一种完全面向对象

全面剖析VB.NET(4)

 四.对象的广泛应用    代码重用简化了开发过程,而可视化继承之类的功能又使得代码重用更加方便.然而,代码重用并不局限于此.借助作为VB.NET基础的CLR(Common Language Runtime,公共语言运行时环境),我们可以在VB.NET中继承其他VS.NET语言编写的类.例如我们可以编写一个C#类,然后在VB.NET类中继承该C#类.       VB.NET的面向对象功能已经向各个方向扩展,甚至深入到了语言本身--在VB.NET中,一切都是对象.它意味着和以前的VB版本相比,我

NET高级开发一:用VB.net+ADO.NET+SQLServer开发三层架构的运用程序

ado|server|sqlserver|程序|高级|架构      NET高级开发一:用VB.net+ADO.Net+SQL Server开发三层架构的运用程序 一:什么是三层体系结构:    三层体系结构,顾名思义,我们将运用程序从整体上分为三个独立而又彼此相关联的层次,这三层分别是:用户层.业务逻辑层.数据层 .用户层就是运用程序与用户的操作接口,比如说:网页.在用户层,常用到的技术如:HTML.CSS.JavaScript.ASP/asp.net等.业务逻辑层 就是将一些业务处理的逻辑与