Delphi笔记[六]

Delphi 2009早就出来了,只是一直没有时间去搞Delphi,最近做网页花了些时间。现在好了,又回来继续研究Delphi了。今天装了一天的Delphi 2009,是的,一天,一点都夸张,是在线安装的,非常慢,而且非常麻烦,没有点耐心还真是装不了。

从此开始用Delphi 2009了。

禁止改变大小,在OnCanResize里面写:resize:=false就好

Memo1.Text := StringReplace(Memo1.Text, sLineBreak, ”, [rfReplaceAll]);

在 EncdDecd 单元

procedure EncodeStream(Input, Output: TStream);
procedure DecodeStream(Input, Output: TStream);
function EncodeString(const Input: string): string;
function DecodeString(const Input: string): string;

function DecodeBase64(const Input: AnsiString): TBytes;
function EncodeBase64(const Input: Pointer; Size: Integer): AnsiString;
//能过WebBrowser的URL来判断是否换页面
procedure TForm2.WebBrowser1NavigateComplete2(ASender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
if webbrowser1.LocationURL<>’http://show.qq.com/inc/login_box.html’

then
form2.Hide;
end;

StringGrid的用法:

StringGrid1.ColWidths[0]:=135;
StringGrid1.ColWidths[1]:=135;
StringGrid1.ColWidths[2]:=135;
StringGrid1.ColWidths[3]:=121;
StringGrid1.Cells[0,0]:=’QQ号码’;
StringGrid1.Cells[1,0]:=’呢称’;
StringGrid1.Cells[2,0]:=’所属分组’;
StringGrid1.Cells[3,0]:=’分析结果’;
StringGrid1.RowCount:=25;

listview1.GridLines:=true;                 //显示分隔线
listview1.RowSelect:=true;              //可选中

“Ctrl+空格” 语法提示
这应该是 Delphi 中应用最多的快捷键之一, 但和中文输入法冲突;
把中文输入法中的 Ctrl+Space 更换一下就好了(从控制面板 -> 日期、时间、语言和区域设置 -> 语言和区域选项 -> 语言 -> 详细信息)

InternetGetCookie(PChar(url), nil, buf, size);

获取url的COOKIE

window := (WebBrowser1.Document as IHTMLDocument2).parentWindow;

 

//声明:
CopyFile(
lpExistingFileName: PChar; {源文件}
lpNewFileName: PChar;      {目标文件}
bFailIfExists: BOOL        {如果目标文件存在, True: 失败; False: 覆盖}
): BOOL;

 

Self.GetFormImage.SaveToFile(‘c:\temp\Form1.bmp’);一句话为当前窗口客户区捉图: GetFormImage

 

//Edit 文本的选择与光标位置
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.SetFocus;                           //给于焦点
SendMessage(Edit1.Handle,EM_SETSEL,0,1); //选择第一个字符
SendMessage(Edit1.Handle,EM_SETSEL,0,-1); //全选
SendMessage(Edit1.Handle,EM_SETSEL,1,1); //光标移到第一个字符后面
SendMessage(Edit1.Handle,EM_SETSEL,0,0); //光标移到开始
SendMessage(Edit1.Handle,EM_SETSEL,-1,0); //光标移到开始
end;

 

{给 Memo 排序的函数}
procedure SortMemo(const m: TMemo);
begin
with TStringList.Create do
begin
    Sorted := True;
    Text := m.Text;
    m.Text := Text;
    Free;
end;
end;

 

//声明:获取计算机名称
GetComputerName(
lpBuffer: PChar; {缓冲区}
var nSize: DWORD {缓冲区大小}
): BOOL;
——————————————————————–
//举例:
var
arr: array[0..MAX_COMPUTERNAME_LENGTH] of char;
d: DWORD;
begin
d := SizeOf(arr);
GetComputerName(arr, d);
ShowMessage(arr);
end;

 

//声明:
MessageBeep(
uType: UINT {参数是个常数; 根据不同的常数发出不同的声音, 也就是调用了不同的 wav}
): BOOL;
//参数 uType 可选值:
MB_OK              = 0;
MB_ICONHAND        = 16;
MB_ICONQUESTION    = 32;
MB_ICONEXCLAMATION = 48;
MB_ICONASTERISK    = 64;

//声明:
GetDiskFreeSpaceEx(
lpDirectoryName: PChar;                          {磁盘根路径}
var lpFreeBytesAvailableToCaller: TLargeInteger; {可用空间}
var lpTotalNumberOfBytes: TLargeInteger;         {总空间}
TotalFree: PLargeInteger                         {剩余空间}
): BOOL;
例:GetDiskFreeSpaceEx(‘C:’,d1,d2,@d3);
Memo1.Clear;
with Memo1.Lines do
begin
    Add(Format(‘可用空间: %f GB’,[d1/1024/1024/1024]));
    Add(Format(‘总空间: %f GB’,[d2/1024/1024/1024]));
    Add(Format(‘剩余空间: %f GB’,[d3/1024/1024/1024]));
end;

//声明:GetDriveType – 获取磁盘类型
GetDriveType(
lpRootPathName: PChar {磁盘根目录}
): UINT;
//返回值:
DRIVE_UNKNOWN     = 0; {未知}
DRIVE_NO_ROOT_DIR = 1; {可移动磁盘}
DRIVE_REMOVABLE   = 2; {软盘}
DRIVE_FIXED       = 3; {本地硬盘}
DRIVE_REMOTE      = 4; {网络磁盘}
DRIVE_CDROM       = 5; {CD-ROM}
DRIVE_RAMDISK     = 6; {RAM 磁盘}
GetLocalTime、SetLocalTime、SetSystemTime – 获取与设置系统时间

GetActiveWindow – 获取当前活动窗口的句柄 GetActiveWindow: HWND; {无参数; 返回当前活动窗口的句柄}

GetFocus: HWND; {无参数; 返回当前拥有焦点窗口的句柄}

GetParent – 获取指定窗口的父窗口句柄
GetParent(
hWnd: HWND {窗口句柄}
): HWND;     {返回父窗口句柄}

判断两个窗口是不是父子关系
IsChild(
hWndParent, hWnd: HWND {参数是两个窗口句柄, 父窗口在前}
): BOOL;

IsIconic、IsZoomed – 分别判断窗口是否已最小化、最大化
IsIconic(
hWnd: HWND {窗口句柄}
): BOOL;
IsZoomed(
hWnd: HWND {窗口句柄}
): BOOL;

MoveWindow – 改变窗口的位置与大小
MoveWindow(
hWnd: HWND;               {窗口句柄}
X, Y: Integer;            {位置}
nWidth, nHeight: Integer; {大小}
bRepaint: BOOL            {是否重绘}
): BOOL;

创建不规则窗体:
var
rgn: HRGN;
begin
rgn := CreateEllipticRgn(0, 0, Width, Height);
SetWindowRgn(Handle, rgn, True);
end;

模拟点击网页中的按钮
知道Name
WebBrowser1.OleObject.document.all.item(‘btnName’).click;
//WebBrowser1.OleObject.document.all.item(‘btnName’, 0).click;
知道ID
WebBrowser1.OleObject.document.getElementByID(‘btnID’).click;