⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit_main.pas

📁 至于这小软件的用途
💻 PAS
📖 第 1 页 / 共 2 页
字号:
    finally
      regRunself.Free;
     // inherited;
    end;
  end
  else
  begin
    try
      regRunself.RootKey := HKEY_LOCAL_MACHINE;
      If regRunself.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',true) then
      begin
        if regRunself.ValueExists('DesktopPic') then
        begin
          regRunself.DeleteValue('DesktopPic'); //取消自动运行
        end;
        regRunself.CloseKey;
      end;
    finally
      regRunself.Free;
     // inherited;
    end;
  end;
  //载入图像列表
  PicList.ListFolder(ImgLocalFolder);
  //DidChange;
end;


procedure TFrm_Main.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
Perform(WM_SYSCOMMAND,$f012,0);
case ImgLockPoint of    //0左上角,1右上角,2左下角,3右下角,4正中间
0:
begin
  ImgLocalLeft:=frm_main.Left;
  ImgLocaltop:=frm_main.top;
end;
1:
begin
  ImgLocalLeft:=frm_main.Left+frm_main.ClientWidth;
  ImgLocaltop:=frm_main.top;
end;
2:
begin
  ImgLocalLeft:=frm_main.Left;
  ImgLocaltop:=frm_main.top+frm_main.Height;
end;
3:
begin
  ImgLocalLeft:=frm_main.Left+frm_main.Width;
  ImgLocaltop:=frm_main.top+frm_main.Height;
end;
4:
begin
  ImgLocalLeft:=frm_main.Left+(frm_main.Width div 2);
  ImgLocaltop:=frm_main.top+(frm_main.Height div 2);
end;
else ;
end;

end;

procedure TFrm_Main.N1Click(Sender: TObject);
begin
 Frm_State.show;
end;


procedure TFrm_Main.N2Click(Sender: TObject);
begin
  if Image2.Visible then
  Image2.Visible:=False
  else
  Image2.Visible:=true;

//Sleep(100);
//Image2.Visible:=false;

end;

procedure TFrm_Main.N3Click(Sender: TObject);
begin
Frm_Main.Close;
end;

procedure TFrm_Main.redraw;
var
rgn: HRGN;
begin
rgn := CreateRectRgn(0,0,0,0);
GetWindowRgn(Self.Handle, rgn);
Brush.Color := ImgWindowcolor; //先是黑色边框吧~
windows.FrameRgn(Handle, rgn, Brush.Handle, 0, 0);
DeleteObject(rgn);   

  Frm_Main.Height:=image1.Height+2;
  Frm_Main.Width:=image1.Width+2;

     case ImgLockPoint of    //0左上角,1右上角,2左下角,3右下角,4正中间
  //为什么必须加这点值?
    0:
    begin
      frm_main.Left:=ImgLocalLeft;
      frm_main.top:=ImgLocaltop;
    end;
    1:
    begin
      frm_main.Left:=ImgLocalLeft-frm_main.Width;
      frm_main.top:=ImgLocaltop;
    end;
    2:
    begin
      frm_main.Left:=ImgLocalLeft;
      frm_main.top:=ImgLocaltop-frm_main.ClientHeight;
    end;
    3:
    begin
      frm_main.Left:=ImgLocalLeft-frm_main.ClientWidth;
      frm_main.top:=ImgLocaltop-frm_main.ClientHeight;
    end;
    4:
    begin
      frm_main.Left:=ImgLocalLeft-(frm_main.ClientWidth div 2);
      frm_main.top:=ImgLocaltop-(frm_main.ClientHeight div 2);
    end;
    else ;
  end;
end;

{****************************************************************}
//托盘管理
procedure TFrm_Main.TrayShow(Sender: TObject);
//当点击托盘图标时显示或隐含主窗体 
begin
 //设定 TNotifyIconData 的记录长度 
 MyTrayIcon.cbSize :=SizeOf(tnotifyicondata); 
 //确定调用程序的窗体句柄 
 MyTrayIcon.Wnd :=Handle; 
 //确定图标的 uID 
 MyTrayIcon.uID :=1; 
 //设定显示标记 
 MyTrayIcon.uFlags :=NIF_ICON or NIF_TIP or NIF_MESSAGE; 
 //用户自定义消息 
 MyTrayIcon.uCallbackMessage := WM_MYTRAYICONCALLBACK;
 //托盘图标的句柄 
 MyTrayIcon.hIcon := Application.Icon.Handle; 
 //托盘图标的提示信息 
 MyTrayIcon.szTip :='金管家桌面画廊';
 //向托盘中添加图标 
 Shell_NotifyIcon(NIM_ADD,@mytrayicon); 
end; 

procedure TFrm_Main.WMMyTrayIconCallBack(var Msg: TMessage);
//处理点击托盘图标的事件,根据 WM_MOUSEMOVE 消息的不同情况产生不同的回应 
var 
 CursorPos : TPoint; 
begin
 case Msg.lParam of
  //左键按下
  {WM_LBUTTONDOWN :
            begin
            BringToFront;  //窗体置前
           end;
  //左键双击 
  WM_LBUTTONDBLCLK :
                  //窗体隐含或显示
   begin 
    Visible := not Visible ;
    Application.ShowMainForm := Visible ;
    SetForegroundWindow(Application.Handle); 
   end ; 
         }
  //右键按下 
  WM_RBUTTONDOWN :  begin                //显示弹出菜单
             GetCursorPos(CursorPos);
             //TrayBarPopMenu.Popup(CursorPos.x,CursorPos.y);
             PopupMenu1.Popup(CursorPos.x,CursorPos.y);
            end; 
  end//case
end; 

procedure  TFrm_Main.ReadIni;
var
  iniF:TiniFile;
  tmpstr:string;
begin
  try
    tmpstr:=extractFilePath(ParamStr(0)); //取目录
    iniF:=TiniFile.create(tmpstr+'gallery.ini');
    Alphafrm:=StrToInt(iniF.ReadString('桌面画廊','主窗体透明度','0'));
    ImgChangeTime:=StrToInt(iniF.ReadString('桌面画廊','图片切换时间','30'));
    //ImgWhere:=StrToInt(iniF.ReadString('桌面画廊','图片来源','1'));       //图片来源(0金管家,1本地)
    ImgLocalFolder:=iniF.ReadString('桌面画廊','图像所在文件夹','c:\');
    ImgViewType:=StrToInt(iniF.ReadString('桌面画廊','播放方式','0'));
    ImgFrmlayer:=StrToInt(iniF.ReadString('桌面画廊','窗口位置','1'));
    ImgLockPoint:=StrToInt(iniF.ReadString('桌面画廊','图像调整基准点','0'));
    ImgMouseIn:=StrToBool(iniF.ReadString('桌面画廊','鼠标穿透','false'));
    ImgLarge:=StrToInt(iniF.ReadString('桌面画廊','最大图片长度','640'));
    ImgAutoRun:=StrToBool(iniF.ReadString('桌面画廊','开机是否自动运行','false'));
    ImgLocalLeft:=StrToInt(iniF.ReadString('桌面画廊','默认基准点X坐标','1'));
    ImgLocaltop:=StrToInt(iniF.ReadString('桌面画廊','默认基准点Y坐标','1'));
  finally
    iniF.free;
  end;
end;

procedure TFrm_main.WriteIni;
var
  iniF:TiniFile;
  tmpstr:string;
begin
  try
    tmpstr:=extractFilePath(ParamStr(0)); //取目录
    iniF:=TiniFile.create(tmpstr+'gallery.ini');
    iniF.WriteString('桌面画廊','主窗体透明度',IntToStr(Alphafrm));
    iniF.WriteString('桌面画廊','图片切换时间',IntToStr(ImgChangeTime));
    //iniF.WriteString('桌面画廊','图片来源',IntToStr(ImgWhere));
    iniF.WriteString('桌面画廊','图像所在文件夹',ImgLocalFolder);
    iniF.WriteString('桌面画廊','播放方式',IntToStr(ImgViewType));
    iniF.WriteString('桌面画廊','窗口位置',IntToStr(ImgFrmlayer));
    iniF.WriteString('桌面画廊','图像调整基准点',IntToStr(ImgLockPoint));
    iniF.WriteString('桌面画廊','鼠标穿透',BoolToStr(ImgMouseIn));
    iniF.WriteString('桌面画廊','最大图片长度',IntToStr(ImgLarge));
    iniF.WriteString('桌面画廊','开机是否自动运行',BoolToStr(ImgAutoRun));
    iniF.WriteString('桌面画廊','默认基准点X坐标',IntToStr(ImgLocalLeft));
    iniF.WriteString('桌面画廊','默认基准点Y坐标',IntToStr(ImgLocaltop));
  finally
    iniF.free;
  end;
end;


procedure TFrm_Main.FormDestroy(Sender: TObject);

begin
  WriteIni;
  delIcon;
end;

procedure  TFrm_Main.delIcon;
var       {程序被关闭时通知Windows去掉小图标}
  nid: TNotifyIconData;
begin
  nid.cbSize := sizeof(nid); // nid变量的字节数
  nid.uID := 1; //内部标识,与加入小图标时的数一致
  nid.Wnd := Handle; //主窗口句柄
  Shell_NotifyIcon(NIM_DELETE, @nid); //去掉小图标
end;  
procedure TFrm_Main.FormShow(Sender: TObject);
begin

redraw;
TrayShow(Application.MainForm);//显示图标;
end;

procedure TFrm_Main.FormPaint(Sender: TObject);
begin
//Frm_Main.Canvas.Draw(1,1,Image1.Picture.Graphic);
end;

procedure TFrm_Main.WMDROPFILES(var Msg: TMessage);
var
  //FilesCount: Integer; // 文件总数
  //i: Integer;
  FileName: array[0..255] of Char;
  tmpname:string;
begin
  {Memo1.Clear;
  
  // 获取文件总数
  FilesCount := DragQueryFile(Msg.WParam, $FFFFFFFF, nil, 0);
  Memo1.Lines.Add('文件总数为:' + IntToStr(FilesCount));

  // 获取文件名
  for i := 0 to FilesCount - 1 do
  begin
    DragQueryFile(Msg.WParam, i, FileName, 256);
    Memo1.Lines.Add(FileName)
  end;

  // 释放
  DragFinish(Msg.WParam); }

  //只对第一个文件操作
   DragQueryFile(Msg.WParam, 0, FileName, 256);
   tmpname:=string(FileName);
   if Unit_Listpic.ispicture(FileName) then
   FnLoadImage(tmpname);
   DragFinish(Msg.WParam); 
end;
//
{问题:
--1、我的电脑选择时应该是没有图像的,或者是不允许选图像
哈哈~~实现了学YAHOO,不是文件夹就不能选
--2、图像的边框应该是绘制,而且可选择多种风格  先藏起来,用一黑框代替
--3、应该采用INI支持,使软件能保存其属性 解决~
--4、图像应每次更替时确定一个定位点
--5、图像的最大大小应该确定,若超过的话应按比例缩小显示
--6、好像有时右下脚图标显示有问题~
7、要支持更换图像上一张、下一张 暂停
--8、支持拖动 临时显示
9、点击显示文件名
--10、切换要用ALPHA,以挡住现在的两次晃



//控制按钮,应该是个透明下拉的面板,点时处理

//有一个LIST,里面纪录了图片的地址,每次从里面读取

//三个缓存MEMORYSTREAM,现在图片,下一图片,上一图片,当读取下一图片时就进行再读取


}
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -