您的位置:首页 > 编程语言 > Delphi

开发一个delphi写的桌面图标管理代码

2015-11-19 14:02 525 查看
参加工作了就很少有时间去玩delphi了,这个适合初学者看看,大神勿喷

工具 delhpi7.0    access数据库

原则win下有安装office就可用    当初不太熟悉sqlite所有没用这做数据库。

{*****************************************************************************
* 版本信息:
* 浅诺桌面管理工具v1.0
* 文件名称:
* UseShortcutKey.pas
* 内容摘要:
* 桌面快捷方式管理(分类及运行)
* 历史记录:
* 2013.1.28 created by xzj
* 大型修改:
* 2013.2.5 modified by xzj
* 快捷方式名称不显示快捷方式ID,相关功能做相应的修改,将ID存放在数组naID中
*
* 程序为作者原创,修改请保留作者信息,改后程序可发至作者邮箱共同参考、共同进步,
* 谢谢支持。
******************************************************************************}
unit UseShortcutKey;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, TntStdCtrls, jpeg, ExtCtrls, TntExtCtrls, TntForms,
ComCtrls, TntComCtrls, ImgList, DB, ADODB, Menus, TntMenus, Buttons, RzTray,
TntButtons, Spin, RzButton, Mask, RzEdit, RzBtnEdt, RzBmpBtn, RzCmboBx,
RzTabs, RzTrkBar, WinSkinStore, WinSkinData;
const
WM_MouseEnter = $B013;
WM_MouseLeave = $B014;
type
TFormUse = class(TForm)
imglogo: TTntImage;
lblName: TTntLabel;
lbl1: TTntLabel;
lbl2: TTntLabel;
tntscrlbxType: TTntScrollBox;
tntpmnType: TTntPopupMenu;
tmr1: TTimer;
con1: TADOConnection;
qryCmd: TADOQuery;
il1: TImageList;
ImageTxt: TImage;
ImageRAR: TImage;
ImageFiles: TImage;
ImageMDB: TImage;
ImageXLS: TImage;
ImageDOC: TImage;
ImagePPT: TImage;
Imagepsd: TImage;
ImagePhoto: TImage;
Imagepdf: TImage;
ImageDPR: TImage;
ImagePAS: TImage;
Imagedfm: TImage;
ImageDLL: TImage;
ImageWZ: TImage;
Image1: TImage;
Image2: TImage;
rztrycn1: TRzTrayIcon;
tntmntmAdd: TTntMenuItem;
tntpgcntrl1: TTntPageControl;
pg1: TTntTabSheet;
edtAdd: TTntEdit;
pg2: TTntTabSheet;
edtEdt: TTntEdit;
tntmntmqx: TTntMenuItem;
tntpmnPro: TTntPopupMenu;
tntmntmEdtPro: TTntMenuItem;
tntmntmDelPro: TTntMenuItem;
tntmntmTail: TTntMenuItem;
tntmntmList: TTntMenuItem;
tntmntmdefault: TTntMenuItem;
tntmntmN1: TTntMenuItem;
tntmntmWc: TTntMenuItem;
tntpmnOperbtn: TTntPopupMenu;
tntmntmEdit: TTntMenuItem;
tntmntmdelete: TTntMenuItem;
lbl3: TTntLabel;
edtnow: TTntEdit;
lbl4: TTntLabel;
tntmntmN2: TTntMenuItem;
tntmntmhide: TTntMenuItem;
N1: TTntMenuItem;
tntmntmdelall: TTntMenuItem;
Imagebat: TImage;
tntmntmdelalltype: TTntMenuItem;
tntmntmN3: TTntMenuItem;
tntcntrlbr1: TTntControlBar;
tntmntmSendLink: TTntMenuItem;
tntmntmN4: TTntMenuItem;
tntpmnPC: TTntPopupMenu;
btnPC: TRzMenuButton;
btn1: TRzShapeButton;
tntpmnMN: TTntPopupMenu;
tntmntmClose: TTntMenuItem;
tmr2: TTimer;
tntmntmAutoOpen: TTntMenuItem;
tntmntmSendAll: TTntMenuItem;
edtTime: TTntEdit;
tmr3: TTimer;
tmrRe: TTimer;
edtKeyNow: TTntEdit;
tmrsx: TTimer;
pnl1: TPanel;
grp1: TGroupBox;
qrySet: TADOQuery;
qryInit: TADOQuery;
tntpgcntrl2: TRzPageControl;
pg3: TRzTabSheet;
lvPro: TTntListView;
pg4: TRzTabSheet;
mmo1: TTntMemo;
pg5: TRzTabSheet;
tntpnl1: TTntPanel;
tntmntmN5: TTntMenuItem;
tntmntmexit: TTntMenuItem;
tntmntmHideZT: TTntMenuItem;
tntmntmHideV: TTntMenuItem;
grp2: TTntGroupBox;
lbl5: TTntLabel;
cbbFC: TRzColorComboBox;
lbl6: TTntLabel;
cbbFONTC: TRzColorComboBox;
cbbGC: TRzColorComboBox;
lbl7: TTntLabel;
lbl9: TTntLabel;
cbbEC: TRzColorComboBox;
cbbFT: TRzComboBox;
lbl8: TTntLabel;
lbl11: TTntLabel;
cbbHD: TRzComboBox;
cbbSH: TRzComboBox;
lbl10: TTntLabel;
lbl12: TTntLabel;
rztrckbr1: TRzTrackBar;
dlgFont1: TFontDialog;
lbl13: TTntLabel;
btn2: TRzButtonEdit;
skndt1: TSkinData;
sknstr1: TSkinStore;
procedure FormCreate(Sender: TObject);
procedure BtnTypeClick (Sender: TObject);
procedure LoadShortcutKey(Sender : TObject);
procedure tmr1Timer(Sender: TObject);
procedure edtAddKeyPress(Sender: TObject; var Key: Char);
procedure tntmntmAddClick(Sender: TObject);
procedure edtEdtKeyPress(Sender: TObject; var Key: Char);
procedure Openqry(var qry1 : TADOQuery; sqltxt : string);
procedure Execqry(var qry1 : TADOQuery; sqltxt : string);
procedure tntmntmqxClick(Sender: TObject);
procedure lvProDblClick(Sender: TObject);
procedure tntmntmTailClick(Sender: TObject);
procedure tntmntmListClick(Sender: TObject);
procedure tntmntmdefaultClick(Sender: TObject);
procedure tntmntmEdtProClick(Sender: TObject);
procedure tntmntmWcClick(Sender: TObject);
procedure LBWindowProc(var Message: TMessage);
procedure WMDROPFILES_L(var Msg: TMessage);
procedure tntmntmDelProClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure tntmntmEditClick(Sender: TObject);
procedure tntmntmdeleteClick(Sender: TObject);
procedure tntmntmhideClick(Sender: TObject);
procedure lvProMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure tntmntmdelallClick(Sender: TObject);
procedure lvProEdited(Sender: TObject; Item: TTntListItem;
var S: WideString);
procedure lvProKeyPress(Sender: TObject; var Key: Char);
procedure tntmntmdelalltypeClick(Sender: TObject);
procedure CreateLink(programPath,programArg,LinkPath,Descr : string);
procedure tntmntmSendLinkClick(Sender: TObject);
procedure GetSystemPath();
procedure MenuBtnOnClick(Sender : TObject);
procedure btn1Click(Sender: TObject);
procedure tntmntmCloseClick(Sender: TObject);
//procedure tmr2Timer(Sender: TObject);
procedure tntmntmAutoOpenClick(Sender: TObject);
procedure tntmntmSendAllClick(Sender: TObject);
procedure tmr3Timer(Sender: TObject);
procedure tmrReTimer(Sender: TObject);
procedure tmrsxTimer(Sender: TObject);
procedure cbbFCChange(Sender: TObject);
procedure cbbFONTCChange(Sender: TObject);
procedure cbbGCChange(Sender: TObject);
procedure cbbECChange(Sender: TObject);
procedure cbbFTChange(Sender: TObject);
procedure cbbHDChange(Sender: TObject);
procedure cbbSHChange(Sender: TObject);
procedure InitForm();
procedure AddInitForm();
procedure tntmntmexitClick(Sender: TObject);
procedure tntmntmHideZTClick(Sender: TObject);
procedure tntmntmHideVClick(Sender: TObject);
procedure rztrckbr1Change(Sender: TObject);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure imglogoMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure tntpnl1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure grp2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure tntpgcntrl2Change(Sender: TObject);
procedure btn2ButtonClick(Sender: TObject);
private
{ Private declarations }
abtnType: array[1..50] of TRzBitBtn; //分组按钮
anID : array[0..500] of Integer;
sActiveBtn : string; //当前活动的按钮
SYS_COLOR : TColor; //窗体颜色
FONT_COLOR : TColor; //字体颜色
GROUP_COLOR : TColor; //被选中的分组字体颜色
EDITING_COLOR : TColor; //修改时界面颜色
HIDE_DIRECTION : string; //窗体隐藏方向
sTypeLoadFlag : string; //类型加载标识(用于不重复加载)
procedure WMMouseEnter(var Msg: TMessage); message WM_MouseEnter;
procedure QNLoadType();
public
{ Public declarations }
end;

var
FormUse: TFormUse;
sPath: string;
sType: string;
hInNow : HKL; //当前输入法
keyValue : string; //按键查询
isEditing : Boolean; //是否是编辑状态
RWindowProc: TWndMethod;
LWindowProc: TWndMethod;
OldBtn : TRzBitBtn;
implementation
uses registry, shlobj, ActiveX, ComObj, ShellAPI;
{$R *.dfm}

{****************************************************************
* 过程名称: Openqry
* 功能描述: 数据库查询
* 参数说明: TADOQuery,string
* 返 回 值: 无
* 历史记录: 2013.1.28 created by xzj
*****************************************************************}
procedure TFormUse.Openqry(var qry1 : TADOQuery; sqltxt : string);
begin
with qry1 do
begin
Close;
sql.clear;
sql.add(sqltxt);
Open;
end;
end;

{****************************************************************
* 过程名称: Execqry
* 功能描述: 数据库操作
* 参数说明: TADOQuery,string
* 返 回 值: 无
* 历史记录: 2013.1.28 created by xzj
*****************************************************************}
procedure TFormUse.Execqry(var qry1 : TADOQuery; sqltxt : string);
begin
with qry1 do
begin
Close;
sql.clear;
sql.add(sqltxt);
ExecSQL;
end;
end;

{****************************************************************
* 过程名称: WMMouseEnter
* 功能描述: 鼠标碰到隐藏的窗体,窗体下拉
* 参数说明: TMessage
* 返 回 值: 无
* 历史记录: 2013.1.28 created by xzj
*****************************************************************}
procedure TFormUse.WMMouseEnter(var Msg: TMessage);
var iIndex : Integer;
begin
if (Top < 0) and (HIDE_DIRECTION = '向上隐藏') then
begin
//while(Top < 0) do
//begin
// iIndex := 10;
// Top := Top + 2;
// while(iIndex > 0) do
// begin
// iIndex := iIndex - 1;
// end;
//end;
To
197b1
p := 0;
//为保证下拉窗体后呈现在最前面
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE); //将窗体推到最前
//发现不取消效果更好
SetWindowPos(Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE); //然后取消窗体最前
end
else if (Left < 0) and (HIDE_DIRECTION = '向左隐藏') then
begin
Left := 0;
//为保证下拉窗体后呈现在最前面
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE); //将窗体推到最前
//发现不取消效果更好
SetWindowPos(Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE); //然后取消窗体最前
end
else if ((Left + Self.Width) > screen.Width) and (HIDE_DIRECTION = '向右隐藏') then
begin
Left := Screen.Width - Self.Width;
//为保证下拉窗体后呈现在最前面
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE); //将窗体推到最前
//发现不取消效果更好
SetWindowPos(Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE); //然后取消窗体最前
end
else if ((Top + Self.Height) > Screen.Height) and (HIDE_DIRECTION = '向下隐藏') then
begin
Top := Screen.Height - Self.Height;
//为保证下拉窗体后呈现在最前面
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE); //将窗体推到最前
//发现不取消效果更好
SetWindowPos(Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE); //然后取消窗体最前
end;
Tmr1.Enabled := True;
end;

{****************************************************************
* 过程名称: GetTempDirectory
* 功能描述: 取系统临时路径
* 参数说明: 无
* 返 回 值: string 路径
* 历史记录: 2013.1.28 created by xzj
*****************************************************************}
function GetTempDirectory: string;
var
TempDir: array[0..255] of Char;
begin
GetTempPath(255, @TempDir);
Result := StrPas(TempDir);

end;

{****************************************************************
* 过程名称: QNLoadType
* 功能描述: 加载类型选择按钮
* 参数说明: 无
* 返 回 值: 无
* 历史记录: 2013.1.28 created by xzj
*****************************************************************}
procedure TFormUse.QNLoadType();
var i, j,k,nRand : Integer;
bmpName : string;
begin
Randomize;
with qryCmd do
begin
Close;
SQL.Clear;
SQL.Add('select * from PRO_TYPE');
Open;
end;
//加载前释放所有内存,防止内存冲突
for k := 1 to 49 do
begin
if abtnType[k] <> nil then
begin
abtnType[k].Destroy;
abtnType[k] := nil;
end;
end;

nRand := Random(97) + 1;
qryCmd.First;
//默认让第一个按钮为‘所有程序’
abtnType[1] := TRzBitBtn.Create(Self);
abtnType[1].Height := 30;
abtnType[1].Width := tntscrlbxType.Width - 5;
abtnType[1].Top := 1;
abtnType[1].Left := tntscrlbxType.Left;
abtnType[1].Name := 'btn_0';
abtnType[1].Parent := tntscrlbxType;
abtnType[1].Caption := '所有程序';
abtnType[1].ParentColor := True;
abtnType[1].ParentFont := True;
bmpName := 'emotions\' + IntToStr(nRand) + 'fixed.bmp';
abtnType[1].Glyph.LoadFromFile(bmpName);
abtnType[1].OnClick := BtnTypeClick;
abtnType[1].Visible := True;
OldBtn := abtnType[1];
for i := 1 to qryCmd.RecordCount do
begin
nRand := Random(95) + 1;
abtnType[i + 1] := TRzBitBtn.Create(Self);
abtnType[i + 1].Height := 30;
abtnType[i + 1].Width := tntscrlbxType.Width - 5;
j := trunc(i / 1);
abtnType[i + 1].Top := 1 + (abtnType[i + 1].Height + 1) * j;
j := i mod 1;
abtnType[i + 1].Left := abtnType[i + 1].Width * (j);
abtnType[i + 1].Name := 'btn_' + inttostr(i + 1);
abtnType[i + 1].Parent := tntscrlbxType;
abtnType[i + 1].Caption := qryCmd.FieldByName('PRO_TYPE').Value;
abtnType[i + 1].ParentColor := True;
abtnType[i + 1].ParentFont := True;
abtnType[i + 1].PopupMenu := tntpmnOperbtn;
bmpName := 'emotions\' + IntToStr(nRand + 1) + 'fixed.bmp';
abtnType[i + 1].Glyph.LoadFromFile(bmpName);
abtnType[i + 1].OnClick := BtnTypeClick;
abtnType[i + 1].Visible := True;
//nNewTop := abtnType[i + 1].Top + 31;
qryCmd.next;
end;
tntpgcntrl1.Visible := False;
end;

{****************************************************************
* 过程名称: LoadShortcutKey
* 功能描述: 加载快捷方式
* 参数说明: Sender : TObject
* 返 回 值: 无
* 历史记录: 2013.1.28 created by xzj
*****************************************************************}
procedure TFormUse.LoadShortcutKey(Sender : TObject);
var
i : Integer;
lListItem: TListItem;
bmp: TBitmap;
sFilePath: string;
begin
qryCmd.First;
il1.Clear;
lvPro.Clear;

for i := 0 to qryCmd.RecordCount - 1 do
begin
lListItem := lvPro.Items.Add;
lListItem.Caption := Trim(qryCmd.fieldbyname('PRO_NAME').value);
lListItem.ImageIndex := i;
anID[lListItem.ImageIndex] := qryCmd.fieldbyname('ID').value;

//读取程序图标
sFilePath := qryCmd.FieldByName('PRO_PATH').Value;

if (LowerCase(ExtractFileExt(sFilePath))) = '' then
image1.Picture := ImageFiles.Picture
else if (LowerCase(ExtractFileExt(sFilePath))) = '.txt' then
image1.Picture := ImageTxt.Picture
else if ((LowerCase(ExtractFileExt(sFilePath))) = '.rar') or ((LowerCase(ExtractFileExt(sFilePath))) = '.zip') then
image1.Picture := ImageRAR.Picture
else if (LowerCase(ExtractFileExt(sFilePath))) = '.mdb' then
image1.Picture := ImageMDB.Picture
else if (LowerCase(ExtractFileExt(sFilePath))) = '.xls' then
image1.Picture := Imagexls.Picture
else if ((LowerCase(ExtractFileExt(sFilePath))) = '.doc')
or ((LowerCase(ExtractFileExt(sFilePath))) = '.docx') then
image1.Picture := Imagedoc.Picture
else if (LowerCase(ExtractFileExt(sFilePath))) = '.ppt' then
image1.Picture := Imageppt.Picture
else if (LowerCase(ExtractFileExt(sFilePath))) = '.pdf' then
image1.Picture := Imagepdf.Picture
else if (LowerCase(ExtractFileExt(sFilePath))) = '.psd' then
image1.Picture := Imagepsd.Picture
else if ((LowerCase(ExtractFileExt(sFilePath))) = '.jpg')
or ((LowerCase(ExtractFileExt(sFilePath))) = '.bmp')
or ((LowerCase(ExtractFileExt(sFilePath))) = '.jpeg')
or ((LowerCase(ExtractFileExt(sFilePath))) = '.gif')
or ((LowerCase(ExtractFileExt(sFilePath))) = '.cdr') then
image1.Picture := ImagePhoto.Picture
else if (LowerCase(ExtractFileExt(sFilePath))) = '.dpr' then
image1.Picture := Imagedpr.Picture
else if (LowerCase(ExtractFileExt(sFilePath))) = '.dfm' then
image1.Picture := Imagedfm.Picture
else if (LowerCase(ExtractFileExt(sFilePath))) = '.pas' then
image1.Picture := Imagepas.Picture
else if (LowerCase(ExtractFileExt(sFilePath))) = '.dll' then
image1.Picture := Imagedll.Picture
else if (LowerCase(ExtractFileExt(sFilePath))) = '.bat' then
image1.Picture := Imagebat.Picture
else if (LowerCase(ExtractFileExt(sFilePath))) = '.exe' then
image1.Picture.Icon.handle := ExtractIcon(hInstance, pchar(sFilePath), 0)
else
image1.Picture := Imagewz.Picture;

bmp := TBitmap.Create;
bmp.width := image1.Picture.Width;
bmp.height := image1.Picture.Height;
bmp.canvas.Draw(0, 0, image1.Picture.Graphic);
bmp.SaveToFile(GetTempDirectory + 'QNsystem.bmp');
image2.Picture.LoadFromFile(GetTempDirectory + 'QNsystem.bmp');
il1.Add(image2.Picture.Bitmap, image2.Picture.bitmap);

qryCmd.Next;
end;
qryCmd.Close;
end;

{****************************************************************
* 过程名称: BtnTypeClick
* 功能描述: 类型按钮响应
* 参数说明: Sender : TObject
* 返 回 值: 无
* 历史记录: 2013.1.28 created by xzj
* 修改描述: 2013.2.3 modified by xzj
* 添加按钮颜色改变功能,当前分组变为绿色
* 2013.2.17 modified by xzj
* 如果类型选择与先前一样则不重复加载快捷方式
* 2013.2.18 modified by xzj
* 修改2.17所修改的不重复加载,编辑后刷新问题
*****************************************************************}
procedure TFormUse.BtnTypeClick(Sender : TObject);
var sqltxt : string;
begin
keyValue := ''; //按钮直接查询要用的初始化
if ActiveControl.ClassType <> TRzBitBtn then
Exit;
if Copy(ActiveControl.Name,1,4) <> 'btn_' then
Exit;

sType := TRzBitBtn(Sender).Caption;
if (sTypeLoadFlag = sType) and (isEditing = false) then
begin
tntpgcntrl2.ActivePage := pg3;
Exit;
end;
//按钮颜色改变
sTypeLoadFlag := sType;
OldBtn.Font.Color := FONT_COLOR;
OldBtn.ParentFont := True;
TRzBitBtn(Sender).Font.Color := GROUP_COLOR;
OldBtn := TRzBitBtn(Sender);

if TRzBitBtn(Sender).Name = 'btn_0' then
begin
sqltxt := 'select * from PRO_LIST order by PRO_NAME';
end
else
begin
sqltxt := 'select * from PRO_LIST where PRO_TYPE = ''' + sType + ''' order by PRO_NAME';
end;
with qryCmd do
begin
Close;
SQL.Clear;
SQL.Add(sqltxt);
Open;
end;
sActiveBtn := sType;
edtnow.Text := sActiveBtn;
pg3.Caption := sActiveBtn;
LoadShortcutKey(Sender);
tntpgcntrl2.ActivePage := pg3;
end;

{****************************************************************
* 过程名称: FormCreate
* 功能描述: 数据库连接,加载分组
* 参数说明: Sender : TObject
* 返 回 值: 无
* 历史记录: 2013.1.29 created by xzj
*****************************************************************}
procedure TFormUse.FormCreate(Sender: TObject);
var
sDir, connTmp: string;
begin
getdir(0, sPath);
sDir := ExtractFilePath(Application.ExeName);
chDir(sDir); // 设置工作目录为程序目录。
SetCurrentDir(sDir);
connTmp := 'Provider=Microsoft.ACE.OLEDB.12.0;Data Source=' + sDir + '\LIST.accdb;Persist Security Info=False';

con1.ConnectionString := connTmp;
con1.Open;

TOP := 0;
LEFT := 0;
FormUse.Width := screen.Width div 2 - 20;
FormUse.Height := screen.Height - 32;
tntpgcntrl2.Align := alclient;
lvPro.Align := alclient;
InitForm();
QNLoadType; //加载类型按钮
end;

{****************************************************************
* 过程名称: tmr1Timer
* 功能描述: 鼠标不在软件界面时自动隐藏界面
* 参数说明: Sender : TObject
* 返 回 值: 无
* 历史记录: 2013.1.29 created by xzj
* 修改描述: 2013.2.1 modified by xzj
* 添加发送桌面快捷方式控制
*****************************************************************}
procedure TFormUse.tmr1Timer(Sender: TObject);
var
rc: TRECT;
pt: TPOINT;
begin
if isEditing = True then
begin
Exit;
end;
GetWindowRect(self.Handle, rc); //取窗体的矩形区域
GetCursorPos(pt); //取得当前鼠标所在位置
if (not PtInRect(rc, pt)) then //如果鼠标不在窗体范围内
begin
if (HIDE_DIRECTION = '向上隐藏') then //如果目前窗体正吸附在屏幕上沿,则上移隐藏窗体
begin
Top := 0 - Height + 2;
end
else if (HIDE_DIRECTION = '向下隐藏') then
begin
Top := Screen.Height - 2;
end
else if (HIDE_DIRECTION = '向左隐藏') then
begin
Left := 0 - Self.Width + 2;
Top := 0;
end
else
begin
Left := Screen.Width - 2;
Top := 0;
end;
Tmr1.Enabled := False; //窗体隐藏后定时器关闭
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE); //将窗体推到最前
end;
end;

{****************************************************************
* 过程名称: edtAddKeyPress
* 功能描述: 添加新分组,使用回车键按钮事件来修改数据库内容
* 参数说明: Sender: TObject; var Key: Char
* 返 回 值: 无
* 历史记录: 2013.1.29 created by xzj
* 修改描述: 2013.2.1 modified by xzj
* 控制分组名不为空
*****************************************************************}
procedure TFormUse.edtAddKeyPress(Sender: TObject; var Key: Char);
var sqltxt : string;
begin
if Key = #13 then
begin
if edtAdd.Text = '' then
begin
ShowMessagePos('类名不能为空',(Self.Left + 250),(Self.Top + 300));
exit;
end;

sqltxt := 'select * from PRO_TYPE where PRO_TYPE = ''' + edtAdd.Text + ''' ';
with qryCmd do
begin
Close;
SQL.Clear;
SQL.Add(sqltxt);

Open;
end;
if(qryCmd.RecordCount > 0) then
begin
ShowMessagePos('已存在名为' + edtAdd.Text + '的类别!',(Self.Left + 250),(Self.Top + 300));
exit;
end;
sqltxt := 'insert into PRO_TYPE(PRO_TYPE) values(''' + edtAdd.Text + ''') ';
with qryCmd do
begin
Close;
SQL.Clear;
SQL.Add(sqltxt);

ExecSQL;
end;
edtAdd.Text := '按回车键确认';
QNLoadType; //重新加载分组
end;
end;

{****************************************************************
* 过程名称: tntmntmAddClick
* 功能描述: 添加新分组,显示输入框
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.1.29 created by xzj
*****************************************************************}
procedure TFormUse.tntmntmAddClick(Sender: TObject);
begin
tntpgcntrl1.visible := True;
tntpgcntrl1.activepage := pg1;
edtAdd.SetFocus;
end;

{****************************************************************
* 过程名称: edtEdtKeyPress
* 功能描述: 修改分组,使用回车键按钮事件来修改数据库内容
* 参数说明: Sender: TObject; var Key: Char
* 返 回 值: 无
* 历史记录: 2013.1.29 created by xzj
*****************************************************************}
procedure TFormUse.edtEdtKeyPress(Sender: TObject; var Key: Char);
var sqltxt,sqlEdtType,sqlEdtList : string;
begin
if sActiveBtn = '' then
begin
ShowMessagePos('请选中要修改的类别!',(Self.Left + 250),(Self.Top + 300));
exit;
end;
sqlEdtType := 'update PRO_TYPE set PRO_TYPE = ''' + edtEdt.Text +''' where PRO_TYPE = ''' + sActiveBtn + ''' ';
sqlEdtList := 'update PRO_LIST set PRO_TYPE = ''' + edtEdt.Text +''' where PRO_TYPE = ''' + sActiveBtn + ''' ';
if Key = #13 then
begin
if edtEdt.Text = '' then
begin
ShowMessagePos('类名不能为空',(Self.Left + 250),(Self.Top + 300));
exit;
end;
sqltxt := 'select * from PRO_TYPE where PRO_TYPE = ''' + edtEdt.Text + ''' ';
Openqry(qrycmd,sqltxt);
if(qryCmd.RecordCount > 0) then
begin
ShowMessagePos('已存在名为' + edtEdt.Text + '的类别!',(Self.Left + 250),(Self.Top + 300));
exit;
end
else
begin
Execqry(qryCmd,sqlEdtType);
Execqry(qrycmd,sqlEdtList);
end;
edtAdd.Text := '按回车键确认';
QNLoadType; //重新加载分组
end;
end;

{****************************************************************
* 过程名称: tntmntmqxClick
* 功能描述: 取消操作,隐藏添加和修改的page
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.1.29 created by xzj
*****************************************************************}
procedure TFormUse.tntmntmqxClick(Sender: TObject);
begin
tntpgcntrl1.visible := False;
end;

{****************************************************************
* 过程名称: lvProDblClick
* 功能描述: 双击快捷方式运行相应的程序
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.1.30 created by xzj
* 修改描述:
* 2013.1.31 modified by xzj
* 处于编辑状态不让运行程序
*****************************************************************}
procedure TFormUse.lvProDblClick(Sender: TObject);
var sActive,sqltxt : string;
begin

if not Assigned(lvPro.Selected) then //没有选中快捷方式,运行无效
begin
Exit;
end
else if isEditing = True then
begin
ShowMessagePos('现在处于编辑状态,请退出编辑',(Self.Left + 250),(Self.Top + 300));
exit;
end
else
begin
//获取被选中的快捷方式在数据库中对应的ID
sActive := IntToStr(anID[lvPro.Selected.ImageIndex]);
//查询对应的快捷方式记录
sqltxt := 'select * from PRO_LIST where ID = ' + sActive + '';
Openqry(qryCmd,sqltxt);
//找到记录中的快捷方式路径,打开.exe文件
ShellExecute(handle, 'open', pchar(Trim(qryCmd.FieldByName('PRO_PATH').Value)), nil, nil, SW_SHOWNORMAL);

//运行程序后隐藏窗体
if (HIDE_DIRECTION = '向上隐藏') then
begin
Top := 0 - Height + 2;
end
else if (HIDE_DIRECTION = '向下隐藏') then
begin
Top := Screen.Height - 2;
end
else if (HIDE_DIRECTION = '向左隐藏') then
begin
Left := 0 - Self.Width + 2;
Top := 0;
end
else
begin
Left := Screen.Width - 2;
Top := 0;
end;
//窗体隐藏后定时器关闭
Tmr1.Enabled := False;
end;
end;

{****************************************************************
* 过程名称: tntmntmTailClick
* 功能描述: 修改查看方式为‘详情’
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.1.30 created by xzj
*****************************************************************}
procedure TFormUse.tntmntmTailClick(Sender: TObject);
begin
lvPro.ViewStyle := vsSmallIcon;
tntmntmTail.Checked := True;
tntmntmList.Checked := False;
tntmntmdefault.Checked := False;
end;

{****************************************************************
* 过程名称: tntmntmListClick
* 功能描述: 修改查看方式为‘列表’
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.1.30 created by xzj
*****************************************************************}
procedure TFormUse.tntmntmListClick(Sender: TObject);
begin
lvPro.ViewStyle := vsList;
tntmntmTail.Checked := False;
tntmntmList.Checked := True;
tntmntmdefault.Checked := False;
end;

{****************************************************************
* 过程名称: tntmntmdefaultClick
* 功能描述: 修改查看方式为‘默认’
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.1.30 created by xzj
*****************************************************************}
procedure TFormUse.tntmntmdefaultClick(Sender: TObject);
begin
lvPro.ViewStyle := vsIcon;
tntmntmTail.Checked := False;
tntmntmList.Checked := False;
tntmntmdefault.Checked := True;
end;

{****************************************************************
* 过程名称: tntmntmEdtProClick
* 功能描述: 进入编辑状态,做好编辑准备
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.1.30 created by xzj
*****************************************************************}
procedure TFormUse.tntmntmEdtProClick(Sender: TObject);
begin
//防止用户多次点击编辑按钮
if isEditing = True then
begin
Exit;
end;
tntmntmEdtPro.Checked := True;
//标示进入编辑状态
isEditing := True;
//界面变色,提示用户现在是编辑状态
lvPro.Color := EDITING_COLOR;
if tntmntmEdtPro.Checked = True then
begin
//快捷方式进入可编辑状态
lvPro.ReadOnly := False;
//添加快捷方式时使用拖曳方式
LWindowProc := lvPro.WindowProc;
lvPro.WindowProc := LBWindowProc;
DragAcceptFiles(lvPro.Handle, True);
//删除按钮可用
tntmntmDelPro.Enabled := True;
//完成按钮可用
tntmntmWc.Enabled := True;
//删除所有按钮可用
tntmntmdelall.Enabled := True;
end;
if tntmntmhide.Checked = True then
tntmntmhide.Click;
tntmntmhide.Enabled := False;
end;

{****************************************************************
* 过程名称: tntmntmWcClick
* 功能描述: 编辑完成,做的与进入编辑状态相反
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.1.30 created by xzj
*****************************************************************}
procedure TFormUse.tntmntmWcClick(Sender: TObject);
begin
lvPro.Color := SYS_COLOR;
lvPro.ParentColor := True;
//lvPro.ParentFont := True;
isEditing := False;
tntmntmEdtPro.Checked := False;
tntmntmDelPro.Enabled := False;
tntmntmWc.Enabled := False;
tntmntmdelall.Enabled := False;
lvPro.ReadOnly := True;
tntmntmhide.Enabled := True;
//关闭拖曳
lvPro.WindowProc := LWindowProc;
DragAcceptFiles(lvPro.Handle, False);
end;

{****************************************************************
* 过程名称: tntmntmEdtProClick
* 功能描述: 取快捷链接的目标文件
* 参数说明: const linkname: string
* 返 回 值: string
* 历史记录: 2013.1.30 created by xzj
*****************************************************************}
function ExeFromLink(const linkname: string): string;
var
link: IShellLink;
storage: IPersistFile;
filedata: TWin32FindData;
buf: array[0..MAX_PATH] of Char;
widepath: WideString;
begin
OleCheck(CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, IShellLink, link));
OleCheck(link.QueryInterface(IPersistFile, storage));
widepath := linkname;
Result := '无效的快捷方式!快捷链接已失效!';
if Succeeded(storage.Load(@widepath[1], STGM_READ)) then
if Succeeded(link.Resolve(GetActiveWindow, SLR_NOUPDATE)) then
if Succeeded(link.GetPath(buf, sizeof(buf), filedata, SLGP_UNCPRIORITY)) then
Result := buf;
storage := nil;
link := nil;
end;

{****************************************************************
* 过程名称: LBWindowProc
* 功能描述: 辅助拖曳
* 参数说明: Message: TMessage
* 返 回 值: 无
* 历史记录: 2013.1.30 created by xzj
*****************************************************************}
procedure TFormUse.LBWindowProc(var Message: TMessage);
begin
if Message.Msg = WM_DROPFILES then
WMDROPFILES_l(Message);
LWindowProc(Message);
end;

{****************************************************************
* 过程名称: WMDROPFILES_L
* 功能描述: 添加快捷方式
* 参数说明: Message: TMessage
* 返 回 值: 无
* 历史记录: 2013.1.30 created by xzj
*****************************************************************}
procedure TFormUse.WMDROPFILES_L(var Msg: TMessage);
var
pcFileName: PChar;
i, iSize, iFileCount: integer;
v_ps: string;
sCutPath : string;
sCutName : string;
sqltxt : string;
begin
pcFileName := '';
iFileCount := DragQueryFile(Msg.wParam, $FFFFFFFF, pcFileName, 255);
for i := 0 to iFileCount - 1 do
begin
iSize := DragQueryFile(Msg.wParam, i, nil, 0) + 1;
pcFileName := StrAlloc(iSize);
DragQueryFile(Msg.wParam, i, pcFileName, iSize);
// if FileExists(pcFileName) then //判断是否存在
v_ps := pcFileName;

StrDispose(pcFileName);
end;
DragFinish(Msg.wParam);

//Delphi取快捷方式的目标路径
if LowerCase(ExtractFileExt(v_ps)) = '.lnk' then //判断是否为快捷后缀文件
sCutPath := ExeFromLink(v_ps)
else
sCutPath := LowerCase(v_ps);
sCutName := ExtractFilename(sCutPath);
sqltxt := 'insert into PRO_LIST(PRO_TYPE,PRO_NAME,PRO_PATH) '
+ 'values(''' + sActiveBtn + ''', ''' + copy(sCutName, 1, pos(ExtractFileExt(sCutName), sCutName) - 1) + ''', ''' + sCutPath + ''') ';
Execqry(qryCmd,sqltxt);
//使用鼠标移动事件刷新
lvPro.Tag := 1;
end;

{****************************************************************
* 过程名称: tntmntmDelProClick
* 功能描述: 删除快捷方式
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.1.30 created by xzj
*****************************************************************}
procedure TFormUse.tntmntmDelProClick(Sender: TObject);
var sqltxt : string;
begin
if not Assigned(lvPro.Selected) then
begin
Exit;
end;

sqltxt := 'delete from PRO_LIST where ID = ' + IntToStr(anID[lvPro.Selected.ImageIndex]) + ' ';
Execqry(qryCmd,sqltxt);
//使用鼠标移动事件刷新
lvPro.Tag := 1;
end;

{****************************************************************
* 过程名称: FormShow
* 功能描述: 布置进入界面初始状态
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.1.30 created by xzj
* 修改描述: 2013.2.1 modified by xzj
* 如果本程序开机自启动,则菜单按钮开机自启动选中
* 2013.2.21 modified by xzj
* 添加隐藏项的初始化
*****************************************************************}
procedure TFormUse.FormShow(Sender: TObject);
var
reg : TRegistry;
isExist : Boolean;
begin
ActiveControl := abtnType[1];
abtnType[1].click;
tntpgcntrl2.ActivePage := pg3;
pg3.Caption := sActiveBtn;
rztrycn1.Hint := '浅诺桌面管理工具v1.0';
GetSystemPath();

Reg := Tregistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run', True);
isExist := reg.ValueExists('浅诺桌面管理工具v1.0');
if isExist = True then
begin
tntmntmAutoOpen.Checked := True;
end
else
begin
tntmntmAutoOpen.Checked := False;
end;

lblName.Font.Size := 20;
AddInitForm();
//skndt1.LoadFromCollection(sknstr1,4);
//skndt1.Active := True;
end;

{****************************************************************
* 过程名称: tntmntmEditClick
* 功能描述: 显示修改分组框
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.1.30 created by xzj
*****************************************************************}
procedure TFormUse.tntmntmEditClick(Sender: TObject);
begin
tntpgcntrl1.visible := True;
pg2.Visible := True;
tntpgcntrl1.activepage := pg2;
pg1.Visible := False;
edtnow.Text := sActiveBtn;
edtEdt.SetFocus;
end;

{****************************************************************
* 过程名称: tntmntmdeleteClick
* 功能描述: 删除已选中分组
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.1.30 created by xzj
*****************************************************************}
procedure TFormUse.tntmntmdeleteClick(Sender: TObject);
var sqltxt : string;
begin
if Application.MessageBox(System.Pchar('是否要删除' + sActiveBtn + '?'), '询问', 1 + 32) = id_OK then
begin
sqltxt := 'delete from PRO_TYPE where PRO_TYPE = ''' + sActiveBtn + ''' ';

with qryCmd do
begin
Close;
SQL.Clear;
SQL.Add('select * from PRO_LIST where PRO_TYPE = ''' + sActiveBtn + ''' ');
Open;

if IsEmpty then
begin
Close;
SQL.Clear;
SQL.Add(sqltxt);
ExecSQL;
end
else
begin
ShowMessagePos('要删除的类别下有程序,不可删除!',(Self.Left + 250),(Self.Top + 300));
end;
end;
QNLoadType;
ActiveControl := abtnType[1];
abtnType[1].Click;
pg3.Caption := abtnType[1].Caption;
end;
end;

{****************************************************************
* 过程名称: tntmntmhideClick
* 功能描述: 显示和隐藏分组
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.1.30 created by xzj
*****************************************************************}
procedure TFormUse.tntmntmhideClick(Sender: TObject);
var sqltxt : string;
begin
if tntmntmhide.Checked = True then
begin
tntmntmhide.Checked := False;
tntscrlbxType.Visible := True;
sqltxt := 'update PRO_SET set SHOW_TYPE = True where ID = 1 ';
end
else
begin
tntmntmhide.Checked := True;
tntscrlbxType.Visible := False;
sqltxt := 'update PRO_SET set SHOW_TYPE = False where ID = 1 ';
end;
Execqry(qryCmd,sqltxt);
if tntmntmTail.Checked = True then
begin
tntmntmList.Click;
tntmntmTail.Click;
end
else if tntmntmList.Checked = True then
begin
tntmntmTail.Click;
tntmntmList.Click;
end
else
begin
tntmntmList.Click;
tntmntmdefault.Click;
end;
end;

{****************************************************************
* 过程名称: lvProMouseMove
* 功能描述: 显示操作帮助,修改快捷方式后刷新
* 参数说明: Sender: TObject; Shift: TShiftState; X,Y: Integer
* 返 回 值: 无
* 历史记录: 2013.1.31 created by xzj
* 修改描述: 2013.2.21 modified by xzj
* 添加鼠标拖动窗体效果
*****************************************************************}
procedure TFormUse.lvProMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var i : Integer;
begin
if isEditing = False then
begin
lvPro.Hint := '双击图标可打开文件';
end
else
begin
lvPro.Hint := '将快捷方式拖入本框即可添加';

//修改快捷方式后刷新
if(lvPro.Tag = 1) then
begin
for i := 1 to 49 do
begin
if abtnType[i] <> nil then
begin
if abtnType[i].Caption = sActiveBtn then
begin
ActiveControl := abtnType[i];
abtnType[i].Click;
Break;
end;
end;
end;
lvPro.Tag := 0;
end;

end;
lvPro.ShowHint := True;
{
//获取当前输入法
hInNow := GetKeyboardLayout(0);
for i := 0 to Screen.Imes.Count - 1 do
begin
if HKL(Screen.Imes.Objects[i]) = hInNow then
begin
//ShowMessage(Screen.Imes.Strings[i]);
Break;
end;
end;
}
//拖动窗体
if (ssleft in Shift) then
begin
ReleaseCapture;
Perform(WM_syscommand, $F012, 0);
end;
end;

{****************************************************************
* 过程名称: tntmntmdelallClick
* 功能描述: 删除所有的快捷方式,并初始化数据库表
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.1.31 created by xzj
*****************************************************************}
procedure TFormUse.tntmntmdelallClick(Sender: TObject);
var sqltxt : string;
begin
if Application.MessageBox(System.Pchar('是否要删除所有程序?'), '询问', 1 + 32) = id_OK then
begin
sqltxt := 'delete from PRO_LIST';
Execqry(qryCmd,sqltxt);
sqltxt := 'Alter table[PRO_LIST] Alter column[ID] counter(1,1) ';
Execqry(qryCmd,sqltxt);
lvPro.Clear;
end;
end;

{****************************************************************
* 过程名称: tntmntmdelalltypeClick
* 功能描述: 删除所有的分组,并初始化数据库表
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.1.31 created by xzj
*****************************************************************}
procedure TFormUse.tntmntmdelalltypeClick(Sender: TObject);
var sqltxt : string;
begin
if Application.MessageBox(System.Pchar('是否要删除所有分组?'), '询问', 1 + 32) = id_OK then
begin
sqltxt := 'select * from PRO_LIST';
Openqry(qryCmd, sqltxt);
if qryCmd.IsEmpty then
begin
sqltxt := 'delete from PRO_TYPE';
Execqry(qryCmd,sqltxt);
sqltxt := 'Alter table[PRO_TYPE] Alter column[ID] counter(1,1) ';
Execqry(qryCmd,sqltxt);
lvPro.Clear;
end
else
begin
ShowMessagePos('还有快捷方式,不可做‘删除所有’操作',(Self.Left + 250),(Self.Top + 300));
end;
end;
QNLoadType;
ActiveControl := abtnType[1];
abtnType[1].Click;
pg3.Caption := abtnType[1].Caption;
end;

{****************************************************************
* 过程名称: lvProEdited
* 功能描述: 修改快捷方式名称
* 参数说明: Sender: TObject; Item: TTntListItem;var S: WideString
* 其中S就是修改后的名称
* 返 回 值: 无
* 历史记录: 2013.1.31 created by xzj
*****************************************************************}
procedure TFormUse.lvProEdited(Sender: TObject; Item: TTntListItem;
var S: WideString);
var sActiveID,sqltxt : string;
begin
//lvPro.Tag := 1;
sActiveID := IntToStr(anID[lvPro.Selected.ImageIndex]);
sqltxt := 'update PRO_LIST set PRO_NAME = ''' + S + ''' where ID = ' + sActiveID + ' ';
Execqry(qryCmd,sqltxt);
end;

{****************************************************************
* 过程名称: Get_HZPY_First
* 功能描述: 获取汉字拼音首字母
* 参数说明: hz : string
* 返 回 值: Char
* 历史记录: 2013.1.31 created by xzj
*****************************************************************}
function Get_HZPY_First(hz : string) : Char;
begin
case WORD(hz[1])shl 8 + WORD(hz[2]) of
$B0A1..$B0C4 : Result := 'a';
$B0C5..$B2C0 : Result := 'b';
$B2C1..$B4ED : Result := 'c';
$B4EE..$B6E9 : Result := 'd';
$B6EA..$B7A1 : Result := 'e';
$B7A2..$B8C0 : Result := 'f';
$B8C1..$B9FD : Result := 'g';
$B9FE..$BBF6 : Result := 'h';
$BBF7..$BFA5 : Result := 'j';
$BFA6..$C0AB : Result := 'k';
$C0AC..$C2E7 : Result := 'l';
$C2E8..$C4C2 : Result := 'm';
$C4C3..$C5B5 : Result := 'n';
$C5B6..$C5BD : Result := 'o';
$C5BE..$C6D9 : Result := 'p';
$C6DA..$C8BA : Result := 'q';
$C8BB..$C8F5 : Result := 'r';
$C8F6..$CBF9 : Result := 's';
$CBFA..$CDD9 : Result := 't';
$CDDA..$CEF3 : Result := 'w';
$CEF4..$D1B8 : Result := 'x';
$D1B9..$D4D0 : Result := 'y';
$D4D1..$D7F9 : Result := 'z';
else
//传入的为数字或字母则原样返回
Result := hz[1];
end;
end;

{****************************************************************
* 过程名称: lvProKeyPress
* 功能描述: 按键之间查找
* 参数说明: Sender: TObject; var Key: Char
* 返 回 值: 无
* 历史记录: 2013.1.31 created by xzj
*****************************************************************}
procedure TFormUse.lvProKeyPress(Sender: TObject; var Key: Char);
var sActiveName,sSelect : string;
i,j : Integer;
nIsReg : Boolean; //对比是否相等
begin
if isEditing = True then
begin
Exit;
end;
nIsReg := False;
keyValue := keyValue + Key;
//回车键运行程序
if Key = #13 then
begin
lvProDblClick(Sender);
end
else
begin
tmrRe.Enabled := True; //打开计时器

for i := 0 to lvPro.Items.Count - 1 do
begin
for j := 0 to Length(lvPro.Items.Item[i].Caption) do
begin
sActiveName := Copy(lvPro.Items.Item[i].Caption,j + 1,1);
if(sActiveName = '') then
begin
Break;
end;
sSelect := sSelect + LowerCase(Get_HZPY_First(sActiveName));
if(sSelect = keyValue) then
begin
nIsReg := True;
lvPro.Items.Item[i].Selected := True;
Break;
end;
//长度超出所输入的字母,直接退出循环,优化
if(Length(sSelect) > Length(keyValue)) then
begin
Break;
end;
end;
if(sSelect <> KeyValue) then
begin
sSelect := '';
end;
if nIsReg then
begin
break;
end;
end;
end;

if nIsReg = False then
begin
keyValue := '';
end;
end;

{****************************************************************
* 过程名称: CreateLink
* 功能描述: 创建桌面快捷方式
* 参数说明: programPath:目标文件全路径 programArg:目标文件参数
* LinkPath:快捷方式全路径 Descr:快捷方式描述
* 返 回 值: 无
* 历史记录: 2013.2.1 created by xzj
****************************************************************}
procedure TFormUse.CreateLink(programPath,programArg,LinkPath,Descr : string);
var
AnObj : IUnknown;
ShellLink : IShellLink;
AFile : IPersistFile;
FileName : WideString;
begin
if UpperCase(ExtractFileExt(LinkPath)) <> '.LNK' then
begin
raise Exception.Create('快捷方式无效!');
end;
try
OleInitialize(nil);
AnObj := CreateComObject(CLSID_ShellLink);
ShellLink := AnObj as IShellLink;
AFile := AnObj as IPersistFile;
ShellLink.SetPath(PChar(programPath));
ShellLink.SetArguments(PChar(programArg));
ShellLink.SetWorkingDirectory(PChar(ExtractFilePath(programPath)));
ShellLink.SetDescription(PChar(Descr));
FileName := LinkPath;
AFile.Save(PWChar(FileName),True);
finally
OleUninitialize;
end;
end;

{****************************************************************
* 过程名称: tntmntmSendLinkClick
* 功能描述: 发送桌面快捷方式响应
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.2.1 created by xzj
****************************************************************}
procedure TFormUse.tntmntmSendLinkClick(Sender: TObject);
var
tmp : array[0..MAX_PATH] of Char;
pitem : PITEMIDLIST;
DeskDir : string;
sSelectID : string;
sqltxt : string;
begin
//获取桌面路径
SHGetSpecialFolderLocation(Handle,CSIDL_DESKTOP,pitem);
SHGetPathFromIDList(pitem,tmp);
DeskDir := string(tmp);
if Length(DeskDir) > 3 then
begin
DeskDir := DeskDir + '\';
end;
if not Assigned(lvPro.Selected) then
begin
CreateLink(ParamStr(0),'',DeskDir + Application.Title + '.lnk','');
end
else
begin
//获取当前获焦的快捷方式ID
sSelectID := IntToStr(anID[lvPro.Selected.ImageIndex]);
//获取当前获焦的快捷方式名称
sqltxt := 'select * from PRO_LIST where ID = ' + sSelectID + ' ';
Openqry(qryCmd, sqltxt);
//发送桌面快捷方式
CreateLink(qryCmd.fieldbyname('PRO_PATH').AsString,'',DeskDir + lvPro.Selected.Caption + '.lnk','');
end;
end;

{****************************************************************
* 过程名称: tntmntmSendAllClick
* 功能描述: 发送当前分组下的所有桌面快捷方式到桌面
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.2.2 created by xzj
****************************************************************}
procedure TFormUse.tntmntmSendAllClick(Sender: TObject);
var
tmp : array[0..MAX_PATH] of Char;
pitem : PITEMIDLIST;
DeskDir : string;
sqltxt : string;
i : Integer;
begin
//获取桌面路径
SHGetSpecialFolderLocation(Handle,CSIDL_DESKTOP,pitem);
SHGetPathFromIDList(pitem,tmp);
DeskDir := string(tmp);
if Length(DeskDir) > 3 then
begin
DeskDir := DeskDir + '\';
end;
if sActiveBtn = '所有程序' then
begin
sqltxt := 'select * from PRO_LIST order by ID';
end
else
begin
sqltxt := 'select * from PRO_LIST where PRO_TYPE = ''' + sActiveBtn + ''' order by ID ';
end;
Openqry(qryCmd,sqltxt);
qryCmd.First;
for i := 0 to qryCmd.RecordCount - 1 do
begin
//发送桌面快捷方式
CreateLink(qryCmd.fieldbyname('PRO_PATH').AsString,'',DeskDir + qryCmd.fieldbyname('PRO_NAME').AsString + '.lnk','');
qryCmd.Next;
end;
end;

{****************************************************************
* 过程名称: GetSystemPath
* 功能描述: 加载系统盘符
* 参数说明: 无
* 返 回 值: 无
* 历史记录: 2013.2.1 created by xzj
****************************************************************}
procedure TFormUse.GetSystemPath();
var
i : Integer;
nRand : Integer;
newMenu : TMenuItem;
str : string;
nRes : Integer;
begin
Randomize;
for i := 65 to 90 do
begin
nRes := GetDriveType(PChar(Chr(i) + ':\'));
if(nRes = 2) or (nRes = 3) then
begin
nRand := Random(97) + 1;
str := Char(i);
newMenu := TMenuItem.Create(self);
newMenu.Caption := str + '盘';
newMenu.Bitmap.LoadFromFile('emotions\' + IntToStr(nRand) + 'fixed.bmp');
newMenu.Name := str;
newMenu.OnClick := MenuBtnOnClick;
tntpmnPC.Items.Add(newMenu);
end;
end;
end;

{****************************************************************
* 过程名称: MenuBtnOnClick
* 功能描述: 盘符按钮响应事件
* 参数说明: 无
* 返 回 值: 无
* 历史记录: 2013.2.1 created by xzj
****************************************************************}
procedure TFormUse.MenuBtnOnClick(Sender : TObject);
var
nClickBtn : string;
begin
nClickBtn := TMenuItem(Sender).Caption;
nClickBtn := Copy(nClickBtn,1,1);
nClickBtn := nClickBtn + ':\';

//打开指定路径
ShellExecute(handle, 'open', pchar(nClickBtn), nil, nil, SW_SHOWNORMAL);
//运行程序后隐藏窗体
if (HIDE_DIRECTION = '向上隐藏') then
begin
Top := 0 - Height + 2;
end
else if (HIDE_DIRECTION = '向下隐藏') then
begin
Top := Screen.Height - 2;
end
else if (HIDE_DIRECTION = '向左隐藏') then
begin
Left := 0 - Self.Width + 2;
Top := 0;
end
else
begin
Left := Screen.Width - 2;
Top := 0;
end;
//窗体隐藏后定时器关闭
Tmr1.Enabled := False;
end;

{****************************************************************
* 过程名称: btn1Click
* 功能描述: 关闭计算机
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.2.1 created by xzj
****************************************************************}
procedure TFormUse.btn1Click(Sender: TObject);
begin
if Application.MessageBox(System.Pchar('关闭计算机?'), '询问', 1 + 32) = id_OK then
begin
ShellExecute(Handle,'open','shutdown.exe','-f -s -t 0', nil, SW_HIDE);
end;
end;

{****************************************************************
* 过程名称: tntmntmCloseClick
* 功能描述: 关闭程序
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.2.1 created by xzj
****************************************************************}
procedure TFormUse.tntmntmCloseClick(Sender: TObject);
begin
close;
end;

{****************************************************************
* 过程名称: tmr2Timer
* 功能描述: 标签变色,美化界面
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.2.1 created by xzj
****************************************************************}
{
procedure TFormUse.tmr2Timer(Sender: TObject);
var
sColor : array[1..10] of Tcolor;
i : Integer;
begin
Randomize;
sColor[1] := clYellow;
sColor[2] := clLime;
sColor[3] := clPurple;
sColor[4] := clMaroon;
sColor[5] := clGreen;
sColor[6] := clAqua;
sColor[7] := clWhite;
sColor[8] := clBlue;
sColor[9] := clInactiveCaption;
sColor[10] := clRed;
i := Random(10) + 1;
lblName.Font.Color := sColor[i];
i := Random(10) + 1;
lbl1.Font.Color := sColor[i];
btn1.Font.Color := sColor[i];
i := Random(10) + 1;
lbl2.Font.Color := sColor[i];
btnPC.Font.Color := sColor[i];

//i := Random(10) + 1;
//if (i = 7) or (sActiveBtn = '所有程序') then
// Exit;
//lvPro.Font.Color := clRed;
//tntscrlbxType.Font.Color := clRed;

end;
}
{****************************************************************
* 过程名称: tntmntmAutoOpenClick
* 功能描述: 开机自启动
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.2.1 created by xzj
****************************************************************}
procedure TFormUse.tntmntmAutoOpenClick(Sender: TObject);
var
reg: tregistry;
begin
//把程序写入到注册表的启动中
if not tntmntmAutoOpen.Checked then
begin
Reg := Tregistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
try

reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run', True);
Reg.WriteString('浅诺桌面管理工具v1.0', ExtractFilePath(Application.ExeName) + 'QnDeskMng.exe');
tntmntmAutoOpen.Checked := True;
finally
Reg.closekey;
reg.Free;
end;
end
else
begin
Reg := Tregistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
try
reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run', True);
Reg.DeleteValue('浅诺桌面管理工具v1.0');
tntmntmAutoOpen.Checked := False;
finally
Reg.closekey;
reg.Free;
end;
end;
end;

{****************************************************************
* 过程名称: tmr3Timer
* 功能描述: 显示当前时间
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.2.2 created by xzj
****************************************************************}
procedure TFormUse.tmr3Timer(Sender: TObject);
begin
edtTime.Text := FormatDateTime('yyyy年mm月dd日hh时nn分ss秒',Now());
end;

{****************************************************************
* 过程名称: tmrReTimer
* 功能描述: 刷新当前键值
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.2.2 created by xzj (解决按键查询的键值更新问题)
****************************************************************}
procedure TFormUse.tmrReTimer(Sender: TObject);
begin
keyValue := '';

//关闭计时器
tmrRe.Enabled := False;
end;

{****************************************************************
* 过程名称: tmrsxTimer
* 功能描述: 不显示任务栏图标,没有选中快捷方式不让发送桌面快捷方式
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.2.2 created by xzj
* 修改记录: 2013.2.17 modified by xzj
* 窗体在隐藏状态时将窗体推到最前
****************************************************************}
procedure TFormUse.tmrsxTimer(Sender: TObject);
begin
//程序不显示任务栏
ShowWindow(Application.Handle,SW_HIDE);

//没有选中快捷方式不让发送桌面快捷方式
if not Assigned(lvPro.Selected) then
begin
tntmntmSendLink.Enabled := False;
end
else
begin
tntmntmSendLink.Enabled := True;
end;

//显示当前选中的快捷方式
if Assigned(lvPro.Selected) then
edtKeyNow.Text := lvPro.Selected.Caption
else
edtKeyNow.Text := '无';

//窗体在隐藏状态时将窗体推到最前
if(Top = 0 - Height + 2) or ( Top = Screen.Height - 2) or (Left = 0 - Self.Width + 2) or (Left = Screen.Width - 2) then
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE); //将窗体推到最前
end;

{****************************************************************
* 过程名称: cbbFCChange
* 功能描述: 修改窗体颜色
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.2.6 created by xzj
****************************************************************}
procedure TFormUse.cbbFCChange(Sender: TObject);
var
sqltxt : string;
begin
sqltxt := 'update PRO_SET set FORM_COLOR = ''' + ColorToString(cbbFC.SelectedColor) + ''' where ID = 1 ';
Execqry(qrySet,sqltxt);
Self.Color := cbbFC.SelectedColor;
SYS_COLOR := cbbFC.SelectedColor;
end;

{****************************************************************
* 过程名称: cbbFONTCChange
* 功能描述: 修改字体颜色
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.2.6 created by xzj
****************************************************************}
procedure TFormUse.cbbFONTCChange(Sender: TObject);
var
sqltxt : string;
begin
sqltxt := 'update PRO_SET set FONT_COLOR = ''' + ColorToString(cbbFONTC.SelectedColor) + ''' where ID = 1 ';
Execqry(qrySet,sqltxt);
Self.Font.Color := cbbFONTC.SelectedColor;
FONT_COLOR := cbbFONTC.SelectedColor;
lblName.ParentFont := True;
lblName.Font.Size := 20;
end;

{****************************************************************
* 过程名称: cbbGCChange
* 功能描述: 修改选中分组字体的颜色
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.2.6 created by xzj
****************************************************************}
procedure TFormUse.cbbGCChange(Sender: TObject);
var
sqltxt : string;
begin
sqltxt := 'update PRO_SET set GROUP_COLOR = ''' + ColorToString(cbbGC.SelectedColor) + ''' where ID = 1 ';
Execqry(qrySet,sqltxt);
GROUP_COLOR := cbbGC.SelectedColor;
end;

{****************************************************************
* 过程名称: cbbECChange
* 功能描述: 修改编辑状态时区域的颜色
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.2.6 created by xzj
****************************************************************}
procedure TFormUse.cbbECChange(Sender: TObject);
var
sqltxt : string;
begin
sqltxt := 'update PRO_SET set EDITING_COLOR = ''' + ColorToString(cbbEC.SelectedColor) + ''' where ID = 1 ';
Execqry(qrySet,sqltxt);
EDITING_COLOR := cbbEC.SelectedColor;
end;

{****************************************************************
* 过程名称: cbbFTChange
* 功能描述: 修改窗体类型
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.2.6 created by xzj
****************************************************************}
procedure TFormUse.cbbFTChange(Sender: TObject);
var
//sFormStyle : string;
sqltxt : string;
begin
sqltxt := 'update PRO_SET set FORM_STYLE = ''' + cbbFT.Text + ''' where ID = 1 ';
Execqry(qrySet,sqltxt);
ShowMessagePos('重启后有效!',(Self.Left + 250),(Self.Top + 300));
{
sFormStyle := cbbFT.Text;
if sFormStyle = 'bsNone' then
Self.BorderStyle := bsNone
else if sFormStyle = 'bsDialog' then
Self.BorderStyle := bsDialog
else if sFormStyle = 'bsSingle' then
Self.BorderStyle := bsSingle
else if sFormStyle = 'bsSizeable' then
Self.BorderStyle := bsSizeable
else if sFormStyle = 'bsSizeToolWin' then
Self.BorderStyle := bsSizeToolWin
else
Self.BorderStyle := bsToolWindow;
}
end;

{****************************************************************
* 过程名称: cbbHDChange
* 功能描述: 修改窗体隐藏方向
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.2.6 created by xzj
****************************************************************}
procedure TFormUse.cbbHDChange(Sender: TObject);
var
sqltxt : string;
begin
sqltxt := 'update PRO_SET set HIDE_DIRECTION = ''' + cbbHD.Text + ''' where ID = 1 ';
Execqry(qrySet,sqltxt);
HIDE_DIRECTION := cbbHD.Text;
end;

{****************************************************************
* 过程名称: cbbSHChange
* 功能描述: 设置是否显示帮助
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.2.6 created by xzj
****************************************************************}
procedure TFormUse.cbbSHChange(Sender: TObject);
var
sqltxt : string;
begin
if Trim(cbbSH.Text) = '是' then
begin
sqltxt := 'update PRO_SET set SHOW_HELP = true where ID = 1 ';
pg4.TabVisible := True;
end
else
begin
sqltxt := 'update PRO_SET set SHOW_HELP = False where ID = 1 ';
pg4.TabVisible := False;
end;
Execqry(qrySet,sqltxt);
end;

{****************************************************************
* 过程名称: InitForm
* 功能描述: 初始化窗体
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.2.6 created by xzj
****************************************************************}
procedure TFormUse.InitForm();
var
sFormStyle : string;
begin
Openqry(qryInit,'select * from PRO_SET where ID = 1');
SYS_COLOR := StringToColor(qryInit.fieldbyname('FORM_COLOR').AsString);
self.Color := SYS_COLOR;
FONT_COLOR := StringToColor(qryInit.fieldbyname('FONT_COLOR').AsString);
Self.Font.Color := FONT_COLOR;
EDITING_COLOR := StringToColor(qryInit.fieldbyname('EDITING_COLOR').AsString);
GROUP_COLOR := StringToColor(qryInit.fieldbyname('GROUP_COLOR').AsString);
if(qryInit.fieldbyname('SHOW_HELP').AsString = 'True') then
begin
pg4.TabVisible := True;
cbbSH.Value := '是';
end
else
begin
pg4.TabVisible := False;
cbbSH.Value := '否';
end;

sFormStyle := qryInit.fieldbyname('FORM_STYLE').AsString;
if sFormStyle = 'bsNone' then
Self.BorderStyle := bsNone
else if sFormStyle = 'bsDialog' then
Self.BorderStyle := bsDialog
else if sFormStyle = 'bsSingle' then
Self.BorderStyle := bsSingle
else if sFormStyle = 'bsSizeable' then
Self.BorderStyle := bsSizeable
else if sFormStyle = 'bsSizeToolWin' then
Self.BorderStyle := bsSizeToolWin
else
Self.BorderStyle := bsToolWindow;

HIDE_DIRECTION := qryInit.fieldbyname('HIDE_DIRECTION').AsString;

cbbFC.SelectedColor := SYS_COLOR;
cbbFONTC.SelectedColor := FONT_COLOR;
cbbGC.SelectedColor := GROUP_COLOR;
cbbEC.SelectedColor := EDITING_COLOR;
cbbFT.Value := sFormStyle;
cbbHD.Value := HIDE_DIRECTION;
end;

{****************************************************************
* 过程名称: tntmntmexitClick
* 功能描述: 退出窗体
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.2.18 created by xzj
****************************************************************}
procedure TFormUse.tntmntmexitClick(Sender: TObject);
begin
close;
end;

{****************************************************************
* 过程名称: tntmntmHideZTClick
* 功能描述: 隐藏状态栏
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.2.21 created by xzj
****************************************************************}
procedure TFormUse.tntmntmHideZTClick(Sender: TObject);
var sqltxt : string;
begin
if tntmntmHideZT.Checked = True then
begin
tntmntmHideZT.Checked := False;
tntcntrlbr1.Visible := True;
sqltxt := 'update PRO_SET set SHOW_TOOL = True where ID = 1 ';
end
else
begin
tntmntmHideZT.Checked := True;
tntcntrlbr1.Visible := False;
sqltxt := 'update PRO_SET set SHOW_TOOL = False where ID = 1 ';
end;
Execqry(qryCmd,sqltxt);
if tntmntmTail.Checked = True then
begin
tntmntmList.Click;
tntmntmTail.Click;
end
else if tntmntmList.Checked = True then
begin
tntmntmTail.Click;
tntmntmList.Click;
end
else
begin
tntmntmList.Click;
tntmntmdefault.Click;
end;
end;

{****************************************************************
* 过程名称: tntmntmHideZTClick
* 功能描述: 隐藏版本信息
* 参数说明: Sender: TObject
* 返 回 值: 无
* 历史记录: 2013.2.21 created by xzj
****************************************************************}
procedure TFormUse.tntmntmHideVClick(Sender: TObject);
var sqltxt : string;
begin
if tntmntmHideV.Checked = True then
begin
tntmntmHideV.Checked := False;
imglogo.Visible := True;
grp1.Visible := True;
sqltxt := 'update PRO_SET set SHOW_LOGO = True where ID = 1 ';
end
else
begin
tntmntmHideV.Checked := True;
imglogo.Visible := False;
grp1.Visible := False;
sqltxt := 'update PRO_SET set SHOW_LOGO = False where ID = 1 ';
end;
Execqry(qryCmd,sqltxt);
if tntmntmTail.Checked = True then
begin
tntmntmList.Click;
tntmntmTail.Click;
end
else if tntmntmList.Checked = True then
begin
tntmntmTail.Click;
tntmntmList.Click;
end
else
begin
tntmntmList.Click;
tntmntmdefault.Click;
end;
end;

{****************************************************************
* 过程名称: AddInitForm
* 功能描述: 版本信息、分组、状态栏的隐藏状况初始化
* 参数说明: 无
* 返 回 值: 无
* 历史记录: 2013.2.21 created by xzj
****************************************************************}
procedure TFormUse.AddInitForm();
begin
if(qryInit.FieldByName('SHOW_TYPE').AsString = 'True') then
begin
tntscrlbxType.Visible := True;
tntmntmhide.Checked := False;
end
else
begin
tntscrlbxType.Visible := False;
tntmntmhide.Checked := True;
end;

if(qryInit.FieldByName('SHOW_TOOL').AsString = 'True') then
begin
tntcntrlbr1.Visible := True;
tntmntmHideZT.Checked := False;
end
else
begin
tntcntrlbr1.Visible := False;
tntmntmHideZT.Checked := True;
end;

if(qryInit.FieldByName('SHOW_LOGO').AsString = 'True') then
begin
imglogo.Visible := True;
tntmntmHideV.Checked := False;
grp1.Visible := True;
end
else
begin
imglogo.Visible := False;
tntmntmHideV.Checked := True;
grp1.Visible := False;
end;

//初始化窗体透明度
self.AlphaBlendValue := qryInit.fieldbyname('FORM_ABV').AsInteger;
rztrckbr1.Position := qryInit.fieldbyname('FORM_ABV').AsInteger;

//初始化快捷方式的字体
lvPro.Font.Charset := qryInit.fieldbyname('LV_FONT_CHARSET').AsInteger;
lvPro.Font.Color := StringToColor(qryInit.fieldbyname('LV_FONT_COLOR').AsString);
lvPro.Font.Name := qryInit.fieldbyname('LV_FONT_NAME').AsString;
lvPro.Font.Size := qryInit.fieldbyname('LV_FONT_SIZE').AsInteger;
lvPro.Font.Style := [];
if qryInit.FieldByName('LV_FSB').AsBoolean = True then
begin
lvPro.Font.Style := lvPro.Font.Style + [fsBold];
end;
if qryInit.FieldByName('LV_FSI').AsBoolean = True then
begin
lvPro.Font.Style := lvPro.Font.Style + [fsItalic];
end;
if qryInit.FieldByName('LV_FSU').AsBoolean = True then
begin
lvPro.Font.Style := lvPro.Font.Style + [fsUnderline];
end;
btn2.Text := qryInit.fieldbyname('LV_FONT_NAME').AsString + ','
+ qryInit.fieldbyname('LV_FONT_SIZE').AsString + ','
+ qryInit.fieldbyname('LV_FONT_COLOR').AsString;
end;

{****************************************************************
* 过程名称: rztrckbr1Change
* 功能描述: 设置窗体透明度
* 参数说明: Sender
* 返 回 值: 无
* 历史记录: 2013.2.21 created by xzj
****************************************************************}
procedure TFormUse.rztrckbr1Change(Sender: TObject);
var sqltxt : string;
begin
sqltxt := 'update PRO_SET set FORM_ABV = ' + IntToStr(rztrckbr1.Position);
self.AlphaBlendValue := rztrckbr1.Position;
Execqry(qryCmd,sqltxt);
end;

{****************************************************************
* 过程名称: FormMouseMove
* 功能描述: 窗体拖动
* 参数说明: Sender: TObject; Shift: TShiftState; X,Y: Integer
* 返 回 值: 无
* 历史记录: 2013.2.21 created by xzj
****************************************************************}
procedure TFormUse.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if (ssleft in Shift) then
begin
ReleaseCapture;
Perform(WM_syscommand, $F012, 0);
end;
end;

{****************************************************************
* 过程名称: imglogoMouseMove
* 功能描述: 窗体拖动
* 参数说明: Sender: TObject; Shift: TShiftState; X,Y: Integer
* 返 回 值: 无
* 历史记录: 2013.2.21 created by xzj
****************************************************************}
procedure TFormUse.imglogoMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
FormMouseMove(Sender,Shift,X,Y);
end;

{****************************************************************
* 过程名称: tntpnl1MouseMove
* 功能描述: 窗体拖动
* 参数说明: Sender: TObject; Shift: TShiftState; X,Y: Integer
* 返 回 值: 无
* 历史记录: 2013.2.21 created by xzj
****************************************************************}
procedure TFormUse.tntpnl1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
FormMouseMove(Sender,Shift,X,Y);
end;

{****************************************************************
* 过程名称: grp2MouseMove
* 功能描述: 窗体拖动
* 参数说明: Sender: TObject; Shift: TShiftState; X,Y: Integer
* 返 回 值: 无
* 历史记录: 2013.2.21 created by xzj
****************************************************************}
procedure TFormUse.grp2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
FormMouseMove(Sender,Shift,X,Y);
end;

{****************************************************************
* 过程名称: tntpgcntrl2Change
* 功能描述: 设置项置中
* 参数说明: Sender
* 返 回 值: 无
* 历史记录: 2013.2.21 created by xzj
****************************************************************}
procedure TFormUse.tntpgcntrl2Change(Sender: TObject);
begin
if tntpgcntrl2.ActivePage = pg5 then
begin
grp2.Top := tntpnl1.Top + (tntpnl1.Height - grp2.Height) div 2;
grp2.Left := tntpnl1.Left + (tntpnl1.Width - grp2.Width) div 2;
end;
end;

{****************************************************************
* 过程名称: btn2ButtonClick
* 功能描述: 设置快捷方式的字体
* 参数说明: Sender
* 返 回 值: 无
* 历史记录: 2013.2.24 created by xzj
****************************************************************}
procedure TFormUse.btn2ButtonClick(Sender: TObject);
var sqltxt : string;
begin
isEditing := True;
//self.Left := (screen.Width - Self.Width) div 2;
with dlgFont1 do
begin
Font := lvPro.Font;
if Execute then
lvPro.Font := Font;
end;
isEditing := False;
btn2.Text := lvPro.Font.Name + ',' + IntToStr(lvPro.Font.Size) + ',' + ColorToString(lvPro.Font.Color);
sqltxt := 'update PRO_SET set LV_FONT_CHARSET = ' + IntToStr(lvPro.Font.charset) + ', '
+ 'LV_FONT_COLOR = ''' + colortostring(lvPro.Font.Color) + ''', '
+ 'LV_FONT_NAME = ''' + lvpro.font.name + ''', '
+ 'LV_FONT_SIZE = ' + IntToStr(lvPro.Font.size) + ' ';
if lvPro.Font.Style = [] then
begin
sqltxt := sqltxt + ', LV_FSB = False, LV_FSI = False, LV_FSU = False ';
end
else if lvPro.Font.Style = [fsBold] then
begin
sqltxt := sqltxt + ', LV_FSB = True, LV_FSI = False, LV_FSU = False ';
end
else if lvPro.Font.Style = [fsItalic] then
begin
sqltxt := sqltxt + ', LV_FSB = False, LV_FSI = True, LV_FSU = False ';
end
else if lvPro.Font.Style = [fsUnderline] then
begin
sqltxt := sqltxt + ', LV_FSB = False, LV_FSI = False, LV_FSU = True ';
end
else if lvPro.Font.Style = [fsBold] + [fsItalic] then
begin
sqltxt := sqltxt + ', LV_FSB = True, LV_FSI = True, LV_FSU = False ';
end
else if lvPro.Font.Style = [fsBold] + [fsUnderline] then
begin
sqltxt := sqltxt + ', LV_FSB = True, LV_FSI = False, LV_FSU = True ';
end
else if lvPro.Font.Style = [fsItalic] + [fsUnderline] then
begin
sqltxt := sqltxt + ', LV_FSB = False, LV_FSI = True, LV_FSU = True ';
end
else
begin
sqltxt := sqltxt + ', LV_FSB = True, LV_FSI = True, LV_FSU = True ';
end;
Execqry(qryCmd,sqltxt);
end;

end.


效果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  delphi 管理