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

📄 uclockfrm.pas

📁 很好的俄罗斯方块
💻 PAS
字号:
{  显示时钟窗体单元 }

unit UClockFrm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, ExtCtrls, jpeg;

type
  TClockForm = class(TForm)
    Image0: TImage;
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    Image5: TImage;
    Image6: TImage;
    Image7: TImage;
    Image8: TImage;
    Image9: TImage;
    TimerClock: TTimer;
    ImageBack: TImage;
    ImageHour1: TImage;
    ImageHour2: TImage;
    Image10: TImage;
    ImageMin1: TImage;
    ImageMin2: TImage;
    Image11: TImage;
    ImageSec1: TImage;
    ImageSec2: TImage;
    procedure TimerClockTimer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure OnNcHitTest(var Message: TMessage);
    procedure WndProc(var Message: TMessage); override;
  end;

var
  ClockForm: TClockForm;
  Img: array[0..9] of TImage;


implementation
uses UMain;
{$R *.DFM}
procedure TClockForm.WndProc(var Message: TMessage);
begin
   if Message.Msg = WM_NCHITTEST then
      OnNcHitTest(Message)
   else
      Dispatch(Message);
end;

procedure TClockForm.OnNcHitTest(var Message: TMessage);
var
   pt: TPoint;
   rc: TRect;
begin
   pt.x := LOWORD(Message.LParam);
   pt.y := HIWORD(Message.LParam);
   pt := ScreenToClient(pt);

   SetRect(rc,0,0,ClientWidth,ClientHeight);

   if (PtInRect(rc,pt)) then
      Message.Result := HTCAPTION
   else
      DefaultHandler(Message);
end;

procedure TClockForm.TimerClockTimer(Sender: TObject);
var
   s: String;
   i: Integer;
begin
   s := TimeToStr(Time);
   //10:10:10
   i := 1;
   while (s[i]<>':') do i := i+1;
   if (i=2) then//7个字符
   begin
      ImageHour1.Picture:=Img[0].Picture;
      ImageHour2.Picture:=Img[ord(s[1])-ord('0')].Picture;
      ImageMin1.Picture:=Img[ord(s[3])-ord('0')].Picture;
      ImageMin2.Picture:=Img[ord(s[4])-ord('0')].Picture;
      ImageSec1.Picture:=Img[ord(s[6])-ord('0')].Picture;
      ImageSec2.Picture:=Img[ord(s[7])-ord('0')].Picture;
   end
   else if (i=3) then//8个字符
   begin
      ImageHour1.Picture:=Img[ord(s[1])-ord('0')].Picture;
      ImageHour2.Picture:=Img[ord(s[2])-ord('0')].Picture;
      ImageMin1.Picture:=Img[ord(s[4])-ord('0')].Picture;
      ImageMin2.Picture:=Img[ord(s[5])-ord('0')].Picture;
      ImageSec1.Picture:=Img[ord(s[7])-ord('0')].Picture;
      ImageSec2.Picture:=Img[ord(s[8])-ord('0')].Picture;
   end;
end;

procedure TClockForm.FormCreate(Sender: TObject);
var
   i: Integer;
begin
   Img[0]:=Image0;
   Img[1]:=Image1;
   Img[2]:=Image2;
   Img[3]:=Image3;
   Img[4]:=Image4;
   Img[5]:=Image5;
   Img[6]:=Image6;
   Img[7]:=Image7;
   Img[8]:=Image8;
   Img[9]:=Image9;
   //for(int i=0;i<10;i++)Img[i].Hide();
   for i := 0 to 9 do Img[i].Hide;
   SetBounds(5,530,ImageBack.Width,ImageBack.Height);
end;

procedure TClockForm.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   frmGame.FormKeyDown(Sender, Key, Shift);
end;

end.

⌨️ 快捷键说明

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