|
| | | | 我们都知道windows是通过标题栏来移动窗体的,当我们在标题栏上按下鼠标左键时,windows将发送wM_NCHitTest消息,来告诉系统要移动窗体。但我们在实际编程时,有时为了界面的需要或特殊的要求,窗体没有标题栏,我们必须通过程序来移动窗体。下面我将介绍几种移动窗体的方法和技巧。
方法一:根据鼠标按下和移动时的位置差,来计算窗体的位置。需要定义的变量如下:
var
Opos, Cpos: Tpoint;
Flag: boolean = false;
处理OnMouseDown事件代码:
Flag := true;
Opos.X := X;
Opos.Y := Y;
&…… 窗口类:
1.Shift+F12 快速查找窗体并打开
2.Ctrl+B Buffer List窗口
3.F12 切换EDITOR,FORM
4.Ctrl+F3 弹出Call Stack窗口
5.Alt+鼠标左键 可以块选代码,用来删除对齐的重复代码非常有用
6.Ctrl+T…… 下面的快捷键大部分在Delphi的菜单中找不到,其中有一些还是非常有用的。
Ctrl+PageUp 将光标移至本屏的第一行,屏幕不滚动。
Ctrl+PageDown 将光标移至本屏的最后一行,屏幕不滚动。
Ctrl+↓ 向下滚动屏幕,光标跟随滚动不出本屏。
Ctrl+↑ 向上滚动屏幕,光标跟随滚动不出本屏。
Ctrl+Shift+NUM 在光标行设置最多九个临时标志号,对临时切换非常有用。
行的左边将出现一本书,封面有NUM,再按一次取消设置。
Ctrl+NUM 直接将光标跳到NUM处,NUM是用Ctrl+Shift+NUM设置的标号。
NUM不能用小键盘。
Ctrl+Home 将光标移至文件头。
Ctrl+End 将光标移至文件尾。
Ctrl+B Buffer List窗口。
Ctrl+I 同Tab键。
Ctrl+M 同Enter键。…… {
功能描述:把DBGrid输出到Excel表格(支持多Sheet)
调用格式:CopyDbDataToExcel([DBGrid1, DBGrid2]);
}
procedure CopyDbDataToExcel(Args: array of const);
var
iCount, jCount: Integer;
XLApp: Variant;
Sheet: Variant;
I: Integer;
begin
Screen.Cursor := crHourGlass;
if not VarIsEmpty(XLApp) then
begin
 …… 反向工程一直被认为是技术奇才的专有艺术,需要熟悉汇编语言和调试器。下面几个Delphi反编译器允许任何人反编译大多数Delphi可执行文件,即使只有有限的技术知识。
如果你对Delphi程序反向工程感兴趣,我建议你看一看以下几个“反编译器”:
DeDe是一个非常快的程序,用于分析Delphi编译的可执行文件。反编译之后,DeDe会提供以下信息:所有的目标dfm文件。你可以用Delphi打开并编辑它们; 带有良好的注释的ASM代码的所有发布的方法,它涉及字符串、输入函数调用、类方法调用、单元的组件、Try-Except和Try-Finally块。默认情况下,DeDe仅仅只获得已发布方法的源代码,但如果你通过使用Tools | Disassemble Proc菜单知道RVA偏移量的话…… 随着Dexter推出的日子逐渐接近,Dexter的Beta测试也进入了如火如荼的阶段,目前Dexter的状态是第4个Beta,我也好久沒有看到Borland的产品会有Beta 4了(Delphi 8/Delphi 2005是Beta 3之后便被下令推出),而且Dexter还有好几个月的时间继续进行稳定性,延展性以及效率的调整,这实在是令人高兴,因为这代表Borland的高层现在脑筋终于清醒了,我不知道Dexter推出后在Marketing方面是不是可以扫除Delphi 8/Delphi2005负面的印象,但我知道如果Dexter依照目前的计划发展下去,那么我们终于将有一個很棒的产品了,OK,不多说Politics方面的事以免我有麻煩,让我们多谈谈Dexter技术以及产品本身的事好了。
如果您还不知道Dexter是什么的话,简单的说Dexter将在一个IDE中(Galileo 4.0…… 1. 您为什么选择软件开发这个行业?(30字左右简写);
2.如果有您解决不了的软件问题您会采取什么样的解决措施;
3.a.请您写出Object Pascal所支持的数据类型;b.请您写出Shl、Shr、Xor、Not 的数学表示法;
4.请您写出VCL结构层次(以TObject开始,最少五层);
5.请您写出一个参数是多维数组的function和调用方法;(在Delphi中写)
6.在MSSQL2000或Oracle数据库中建立两个表如下表结构:
Prd_Item (产品项目表)
Prd_ID Integer(整型) 主键(帐单ID)
Prd_ItemName Varchar(字符型, 长度30)(帐单名称)
Prd_ItemPrc Float/Integer(12, 2)(浮点型) 单价
Prd_Dat…… 初学DelphiI的人,由于各种原因,对DelphiI中的许多概念不能很好的理解,并由此带来了许多的问题,或者是开发出的程序稳性不好,一会能运行,一会又不能运行;或者是遇到一个问题久思不得其解,还误以为是DelphiI自身的BUG,等等这些,浪费了我们大量的时间、精力,也影响了我们的开发效率。
那么如何才能避免这些错误了,尽量少走弯路了?笔者从事DelphiI开发多年,下面就把我的经验总结介绍给大家,希望帮助到初学DelphiI的朋友。
问题一:对类的概念理解不到位,程序开发中不能灵活运用。请看下面的程序:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For…… 1.建立临时表
数据输入是开发数据库程序的必然环节。在Client/Server结构中,客户端可能要输入一批数据后,再向服务器的后台数据库提交,这就需要在本地(客户端)建立临时数据表来存储用户输入的数据,待提交后,清除本地表数据。这种方法的好处是:提高输入效率,减小网络负担。
由于用户一次输入的数据量一般情况下较小(不会超过几百条记录),所以临时表可以建立在内存中,这样处理速度较快。
方法1:使用查询控件(TQuery)
第1步:在窗体上放上查询控件(TQuery),设置好所连接的数据表。
第2步:使TQuery. CachedUpdates=True;
TQuery. RequestLive=True…… 一、概述
在银行,税务,邮政等行业的实际工作中,经常涉及到在印刷好具有固定格式的汇款单,储蓄凭证,税票等单据上的确定位置打印输出相关的信息。在此类需求中,精确地定位单据并打印相关信息,是解决问题]的关键。一般情况下,开发者都是通过在打印机上通过重复的测试来达到实际需求。那么,有没有简单有效而又灵活的方法实现上述功能呢?
二、基本思路
分析上述单据的特征,可以发现:此类打印输出的信息一般比较简短,不涉及到文字过长的折行处理,另外,其打印输出的位置相对固定。因此,我们可以通过用尺子以毫米为单位,测量好每个输出信息位置的横向和纵向坐标,作为信息输出的位置。但由于不同打印机在实际输出效果上,总是存在理论和实际位置的偏差,因此,要求程序具有一定的灵活性,供最终用户根据需要,进行必要的位置调整。因此,可设置一打印配置文件,用于存储横坐标和纵坐标的偏移量,用于用户进行位置校正,从…… 编程前必须了解Delphi的文件种类,而且知道这些文件之间的大致关系。
首先让我们看一下Delphi的工程(Project)。Delphi的工程由窗体,单元,资源, 选项设置等构
成。所有这些信息都以文件的形式存在,建立应用程序时Delphi会产生许多这样 的文件。像位图,图
标等这样的资源也以文件的形式存在你可以利用许多工具和资源编辑 器来创建这些文件。此外,编译
器也可能生成文件。
在用Delphi设计程序时
Delphi产生文件
工程文件(.dpr) 用于保存有关窗体和单元的信息,在这里可找到初始化代码
单元文件(.pas) 用于储存代码。有些单元与窗体相联系,有些只存储函数和过程
窗体文件(.dfm) 由Delphi产生的二进制文件,用于…… 常数名称 十六进制值 十进制值 对应按键
VK_LBUTTON 01 1 鼠标的左键
VK_RBUTTON 02 2 鼠标的右键
VK-CANCEL 03 3 Contol-break 执行
VK_MBUTTON 04 4 鼠标的中键(三按键鼠标)
VK_BACK 08 8 Backspace键
VK_TAB 09 9 Tab键
VK_CLEAR 0C 12 Clear键
VK_RETURN 0D 13 Enter键
VK_SHIFT 10 16 Shift键
VK_CONTROL 11 17 Ctrl键
VK_MENU 12 18 Alt键
VK_PAUSE 13 19 Pause键
VK_CAPITAL 14 20 Caps Lock键
VK_ESCAPE 1B 27 Ese键
VK_SPACE 20 32 Spacebar键
VK_PRIOR 21 3…… 1、Delphi中拷贝文件的几种方法
{方法一:用File stream }
Procedure FileCopy( Const sourcefilename, targetfilename: String );
Var
S, T: TFileStream;
Begin
S := TFileStream.Create( sourcefilename, fmOpenRead );
try
T := TFileStream.Create( targetfilename,fmOpenWrite or fmCreate );
try
T.CopyFrom(S, S.Size ) ;
finally
T.Free;
end;
finally
S.Free;
end;
End;
{ 方法二:使用内存块进行读写 }
procedure FileCopy(const…… MessageBox对话框 输入控件的 ImeName属性把输入法去掉就默认为英文输入了
MessageBox对话框是比较常用的一个信息对话框,其不仅能够定义显示的信息内容、信息提示图标,而且可以定义按钮组合及对话框的标题,是一个功能齐全的信息对话框信息提示图标,而且可以定义按钮组合及对话框的标题,是一个功能齐全的信息对框。
1、函数原型及参数
function MessageBox(hWnd: HWND; Text, Caption: PChar; Type: Word): Integer;
hWnd:对话框父窗口句柄,对话框显示在Delphi窗体内,可使用窗体的Handle属性,否则可用0,使其直接作为桌面窗口的子窗口。
Text:欲显示的信息字符串。
Caption:对话框标题字符串。
Type:对话框…… 1. 控制INI文件几法
要利用.INI文件做程序有关数据的存储工作,就需要能读和写.INI文件,所以列了如下方法给大家参考:
从.INI文件中获取字符串
var
strResult:pchar;
begin
GetPrivateProfileString(
'windows', // []中标题的名字
'NullPort', // =号前的名字
'NIL', // 如果没有找到字符串时,返回的默认值
strResult, //存放取得字符
100, //取得字符的允许最大长度 …… 仅列出标题 | | |
| |
| | | |  致力于企业信息化推广事业(开发、实施、管理) | | |
|
| | | | - 创建:2008-2-22
- 文章:701
- 评论:223
- 访问:78168

| | |
|