博文
ListView ,MSFlexGrid 直接输出到打印机的函数写法!问题解决人:laviewpbt(2005-11-23 10:17:00)
摘要:ListView ,MSFlexGrid 直接输出到打印机的函数写法!问题解决人:laviewpbt(人一定要靠自己) ,mylzw(芃)
把ListView 里的内容做个参数为ListView 对象,使用VB的Printer 对象打印出来的函数!下面是打印MSFlexGrid 的代码,不知道怎么打印我说的ListView!以下是参考代码:Sub print_grid(Grd As MSFlexGrid, MainTitle As String, SecTitle As String, PageLine As Integer, DjCol As Integer, JeCol As Integer) Dim x0 As Single, y0 As Single Dim x As Single, y As Single Dim fs As String * 10 Dim zje As Currency, yje As Currency Dim HzNum As Integer Dim n As Integer, r As Integer
Dim dx(0 To 20) As Integer Dim Cellf(0 To 20) As Single
Dim str1 As String, str2 As String, str3 As String, str4 As String Dim I As Integer, j As Integer, k As Integer 'Load printer 'printer.Show If Grd.Rows <= 1 Then MsgBox "本表格没有数据,没有必要打印!", 48, "提示" Exit Sub End If x0 = 10 '打印边界 y0 = 20 With Grd '计算栏空 dx(i) .Row = 1 w = .Width Fo......
专为VB制做的多语言软件开发工具,可以轻松完成对可视界面的多语言化,您只需要制做语言包母板后翻译复制(2005-09-30 16:06:00)
摘要:程序将向您的代码中添加以下代码,以便您访问语言包:
API: Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long 由于语言包是使用INI格式保存的,程序添加了该API函数,如果该API已经存在,将不添加.
在窗体的 Load 事件中添加调用界面语言加载子程序的代码.Private Sub Form_Load()Call frmMain.CoderHelper_VBMltLug_InitfrmMain(App.Path + IIf(Len(App.Path) = 3, "", "\") + App.EXEName + ".exe.lag") 'CoderHelper专用代码行请不要删除! '括号内的过程是计算语言包文件的文件路径和文件名称,文件名称是以可执行文件的路径为准,其文件名后加".lag"为扩展名的文件.要翻译该文件,请复制后打开使用文本工具翻译.在后续版本中,将提供部分翻译和转换方面的工具.
添加界面初始化程序.该程序的参数为一个有效的语言包文件的完整路径.Public Sub CoderHelper_VBMltLug_InitfrmMain(lngFileName As String)'MysticBoy 提醒您:由于一些控件的属性可能是只读的或在运行时是不可用的,建议调试以下代码. Me.CmdDown.Caption = ch_GetKeyVal(lngFileName, "frmMain.CmdDown", "Caption", "V") {......}End Sub 由于部分控件的部分属性在运行时是只读或是不可用的,建议在你编译工程之前,请调试该段代码,
该函数将用于访问语言包......
得到VB的控制权(2005-09-30 16:02:00)
摘要:首先,外接,故名思意,当然必须是要和vb一起启动!在新建一外接工程后.新工程中设计器中有 Conncet.Dsr有这一元件,元件中有最为关键的一个事件 Private Sub AddinInstance_OnConnection(ByVal Application As Object, ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As Object, custom() As Variant)这个事件中的 Application 就是VBIDE.要想控制VB,就必须从这里入手.因此在声明区就有了 Public VBInstance As VBIDE.VBE 这行代码,在这个事件中就有了 Set VBInstance = Application .然后,你的外接程序就可以直接控制整个VB.建议不要使用太长的变量名VBInstance,而使用VBI这样的短名称.编程可不是写文章.你能简短就简短.目的是完成功能,而不是让人欣赏你代码的编写艺术. ConnectMode 让会让你写的软件具备标准外接的连接方式.如果不标准,那你的代码虽然简练了很多,但是功能却让人却步.
言归正传, ConnectMode = ext_cm_External 时,那是为向导准备的.新建一个 向导,其元件Wizard中的代码就很明显,简单明了的告诉你,"被向导工具栏用来启动向导"If ConnectMode = ext_cm_External Then'被向导工具栏用来启动向导LoadMeElse[...]End If
当然,现在我们步创建向导,创建向导也步用操心太多,很多工作模板中已经存在了,可是有个问题我很好奇,为什么没有创建向导的向导呢,这似乎是个具有讽刺意味的事情,但是从VB6到VB.Net我似乎没听说过.
下面接着做的就是添加到VB的工具栏或菜单里了.同样工作很简单,很重要的一点,你需要声明一个响应按钮的事件对象 :Public WithEvents evnMyCmdBar As CommandBarEvents CommandBarEvents 只有一个事件,就是 Click .光这样声明了是没有用......
在VB中创建您自己工具条和菜单(2005-09-30 16:01:00)
摘要:创建工具条依然需要使用到VBI,只要和VB打交道,必须有它,同时在上篇文章所阐述的菜单项的制做方法是对你现在即将做的工作有用的.有一点你必须知道,无论是创建按钮,还是创建菜单项,他们之间是没有区别的.只是有一些地方有一点点不同而已.怎样创建工具条呢?非常简单.VBI.CommandBars.Add cbsToolsBarName此方法后面当然有其它可选参数,但是有些东西对于现在我要阐述的问题是无关的.Function Add([Name], [Position], [MenuBar], [Temporary]) As CommandBar[Position] 是位置.是浮动在VB中还是在VB的上边,下边,左边,右边?参数,你待参考 MsoBarPosition.至于 [MenuBar]参数,指定是哪个菜单栏啦,这个就自己去摸索吧.当然,最后一个参数,我也不知道它有什么用,单至少不会影响你当前的工作,而且以后也不会的.
VBI.CommandBars.Add cbsToolsBarName中的cbsToolsBarName当然是我们的工具条名称.你最好用常量方式.每次向它加按钮时,将会节约你写汉字的事件,如果你写英文,当用户在工具栏点右键时出现的菜单里写的工具条名称是英文的.如果你写中文的话,就是中文的.在处理工具条上我不是高手,因为目前为止,我还不能向菜单条添加一个和[文件]菜单这样的菜单,只能添加它的子项.曾经有一次试图添加,但是可能由于不恰当,造成又一次的失败.如果你知道了一定别忘了告诉我!
在添加了一个工具栏后,向工具条里添加按钮是和向[工具]这样的菜单中添加菜单项是一样的.只是结果是添加到你的工具条里了,同时字符串将用于按钮的ToolTipText而已,这里,你必须为每个按钮准备个图标,一般是32*32的.其它大小当然也可以,只是会变形而已.使用剪贴板加载图标,然后使用上篇文章中所说的PasteFace粘贴就可以了.无论何中格式,均可以添加到按钮上.只要是VB支持的图形.当然,VB支持GIF但是粘贴上的绝对不是动画.这个方法只是封装了BitBlt,把剪贴板中的图象放到一个 DC对象,然后BitBlt到按钮上而已.即使你加载一个GIF,按钮上只能看到的是GIF的第一帧,这何用[图画]程序打开一个GIF是一个道理.我把一......
VB插件-创建一个内部的窗体(2005-09-30 15:59:00)
摘要:你也许使用过我的 CoderHelper 后,会发现,VB中多了好多窗体.怎么实现的呢.呵呵上,告诉你个小秘密,我用一个微软提供的函数,这个函数就时 VBI.Windows.CreateToolWindow,它时Windows对象的方法.创建当然建议也时在 OnConnection 里.Dim aitmp As AddIn'定义一个AddinSet VBI = ApplicationSet MVBI = VBISet aitmp = MVBI.Addins("CoderHelper.Connect")然后在模块中PUblic winCmdLine as Window添加一个用户文档.ContinuousScroll 属性为False .命名为 ucCmdLine 在模块中 Public docCmdLine as ucCmdLine这样时为了方便你在整个工程内使用他们.你也可以放在Connect元件中.
最后,也时最为关键的 Set winCmdLine = VBI.Windows.CreateToolWindow(aitmp, App.ProductName + ".docCmdLine", LoadResString(10), "c_m_d_l_i_n_e", docCmdLine)aitmp参数很明显它是你Addin的实例,App.ProductName + ".docCmdLine"是ProgID.LoadResString(10)从资源中加载了标题,当然你也可以直接写为字符串.
"c_m_d_l_i_n_e"是很麻烦的东西.它是GUID.GUID在MSDN和其它一些资料中说是在某目录下有这么个工具,但是似乎在VS.Net的菜单里才有.其它地方我是没有找到.在这里我是偷懒了.管它三七二十一.就用"c_m_d_l_i_n_e"代替吧,其中的"_"的也可以部要,但是MSDN带的一个示例中是这么写的.我尝试着去掉"_"但是,和这样写没什么区别.但是有一点,如果你不加"_",大家看到你代码的时候不知道那是什么参数,以为是字符串,而事实上是GUID.所以加上"_"能让你明白,那不是一般字符串.不管GUID是要干吗的.至少,现在我们是用不着的.那是它在注册表中的事情.除非你要操作它在注册表中......
