‘Delphi’ 分类的存档

[转载]最终用户在线设计和修改Web报表 – Web打印 – 博客园. 我在最近主持开发的人力资源管理系统中遇到一个新的问题:就是最终用户要能够设计和编辑报表。在人力资源管理系统中有一个基本的功能,就是编辑和打印员工 的工作证,不同职务的员工的工作证可能不一样,同一个员工不同工作时期(比如实习员工、正式员工)的工作证也可能不一样。项目方要求我们一定要做到操作员 可以在线设计和修改工作证的格式(实际上就是报表),否则就一切免谈。客户是上帝!呵呵,努力做吧。于是大家搜罗了所有的Web打印软件,结果包括大名鼎 鼎的水晶报表也没有这个功能。 好在天无绝人之路,我在以前所设计的一个基于FastReport的Web打印控件之上进行了大量的修改,终于实现了最终用户的在线设计和编辑报表的功能,用户也比较满意。 报表的预览窗口如下图: 报表的最终用户在线设计和编辑窗口如下图: 当然报表的在线编辑窗口有一点专业,操作员需要经过一点培训才会使用,不过一般情况是我们先帮用户设计好了模板,操作员平时只是要做一些微调,比如改个字或改个格式等。报表编辑好后,点击就可以自动把报表保存到服务器,且提示 。 下面详细的讲解一下怎样利用我设计的Web打印控件实现最终用户的在线设计和修改报表,且自动把报表保存至服务器。讲解以ASP.NET为例,当然其它语 言也可以举一反三,很容易实现。因为调用打印控件统一是JavaScirpt,提交服务器的数据是Http协议的Post方式,这些都是通用的。 最终用户在线设计和修改Web报表的部分代码如下: 调用Web打印控件 protected void BtnDepsitAmtDesignPost_Click(object sender, EventArgs e) { string FileValue, PrintValue, ParaName, ParaValue; FileValue = FileToString(“.\\Frp\\DepositAmt.fr3″); ParaName = “ShopName`~PrintDepositAdd`~PrintPaperNo`~Title”; //`~为各参数的分隔符 ParaValue = “测试酒楼” + “`~说明:本单据为贵客押金收取凭证,盖章有效。退房时请出示,遗失者自负,请妥善保存。退房时间为12:00时,延时退房18:00时以前按半天房费收取,18:00时以后算全天房价。押金单有效期为一个月,过期作废。 贵重物品请交前台寄存,未寄存丢失自负。 谢谢!” + “`~身份证:4325011980639512″ + “`~押金单”; SQLConnection ConPrintTest = new SQLConnection(ConfigurationManager.ConnectionStrings["PrintTestConnectionString"].ToString()); ConPrintTest.Open(); DataSet [...]

2011年3月1日16:58 评论关闭

[转载]转贴:Delphi的IDHTTP的基本用法 百度空间_应用平台. 一、IDHTTP的基本用法 IDHttp和WebBrowser一样,都可以实现抓取远端网页的功能,但是http方式更快、更节约资源,缺点是需要手动维护cook,连接等 IDHttp的创建,需要引入IDHttp procedure InitHttp(); begin http := TIdHTTP.Create(nil); http.ReadTimeout := 30000; http.OnRedirect := OnRedirect; http.Request.Accept := ‘image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*’; http.Request.AcceptLanguage := ‘zh-cn’; http.Request.ContentType := ‘application/x-www-form-urlencoded’; http.Request.UserAgent := ‘Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322)’; http.ProxyParams.ProxyServer := ‘代理服务器地址’; http.ProxyParams.ProxyPort := ‘代理服务器端口’; end; 二、如何取得服务端返回的cookie信息,并添加到http的request对象中 procedure Setcookie; [...]

2011年2月22日13:16 评论关闭

[转载]C#调用dephi的dll之详解-完整版_附有可下载Demo – elivn – 博客园. C#调用Dephi接口方法,有两种解决办法: 一、将Dephi程序编译成一个COM组件,然后在C#里引用COM组件。 二、非托管调用Dephi的DLL文件。 这里我们主要讲解一下第二种方法,讲第二种方法之前首先讲解下DllImport。 DllImport是System.Runtime.InteropServices命名空间下的一个属性类,其功能是提供从非托管DLL导出的函数的必要调用信息。 DllImport属性应用于方法,要求最少要提供包含入口点的dll的名称。 DllImport的定义如下: 代码 1 [AttributeUsage(AttributeTargets.Method)] 2 public class DllImportAttribute: System.Attribute 3 { 4 public DllImportAttribute(string dllName) {…} //定位参数为dllName 5 public CallingConvention CallingConvention; //入口点调用约定 6 public CharSet CharSet; //入口点采用的字符接 7 public string EntryPoint; //入口点名称 8 public bool ExactSpelling; //是否必须与指示的入口点拼写完全一致,默认false 9 public bool PreserveSig; //方法的签名是被保留还是被转换 10 public bool SetLastError; //FindLastError方法的返回值保存在这里 11 [...]

2010年11月20日09:06 评论关闭

[转载]C#调用dephi的dll之详解 – Moveing life – 博客园. C#调用dephi的dll用DllImport来调用的 一般是用非托管的 具体形式如下:[DllImport("WZFSE.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)] 下面紧接着他的申明函数 public static extern void InitDll(IntPtr handle, bool methodAddress); 申明一个函数就要引用下他的dll IntPtr这个类型可以申明为其他语言的句柄,指针等。 若要实现其他语言类似C++的函数指针形式 这时我们考虑用C#的委托来实现 将dephi的窗体签入到自己的C#系统里 还有一点比较重要,我们是调用dephi的窗体,此时显示在我们C#窗体中会有dephi的窗体 这时我们怎么办呢  怎么去除dephi中的窗体呢  这时我们就需要用API函数了 API函数在dephi有 C#中也有 在C#中是这么引用的 [DllImport("user32.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)] public static extern void MoveWindow(IntPtr handler, int x, int y, int width, [...]

2010年10月12日10:42 评论关闭

[转载]用Delphi从内存流中判断图片格式 – chybaby的专栏 – CSDN博客. 废话不多说了,利用内存流来判断文件的格式,其实判断文件的前几个字节就可以简单的判断这个文件是什么类型的文件,例如 jpg文件 是 FFD8 (从低位到高位就要反过来 D8FF 下面都是一样) BMP文件 是 424D —4D42 其他的我就不一一列举了,想知道跟多文件类型分别是用什么字符作为文件的开头的话,下载个C32asm或者UE等这类16进制编辑器就可以看到了。 procedure TForm1.Button1Click(Sender: TObject); //Button1的单击事件 var //声明变量 MyImage:TMemoryStream;   //内存流对象 Buffer:Word; i:integer; begin if OpenDialog1.Execute then //OpenDialog1是一个文件打开对话框,在Delphi组件面版的Dialog页中可以找到。 begin MyImage:=TMemoryStream.Create; //建立内存流对象 try MyImage.LoadFromFile(OpenDialog1.FileName); //把刚刚用户选择的文件载入到内存流中 MyImage.Position := 0; //移动指针到最开头的位置 if MyImage.Size = 0 then //如果文件大小等于0,那么 begin //错误 ShowMessage(‘错误‘); Exit; end; MyImage.ReadBuffer(Buffer,2); //读取文件的前2个字节,放到Buffer里面 [...]

2010年8月30日09:20 评论关闭
备案信息:冀ICP备10007948号