<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[老瓷叙谈]]></title><description><![CDATA[目见皮毛，择而使之……]]></description><link>https://blog.csdn.net/doubworm</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; doubworm]]></copyright><item><title><![CDATA[VFP CursorAdapter 起步一(作者：Doug Hennig 译者：fbilo)]]></title><link>https://blog.csdn.net/doubworm/article/details/115940724</link><guid>https://blog.csdn.net/doubworm/article/details/115940724</guid><author>doubworm</author><pubDate>Wed, 21 Apr 2021 11:19:15 +0800</pubDate><description><![CDATA[CursorAdapter 类是 VFP 8 中最重要的新功能之一，因为它提供了一种简单易用、接口统一的访问远程数据源方式。在这个月的文章里，Dung Hennig 将向你展示 CursorAdapter 及它的工作方式。下个月，我们将再学习一些高级的用法。
正文：
越来越多的 VFP 程序员开始把他们的数据储存到象 SQL Server 或者 Oracle 这样的 VFP 表以外的数据仓库中去了。有许多原因导致了这种情况，包括 VFP 表的脆弱性（不管是想象中的还是确实如此）、安全性、数据库的容量、以及通]]></description><category></category></item><item><title><![CDATA[VFP CursorAdapter 起步三(作者：Doug Hennig 译者：fbilo)]]></title><link>https://blog.csdn.net/doubworm/article/details/115940367</link><guid>https://blog.csdn.net/doubworm/article/details/115940367</guid><author>doubworm</author><pubDate>Wed, 21 Apr 2021 11:14:17 +0800</pubDate><description><![CDATA[可重用数据类

VFP 的程序员们想要一个可重用的数据类已经很久了。尽管在过去的版本中也有许多解决这个问题的办法，不过总是有点美中不足。现在在 VFP 8里，我们有了真正的可重用数据类。这个月，Doug 为我们演示了怎样通过建立 CursorAdapter 和 DataEnvironment 的子类来建立可重用的数据类、以及怎样在表单和报表中使用它们。
正文
××
在过去的两期杂志中，我们讨论了在 VFP 8 中新增的 CursorAdapter 基础类。我个人的观点是，这是 VFP 8 中最重要的改动之一]]></description><category></category></item><item><title><![CDATA[VFP CursorAdapter 起步二(作者：Doug Hennig 译者：fbilo)]]></title><link>https://blog.csdn.net/doubworm/article/details/115940094</link><guid>https://blog.csdn.net/doubworm/article/details/115940094</guid><author>doubworm</author><pubDate>Wed, 21 Apr 2021 11:12:25 +0800</pubDate><description><![CDATA[用 CursorAdapter 来取得和更新数据

在 VFP8 中新增的 CursorAdapter 基类提供一个统一、易用的数据接口。Doug Hennig 在这个月的文章中演示了怎样使用 CursorAdapter 来访问本地数据和 ODBC、ADO和XML这样的远程数据——讨论了使用各种数据源相应的特殊要求和实现途径。
正文：
如我在上一篇文章中所提到的那样，在VFP8中一个最重要的、也是最精彩的新功能是新的 CursorAdapter 基类。在那篇文章中，我们研究了一下 CursorAdapter]]></description><category></category></item><item><title><![CDATA[C# NPOI Excel 跨工作薄Workbook复制工作表Sheet]]></title><link>https://blog.csdn.net/doubworm/article/details/107319647</link><guid>https://blog.csdn.net/doubworm/article/details/107319647</guid><author>doubworm</author><pubDate>Tue, 14 Jul 2020 10:55:34 +0800</pubDate><description><![CDATA[跨工作薄复制Sheet，并不是单纯的将Sheet的数据复制到新Sheet中，需要将数据、公式等包括数据格式(DataFormat)，单元格的风格(CellStyle)等等都复制到新Sheet中。

NPOI目前的版本为2.5.1，其Excel处理已经可以较好的支持XSSF(2007及以上)与HSSF(2003及以下)各自的工作薄间的Sheet拷贝，但XSSF工作薄与HSSF工作薄间的Sheet拷贝仍未实现。而2.4.1版的HSSF的Sheet拷贝也并未完善，虽然大部分功能已实现，颜色上有异常，2.5.1版已]]></description><category></category></item><item><title><![CDATA[C# WinForm 检测文件是否被占用]]></title><link>https://blog.csdn.net/doubworm/article/details/106110043</link><guid>https://blog.csdn.net/doubworm/article/details/106110043</guid><author>doubworm</author><pubDate>Mon, 13 Jul 2020 15:57:29 +0800</pubDate><description><![CDATA[#region 检测文件是否被占用
    /// &lt;summary&gt;
    /// 判定文件是否打开
    /// &lt;/summary&gt; 
    [DllImport("kernel32.dll")]
    public static extern IntPtr _lopen(string lpPathName, int iReadWrite);
    [DllImport("kernel32.dll"...]]></description><category></category></item><item><title><![CDATA[C#开源组件NPOI处理Excel导入DataTable数据至Sheet]]></title><link>https://blog.csdn.net/doubworm/article/details/106114462</link><guid>https://blog.csdn.net/doubworm/article/details/106114462</guid><author>doubworm</author><pubDate>Thu, 14 May 2020 10:28:34 +0800</pubDate><description><![CDATA[作为C#处理Excel的强大的开源组件，NPOI具有Office Excel的绝大部分功能，与收费的Spire比虽有不足，但对于一般性的处理来说还是基本够用，这也是NPOI至今仍作为众多C#堆码人员的选择的原因。

收费软件能够提供更多的功能给用户，这也是它的卖点。Spire的DataTable数据导入，就是NPOI所不具备的，而导入DataTable数据，对于C#来说是经常遇到的，所以NPOI用起来虽然也能够想办法处理，却没有那么方便。

下面的代码，仿照Spire的DataTable数据导入，提供大家一]]></description><category></category></item><item><title><![CDATA[C# WinForm 扩展指定列宽适应DataGridView显示行数(二)]]></title><link>https://blog.csdn.net/doubworm/article/details/105995360</link><guid>https://blog.csdn.net/doubworm/article/details/105995360</guid><author>doubworm</author><pubDate>Fri, 08 May 2020 14:10:22 +0800</pubDate><description><![CDATA[在C# WinForm 扩展指定列宽适应DataGridView显示行数一文中，初步将如何在显示行数不大于Grid可显行数的情况下自动扩展Grid列宽内容作了简单介绍。后来，又碰到了Grid中间隔有不可显示列的情形，故将代码进行了扩展。

为了方便使用，特将Grid的初始设置选择单独列出，方便调用。（注：本方法仅适合Grid的滚动条只有垂直情况下，不包括水平滚动条情况，也就是说，各可显列均于G...]]></description><category></category></item><item><title><![CDATA[C# WinForm 扩展指定列宽适应DataGridView显示行数]]></title><link>https://blog.csdn.net/doubworm/article/details/105785794</link><guid>https://blog.csdn.net/doubworm/article/details/105785794</guid><author>doubworm</author><pubDate>Mon, 27 Apr 2020 10:55:19 +0800</pubDate><description><![CDATA[C# WinForm DataGridView用于显示组织到的数据，在数据行记录数不足Grid的屏显示行数时，右侧的垂直滚动条此时是无用的，是不需要显示的，特别是对于某些(较真、执着，呵呵)人很是如此。前段时间就又碰到一例，问我有否解决办法，说是每个Grid的各列宽都不同，调试比较麻烦，便弄了下面这些代码来解决这个问题。

需要注意的是，一般情况下，Grid在设计时，都只会用到：列宽、列头名、数据...]]></description><category></category></item><item><title><![CDATA[C#求数组最大值或最大值位置索引]]></title><link>https://blog.csdn.net/doubworm/article/details/103662454</link><guid>https://blog.csdn.net/doubworm/article/details/103662454</guid><author>doubworm</author><pubDate>Mon, 23 Dec 2019 11:47:29 +0800</pubDate><description><![CDATA[常见求最大值，是数值型数组，这个通常遍历数组方式，或数组排序即可完成。但对于字符串或日期等非数值类型不能处理。下面给出泛型数组的最大值或最大值位置索引的自定义函数。
数组最大值的位置索引
//传入一个数组,求出一个数组的最大值的位置
public static int MaxIndex&lt;T&gt;(T[] arr) where T : IComparable&lt;T&gt;
{
    v...]]></description><category></category></item><item><title><![CDATA[C#用Spire.Xls对Excel的页面进行自动列宽处理]]></title><link>https://blog.csdn.net/doubworm/article/details/100156489</link><guid>https://blog.csdn.net/doubworm/article/details/100156489</guid><author>doubworm</author><pubDate>Fri, 30 Aug 2019 15:05:41 +0800</pubDate><description><![CDATA[Spire.xls是目前C#处理Excel的比较好的控件之一，功能强大而且支持Excel97-2003及Excel2007及以上各版本，并且不与Excel版本变化及是否已安装Excel等Office相关，也就是说你的机器上没有安装Excel也能处理你需要的Excel版本的文件。完全版本的Spire.Xls是收费软件，当然你也可以到其官方网站上下载试用版，试用版来进行轻量级使用是没有问题的。Spir...]]></description><category></category></item><item><title><![CDATA[C#获取DataGridView数据源DataSource类型]]></title><link>https://blog.csdn.net/doubworm/article/details/100149963</link><guid>https://blog.csdn.net/doubworm/article/details/100149963</guid><author>doubworm</author><pubDate>Fri, 30 Aug 2019 10:06:42 +0800</pubDate><description><![CDATA[在C#的应用中，DataGridView控件应用比较广泛，而其数据源也有多种。数据绑定一般归于两类：一类是简单绑定，绑定至一个数据集中；另一类是所谓的复杂绑定，绑定至一个数据对象的列表。相关知识请参阅MSDN或网上其它文章。本文仅对绑定的数据源的类型进行判断。

对于DataGridView的DataCource，通过指定BindingSource将源数据集来进行复杂绑定，简单绑定是直接指定Dat...]]></description><category></category></item><item><title><![CDATA[C#动态添加DataGridView列和行]]></title><link>https://blog.csdn.net/doubworm/article/details/100137966</link><guid>https://blog.csdn.net/doubworm/article/details/100137966</guid><author>doubworm</author><pubDate>Thu, 29 Aug 2019 15:52:14 +0800</pubDate><description><![CDATA[在WinForm的C#应用中，DataGridView作为重要的数据组织和显示控件，作用极大。在DataGridView的数据组织时，一般都采用数据源绑定的方式(DataSource)与DataSet、Datatable或List来组织，很少出现不使用DataSource而动态添加的方式。所以网上有关这方面的介绍比较少或太简单，并且实用的例子很少。这次有同学有个需求问我要一个处理这种动态添加列和添...]]></description><category></category></item></channel></rss>