delphi小知识,相当基础

来源:互联网 发布:免费下载电子表格软件 编辑:程序博客网 时间:2024/04/30 13:02

 ShowWindow(Application.Handle, SW_HIDE);    //隐藏窗体,其中showwindow是一个函数,有两个参数,一是句柄,二是状态,这里是sw_Hide表示隐藏。
1:生成非矩形窗口

  利用win32 API函数setwindowrgn可以将窗口定义为任何形状,以下是将窗口定义为园角矩形的例子:
procedure TForm1.FormCreate(Sender: TObject);
var
    hr :thandle;
begin
    hr:=createroundrectrgn(0,0,width,height,20,20);//定义园角矩形(win API函数)
    setwindowrgn(handle,hr,true); //设置园角窗口
end;
  为了使该窗口更好,应在onResize事件处理程序放相同的代码。

2:Delphi中TApplication类的巧用

  在Delphi中TApplication是一个有着十分重要作用的类。TApplication类是用于描述Delphi编制的应用程序的一个类。通过对这个类的灵活应用可以编制许多有特点的程序。。

  1) 检测当前Windows程序是否被激活:
  TApplication类有一个属性——Active,这个属性就可以描述当前运行的程序是否被激活,成为Windows的焦点。检测的代码如下:
            If Application.Active=False then ShowMessage(’当前窗口没有被激活’);

  2) 取得当前程序的名称:
  TApplication类的EXEName属性可以返回这个可执行程序的完整文件名(包含路径)。实现的代码如下所示: ShowMessage(Application.ExeName);

  3) 改变程序极小化时的标题
  Tapplication类的Title属性。这个属性决定了程序最小化时的标题,而窗口中标题栏的标题是由Form的Caption属性来决定的。其代码如下:
                                Form1.Caption:=’ 窗口的标题’;
                                Application.Title:=’程序的标题’;

  4) 指明程序的主窗口
  Windows系统中的界面都是窗口,但一般来讲有一个主窗口。Tapplication的MainForm属性就可以返回程序的主窗口。

  5) 显示消息框
  Delphi可以生成一个含有中文显示的按钮,Tapplication的MessageBox函数了。这个函数的原形如下: function MessageBox(Text, Caption: Char; Flags: Longint): Integer
例如:Application.MessageBox('需要存盘吗?','提示信息',MB_OKCANCEL);
  这个函数返回的是一个整型的数值,而这个数值被系统指定了具体的含义,比如:按下“确定”按钮时返回的值是“1”,按钮的意义及系统中对其定义的值:
                                                IDOK 1
                                                IDCANCEL 2
                                                IDABORT 3
                                                IDRETRY 4
                                                IDIGNORE 5
                                                IDYES 6
                                                IDNO 7

  6) 控制窗口的尺寸
  一般可以用窗口手柄来调整窗口的尺寸,但是也可以用Application的事件来调整。实现的方法是用以下两个过程:
            Application.Minimized;
            Application.Restore;
  前一个过程用来将程序的主窗口最小化,而后一个过程用来将最小化的窗口恢复到原来的尺寸。

  7) 链接联机帮助文件
  Application的CurrentHelpFile属性能够指定当前程序所用的联机帮助文件的文件名。这个属性经常与另一个方法联合在一起使用。举例如下:
            Application.HelpFile := '联机帮助文件名';
            Application.HelpJump('联机帮助文件的主题’)
  通过这一命令组合,我们就能使系统弹出一个显示某主题的联机帮助文件。


  8) 在程序运行时动态地创建窗口
  窗口是在设计时加入到工程项目中的,但是有时也需要我们在程序运行时动态地加入窗口,这就要用到Application 的CreateForm过程,举例如下:
            Form3:Tform3; //声明窗口类
            Application.CreateForm(TForm3, Form3); //创建窗口

  9) 结束程序
  虽然我们可以用关闭主窗口的方法来关闭一个程序,但是更好的办法是用Application的Terminate过程。它能够起到更彻底地关闭程序的效果。

  10) Destroy 属性.
  虽然Delphi提供了这一属性,但是并不提倡使用它,如果要终结程序就要调用Terminate过程,而Destroy过程一般是用来在程序发生悬挂时来退出程序时才调用,有些类似Windows中的结束任务功能。它不仅能关闭程序实例本身,而且还能释放程序所占用的资源,能够达到将程序彻底清除出系统的目的。

3:在程序中使用自定义的鼠标 


第一步:
  用 Image Editor 编辑一个鼠游标(Fild | New | Resource File)新建一个 CURSOR1 的 CURSOR, 设定好它的 Hot Spot (Cursor | Set Hot Spot),存档时注意要和建立的 Project 存在同一个目录,在本例我们先假定为 MyCursor.res

二. 程序部分
  定义一个常数 crMyCursor, 这个常数您必须设成大於零的任何整数,以 LoadCursor() 函数将
自订的鼠标资源load 进来,以下为源代码:
unit Unit1;
interface
uses
    SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs;
const
    crMyCursor = 1; // 宣告一个常数
type TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
    { Private declarations }
public
    { Public declarations }
end;
var
    Form1: TForm1;
    {$R mycursor.res} //这行 $R 不可少, 否则自订的鼠游标就出不来了
implementation
{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
    //下面 将鼠标资源 load 进来
    Screen.Cursors[crMyCursor] := LoadCursor (hInstance,'CURSOR1');
    Cursor := crMyCursor; //指定 form1 的 cursor 为自订鼠标
end;

end.

源程序下载

ExtractFileName取路径中最后一个斜杠后面的部分ExtractFileExt取小点后面的部分
AnsiCompareText函数  
   
      function   AnsiCompareText(const   S1,   S2:   string):   Integer;  
   
  AnsiCompareText函数比较两个字符串并返回一个整数结果,其取值如下,比较不区分大小写。同时也考虑到了windows环境以及多字节字符串。  
   
  结果   说明  
  -1       S1   <   S2    
  0         S1   =   S2      
  +1       S1   >   S2  
function   AnsiCompareText(const   S1,   S2:   string):   Integer;  
   
  Description  
   
  AnsiCompareText   compares   S1   to   S2,   without   case   sensitivity.   The   compare   operation   is   controlled   by   the   current   locale.   AnsiCompareText   returns   a   value   less   than   0   if   S1   <   S2,   a   value   greater   than   0   if   S1   >   S2,   and   returns   0   if   S1   =   S2.
BMPTOJPGRoot:=ExtractFileDir(paramstr(0));取执行文件的路径,不包括执行文件名
ExtractFileDir         //这个没有最后的   /  
  ExtractFilePath     //这个最后有   /  
   
  showmessage(ExtractFileDir('c:/aaaa/aaa/aaa.exe'));显示为c:/aaaa/aaa        
  showmessage(ExtractFilePath('c:/aaaa/aaa/aaa.exe'));显示为c:/aaaa/aaa/
DirectoryExists(文件全路径)判断文件是否存在,存在则为true
CreateDir(文件全路径)新建文件夹
ExtractFileExt(文件全路径)取扩展名也就是.exe或.txt等
ParamStr(0)代表应用程序名字,包括完整路径, 比如:C:/windows/system32/notepad.exe
ParamStr表示的是启动应用程序时传给其的参数,比如: c:/windows/system32/notepad.exe  c:/1.txt
  ParamStr(0) 就是 c:/windows/system32/notepad.exe  ParamStr(1)就是c:/1.txt...依次类推

  $表示该数字是16进制的。比如:$A 就是十进制的 10
application.ExeName本身就是可执行文件的路径,还包括文件名如C:/program/borland/projects/bin/project1.exe.
全局常量在上面的那个uses完那些单元后定义,只能是常量,全局变量在form1:TForm下面。在implement下面也行。
如何在delphi中创建一个 记事本文件(*.txt) 然后把form1.edit.text里的字符写进几时本?
 悬赏分:0 - 提问时间2005-12-30 22:59
创建一个 记事本文件(*.txt) 然后把form1.edit.text里的字符写进几时本?
谢谢!!!!!!!
提问者: 逐凌云志 - 秀才 二级 其他回答    共 2 条
用这个函数可以程序创建一个文件。
h:=CreateFile('D:/temp.txt',3,5,nil,CREATE_ALWAYS,FILE_ATTRIBUTE_ARCHIVE,0);
然后你可以用writefile这个函数将edit1.text写入这个文件中。
回答者:dj1893 - 秀才 三级 12-31 09:47
我给你写个函数:
Procedure WriteTxt(sFileName,sText:String); //写txt文件
Var
F:TextFile;
Begin
AssignFile(F,sFileName);
IF FileExists(sFileName) Then
Append(F)
Else
ReWrite(F);

WriteLn(F,sText);
CloseFile(F);
End;

然后调用:
WriteTxt('e:/1.txt',form1.edit.text);

原创粉丝点击