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

来源:互联网 发布:mac 终端 vi 保存退出 编辑:程序博客网 时间:2024/06/15 03:28

参加工作了就很少有时间去玩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;interfaceuses  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;implementationuses 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;    Top := 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.

效果:


1 0
原创粉丝点击