社区
VB基础类
帖子详情
问题: 如何用Imagelist的Add方法保存新加入的图片
xingjiayu
2006-01-09 11:06:29
我用Imagelist的Add方法添加图片,在未退出运行时可正常查看到图片,但当退出运行后重新运行,刚才加入的图片又丢失了,无法保存新加入的图片,敬请各位高手来相告,我会万分感谢!
...全文
110
回复
打赏
收藏
问题: 如何用Imagelist的Add方法保存新加入的图片
我用Imagelist的Add方法添加图片,在未退出运行时可正常查看到图片,但当退出运行后重新运行,刚才加入的图片又丢失了,无法保存新加入的图片,敬请各位高手来相告,我会万分感谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
vfp6.0系统免费下载
vf6.0,要考二级没系统的下哈 Microsoft Visual FoxPro 6.0 for Windows 的常见
问题
这些是有关 Microsoft Visual FoxPro 最常见的
问题
。在您求助 Microsoft 产品支持服务之前,请先查阅这张列表。 若想打印这些附注,请从“文件”菜单中选择“打印”命令。此文档分为以下四部分: --------------------------------------------------------------------- 部分 1. 技术支持与市场 部分 2. Visual FoxPro 6.0
新
增功能 部分 3. 从其他版本的 FoxPro 和 Visual FoxPro 中移植 部分 4. Visual FoxPro 常见
问题
--------------------------------------------------------------------- 部分 1. 技术支持与市场
问题
1-1: 从何处可以获得产品的更
新
版本? 答案: 在 Visual FoxPro 的 Web 站点上即可获得产品的更
新
信息,其中包括有关 Service Pack 和更
新
的示例、向导及其他代码的信息,该站点的网址为: www.microsoft.com/vfoxpro 请定期查看该网站,以便下载产品的最
新
版本。
问题
1-2: 从何处可以得到有关 Visual FoxPro 的详细资料? 答案: 通过 Microsoft Visual FoxPro Web 站点是随时获得各种最
新
产品发布信息的最佳途径。在此站点上不仅有
新
的产品公告,而且还提供了产品的更
新
信息、技术文章、白皮书、专业开发人员设计的优秀示例、会议公告、以及与其他许多 FoxPro web 站点的各种链接。
问题
1-3: 如何获得技术支持,以及如何报告软件错误? 答案: Microsoft Visual FoxPro Web 站点已经链接到了多种联机支持选项,其中包括覆盖面广阔的有关所有产品 Microsoft Knowledge Base(Microsoft 知识库)。您还可以阅读一份有关常见
问题
的清单。除联机支持之外,还可以直接通过电话获得技术支持。“帮助”菜单中的选项可列出技术支持的电话号码。这些电话号码也可用于报告产品中的错误。
问题
1-4. 什么是 Knowledge Base?如何使用它? 答案: Knowledge Base 是内容广泛的论文集,覆盖了如何使用产品的各种特性、已知的软件错误及其解决方案或回避的
方法
、以及其他有助于使用各种 Microsoft 产品的有用信息。通过以下站点可访问整个 Knowledge Base: support.microsoft.com
问题
1-5: 是否会有 Visual FoxPro 6.0a? 答案: Microsoft 公司一向承诺为用户提供高质量的产品。如果确实需要,我们将提供 Visual FoxPro 6.0 的错误修订版。但是,修订版不会使用 6.0a 版的形式。Visual FoxPro 6.0 中任何错误的修正都将包含在 Visual Studio Service Pack 中。同时还会在 Visual FoxPro 的 www.microsoft.com/vfoxpro 或 Visual Studio 的www.microsoft.com/vstudio 的 Web 站点上发布修订公告。
问题
1-6: Microsoft 公司为应用程序的开发提供了一些优秀的解决方案。怎样才能知道应该向客户推荐和使用哪种产品? 答案: 在选择适用某项任务的产品时,需要考虑多方面的因素。Microsoft Visual FoxPro web 站点上有一份优秀的策略背景论文,它比较了 Visual FoxPro、Visual Basic、SQL Server 和 Access 等 Microsoft 产品之间的不同。
问题
1-7: 哪里可以找到 Visual FoxPro 的使用示例? 答案: Visual FoxPro 6.0 产品中带有丰富的示例,其中有一些是针对 6.0 版特有功能的
新
示例。与 Visual FoxPro 以前的版本不同,这些示例将与所有 Visual Studio 示例安装在一起。您必须运行 MSDN Library 的“自定义”安装来安装这些示例。在 Visual FoxPro 中可使用
新
的 HOME(2) 函数方便地找到已安装示例的位置。 除了产品中所自带的示例外,Microsoft Visual FoxPro web 站点还将经常提供
新
的示例。
一个好用的数据库类
一个好用的ODBC数据库类CMYODBC --- VC数据库开发之一
一、引言
感觉MFC的CRecordset类不是很好用,因为我们要想使用的话必须为每个查询从CRecordset类派生出一个
新
类,或者进行动态数据交换。在VC知识库第六期上面有一篇介绍"单独使用CRecordset"文章,可是上面的CRecordset打开方式只能使用CRecordset::forwardOnly,游标只能向前滚动,而且用这种方式,你根本无法从打开的记录集中获得本次查询得到了有多少列。有一次在应用的时候,我只好通过捕获CRecordset::GetFieldValue()的异常来得到查询的结果有多少列。为了使用的方便,我自己写了一个数据库类CMYODBC,它是用ODBC API写的,它支持各种sql语句,支持事务处理。它最好的地方在于,对于查询的记录集实现了动态绑定,这是通过类CODBCSet来实现的。要说明的是,这两个类可以说比较简单,两个类的代码量很少,所以建议感兴趣的朋友看一下它的代码,下图是本代码运行效果图:
二、原理
其实无论是使用ODBC API还是使用ORACLE的OCI(对于ORACLE的OCI感兴趣的朋友,欢迎一起探讨,OCI的功能很强大,支持动态绑定,支持pl/sql,它的类的封装和CMYODBC很相似,用它来代替ODBC编程,可以解决ODBC的效率
问题
)其过程都很相似,一般分为以下几个过程:
1 初始化工作环境
2 连接数据源
3 操作数据源
4 检索结果集
5 更
新
结果集
6 事务处理
7 断开连接,释放各种句柄
大家都知道在使用CDatabase时候,如果要执行的是select语句的话,那么要通过CRecordset来检索结果集,而CRecordset类要我们先选择表等来先进行绑定,这样我们使用的时候很不方便,其实我们根本不需要这样做,而且我们也不需要知道这次执行的是关于那个数据库那张表的sql语句,因为在执行完SQLExecDirect()后,可以通过调用SQLNumResultCols() 、SQLColAttribute()等函数来获得执行的结果的很多属性,如这次执行的结果集是多少列、每列的字段名、列的类型等,然后根据类型可以动态分配内存,然后在用这些内存去绑定,最后能过SQLFetch()来得到结果集。在CMYODBC这个类里是通过CODBCSet类应用上面的原理来实现自动绑定的。
下面介绍一下类CMYODBC的使用
方法
:
1 通过调用ConnectDB(const char *cpServerName, const char *cpUserName, const char *cpPassword)函数来联接数据库。其中的参数意义如下:
cpServerName-----ODBC数据源名
cpUserName-------用户名
cpPassword-----口令
2 通过调用ExeSqlDirect(const char *cpSqlStmt)函数可以执行一些操作数据源的语句,如修改、删除语句等。其中的参数意义如下: cpSqlStmt------你要执行的sql语句,如delete from emp where deptno < 20
3 如果要执行事务的话,调用ExecTrans(CString
List
&strSql
List
)函数,其中的参数 strSql
List
表示你要执行的一系列sql语句。
4 如果要执行select语句的话,通过下面的步骤:
I 声明一个CODBCSet 对象,如 CODBCSet rSet;
II然后调用函数PrepareSql(const char *cpSql, CODBCSet &rset),其中的参数的意义如下:
cpSql----代表要执行的select语句
rset-----表示一个CODBCSet的引用,你要把上面声明的对象传递进去。
III调用FetchData()函数来取得结果集。
5 通过调用函数DisConnect()断开和数据源的连接。
三、实例练习
下面就通过上面的例子一起来看一下这个类到底怎么样,为了方便,我建了一个简单的access数据库test.mdb,在这个数据库中也只有一张表emp,它有三个字段。在下面的工程的InitInstance ()中,通过代码为它自动建立了一个叫做"daliu"的ODBC数据源。
步骤一:
新
建一个基于对话框的工程,命名为demo1,打开stdafx.h文件,
加入
#include 从例子中把MyODBC.h,MyODBC.cpp, ODBCSet.h, ODBCSet.cpp复制到这个工程的目录下,并且
加入
到工程中,
方法
是菜单project->
add
to project->files,选择这四个文件就可以了。复制test.mdb文件,把它
加入
到这个工程的debug目录下。也可以是其它的目录,只要和你的执行程序在同一个目录就可以了。
步骤二:
参照上面的对话框,在上面
加入
按钮和一个C
list
Ctrl控件,在classwizard上面关联控件的变量C
list
Ctrl关联m_
list
控件,为三个EDIT分别关联CString类型的m_strID,m_strName,m_strJob.
步骤三:
在CDemo1App::InitInstance()的最上面,
加入
下面的代码,实现自动ODBC数据源的增加。
char path[MAX_PATH] = {''\0''};
GetModuleFileName(NULL,path,MAX_PATH);//得到执行文件名
m_strExePath.Format("%s", path);
int iPosition;
iPosition = m_strExePath.ReverseFind(''\\'');
m_strExePath = m_strExePath.Left(iPosition + 1);
CString strAccessPath = m_strExePath + "test.mdb";//得到这个数据库文件的路径
int iLen = strAccessPath.GetLength();
char cpConfig[MAX_PATH];
//由于在这个联结串中有靠\0来分开数据源每个配置信息项的,所以只好用下面的笨
方法
了。
strcpy(cpConfig, "DSN=daliu\0");
strcpy(cpConfig + 10, "DBQ=");
strcpy(cpConfig + 14, strAccessPath);
strcpy(cpConfig + 14 + iLen, "\0");
strcpy(cpConfig + 15 + iLen, "DEFAULTDIR=");
strcpy(cpConfig + 15 + iLen + 11, m_strExePath);
strcpy(cpConfig + 25 + iLen + m_strExePath.GetLength(), "\0\0");
if(!SQLConfigDataSource(NULL,ODBC_
ADD
_SYS_DSN,
"Microsoft Access Driver (*.mdb)\0",cpConfig))//设置odbc数据源
步骤四:
设置C
list
ctrl控件的风格,为他
加入
图象资源。 首先要在CDemo1Dlg中
加入
#include"ODBCSet.h"#include"MyODBC.h",然后在CDemo1Dlg中添加成员变量C
image
List
Image
List
;添加成员函数BOOL ShowData() 在CDemo1Dlg::OnInitDialog()中
加入
下面的代码:
Image
List
.Create(16,16,ILC_COLOR8,0,5);
Image
List
.
Add
(AfxGetApp()->LoadIcon(IDI_ICON1));
DWORD dwStyle=GetWindowLong(m_
list
.GetSafeHwnd(),GWL_STYLE);
dwStyle |= LVS_REPORT;
SetWindowLongA(m_
list
.GetSafeHwnd(),GWL_STYLE,dwStyle);
m_
list
.SetExtendedStyle(LVS_EX_HEADERDRAGDROP|LVS_EX_FULLROWSELECT|LVS_EX_TRACKSELECT);
m_
list
.Set
Image
List
(&
Image
List
, LVSIL_SMALL);
ShowData()//这个函数是用来向列表框中插入数据的。
下面我们来分析一下ShowData()函数,它是使用CMYODBC的关键。 BOOL CDemo1Dlg::ShowData()
{
int i = 0, iCount;
m_
list
.DeleteAllItems();//首先清空
list
view
iCount = m_
list
.GetHeaderCtrl()->GetItemCount();
for(i = 0; i < iCount; i++)
{
m_
list
.DeleteColumn(0);
}
for(i = 0; i < iCount; i++)
{
m_
list
.GetHeaderCtrl()->DeleteItem(0);
}
/*上面的代码用于清空C
list
Ctrl控件中项,上面的两个循环并不能合成一个,你可以试一下*/
CString strSql;
strSql = "select * from emp";//sql查询语句
CMyODBC db; //声明CMyODBC类的实例
CODBCSet set;//声明CODBCSet类的实例
/*联接数据库,由于access数据库没有设定用户和口//令,所以它们两个就用空的字符串代替*/
db.ConnectDB("daliu","", "");
/*准备sql语句,你可以跟踪一下,在这个函数中完成动态的绑定,得到共有几列,每列的名称等*/
db.PrepareSql(strSql, set);
for(i = 0; i < set.GetCols(); i++)/*set.GetCols()得到本次查询得到了几列。*/
{
m_
list
.InsertColumn(i, set.m_coldatafmt[i].name,LVCFMT_CENTER,80);
}
/*上面的循环用于插入列, m_coldatafmt是一个COL_DATAFMT_ODBC的结构,
在我们调用db.PrepareSql()后,它就含有了每个列的名称,字段数据类型,字段数据长度信息。*/
/*下面的循环用于向列表框中插入数据, set.m_coldata是一个COL_DATA_ODBC的结构,
当含有当前行的数据值,数据值的长度信息,这样就实现了从记录集中取数据的功能。*/
int iRow = 0;
while(db.FetchData())/*每次取回一条记录。*/
{
for(i = 0; i < set.GetCols(); i++)
{
if(i == 0)
{
m_
list
.InsertItem(iRow, set.m_coldata[0].value);
}
else
{
m_
list
.SetItemText(iRow, i, set.m_coldata[i].value);
}
}
iRow++;
}
set.Empty();/*清空记录集*/
db.DisConnect();/*断开连接*/
return TRUE;
}
下面我们再来看一个如何插入一条记录: void CDemo1Dlg::OnBtn
add
()
{
UpdateData(TRUE);
CString strSql;
strSql.Format("insert into emp values(%d,''%s'',''%s'')", atoi(m_strID), m_strName, m_strJob);
CMyODBC db;
db.ConnectDB("daliu","", "");//连接数据库
db.ExeSqlDirect(strSql);//执行sql语句
db.DisConnect();//断开连接
this->ShowData();//刷
新
数据
}
响应其它的按钮的函数就不一一写了,和上面的都差不多,希望通过它能给我们用VC的开发数据库工程带来一些方便。
四、总结
ODBC有很多用处,例如我们可以把很多信息按照一定的格式
保存
在文本中(因为在商业上用别人的数据库都是要买的),然后通过ODBC把这些文本文件映射成表,这些文件的目录就成为一个数据库,这些我们就可以很方便的对这些文件的内容通过sql来操作查询,这样开发的效率会高一些,而且是在本地,速度完全可以满足。
C# for CSDN 乱七八糟的看不懂
没法下载,到这里折腾一把试试。 本文由abc2253130贡献 doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 C#(WINFORM)学习 一、 C#基础 基础 类型和变量 类型和变量 类型 C# 支持两种类型:“值类型”和“引用类型”。值类型包括简单类型(如 char、int 和 float 等)、枚举类型和结构类型。引用类型包括类 (Class)类 型、接口类型、委托类型和数组类型。 变量的类型声明 变量的类型声明 每个变量必须预先声明其类型。如 int a; int b = 100; float j = 4.5; string s1; 用 object 可以表示所有的类型。 预定义类型 下表列出了预定义类型,并说明如何使用。 类型 object 说明 所有其他类型的最终 基类型 字符串类型; 字符串是 Unicode 字符序列 8 位有符号整型 16 位有符号整型 32 位有符号整型 64 位有符号整型 示例 object o = null; 范围 string sbyte short int long string s = "hello"; sbyte val = 12; short val = 12; int val = 12; long val1 = 12; -128 到 127 -32,768 到 32,767 -2,147,483,648 2,147,483,647 -9,223,372,036,854,775,808 到 第1页 C#(WINFORM)学习 long val2 = 34L; 到 9,223,372,036,854,775,807 byte ushort 8 位无符号整型 16 位无符号整型 byte val1 = 12; ushort val1 = 12; uint val1 = 12; uint 32 位无符号整型 uint val2 = 34U; ulong val1 = 12; ulong val2 = 34U; ulong 64 位无符号整型 ulong val3 = 56L; ulong val4 = 78UL; float 单精度浮点型 float val = 1.23F;7 位 double val1 = 1.23; double 双精度浮点型 double val2 = ±5.0 × 10?324 ±1.7 × 10 308 0 到 255 0 到 65,535 0 到 4,294,967,295 0 到 18,446,744,073,709,551,615 ±1.5 × 10?45 ±3.4 × 10 38 到 到 4.56D;15-16 布尔型;bool 值或为 真或为假 字符类型;char 值是 一个 Unicode 字符 精确的小数类型, 具有 28 个有效数字 bool val1 = true; bool val2 = false; char val = 'h'; decimal val = bool char decimal DateTime ±1.0 × 10?28 ±7.9 × 10 28 到 1.23M;28-29 变量转换 简单转换: float f = 100.1234f; 可以用括号转换: short s = (short)f 也可以利用 Convert
方法
来转换: string s1; s1=Convert.ToString(a); MessageBox.Show(s1); 常用 Convert
方法
有: 第2页 C#(WINFORM)学习 C# Convert.ToBoolean Convert.ToByte Convert.ToChar Convert.ToDateTime Convert.ToDecimal Convert.ToDouble Convert.ToInt16 Convert.ToInt32 Convert.ToInt64 Convert.ToSByte Convert.ToSingle Convert.ToString Convert.ToUInt16 Convert.ToUInt32 Convert.ToUInt64 备注 Math 类 常用科学计算
方法
: C# Math.Abs Math.Sqrt Math.Ro
c#读取数据库中
图片
路径,将
图片
保存
到
image
list
,在
list
view显示
1,在winform界面,拖入
list
view,然后
加入
一个
image
list
。 2,我们要做的就是根据数据库中存储的
图片
路径,把
图片
存储到
image
list
,然后再
list
view中显示
图片
,和数据库中其他的一些内容。 代码如下: private void coldDish_Load(object sender, EventArgs e) { string sql = s
C#中
Image
list
控件详解,让你一看就会!
一、使用编译器自动生成
image
list
控件 1、首先拖入一个
image
list
控件,其将在窗口下面分栏显示: 2、插入一些
图片
: 3、系统自己生成的代码: private void InitializeComponent() { this.components = new System.ComponentModel.Container(); ...
VB基础类
7,763
社区成员
197,605
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章