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

📄 mainform.pas

📁 本图书管理系统一sql server为数据库开发平台
💻 PAS
📖 第 1 页 / 共 5 页
字号:
    procedure UpDown1Click(Sender: TObject; Button: TUDBtnType);
    procedure FormResize(Sender: TObject);
  private
  protected
     procedure setFOCUS1(var msg:TMESSAGE);message WM_SETFOCUS;
    { Private declarations }
  public
    BTBround:TBITMAP;
    userPurview:purview;
    dir:string;
    resource:Thandle;
    { Public declarations }
  end;

var
  Main: TMain;
  maskbmp,TEXTBmp,TitleBmp,SmallBtnbmp,quessbtnbmp,closebtnbmp,menubmp,pagebmp,pagebmp2,toolbarbmp:Tbitmap;
  SmallBtn,CloseBtn,quessbtn:TRect;
  mbinfo:Buttoninfo;
  smallbtnDown,closebtndown,quessbtndown:Boolean;
  format:TFormatSettings;
  charwidth:integer;
  mainsetini:TINIFILe;
implementation
uses DataModule;
{$R *.dfm}
function MyShowmessage(text:Pchar):boolean; external 'resource.dll';

procedure Tmain.sizing(var msg:TMEssage);
var
  rectp:^Prect;
begin
  rectp:=@(msg.LParam);
  if  rectp^.Bottom-rectp^.Top <= 100 then
  begin
    rectp^.Bottom:=rectp^.top+100;//getsystemmetrics(sm_cycaption)+getsystemmetrics(sm_cyframe)*4+toolbar1.Height;
  end;
  if  rectp^.Right-rectp^.Left <= 520 then
  begin
    rectp^.Right:=rectp^.left+520;//getsystemmetrics(sm_cycaption)+getsystemmetrics(sm_cyframe)*4+toolbar1.Height;
  end;
  self.Repaint;
end;

procedure Tmain.WMQUERYOPEN(var msg:TMEssage);
begin
  showwindow(main.Handle,sw_ShowNormal);
end;

procedure Tmain.WMNCLBUTTONUP(var msg:TWMNCLBUTTONDown);
var
pt:Tpoint;
begin
  getcursorpos(pt);
  pt:=screentoclient(pt);
  pt.y:=pt.y+getsystemmetrics(sm_cycaption);
  if ptinrect(smallBtn,pt)and smallbtndown then
  begin
    showwindow(application.Handle,SW_MINIMIZE);
    smallbtndown:=false;
  end;
  if ptinrect(closebtn,pt) and closebtndown then
  begin
    sendmessage(self.Handle,wm_Close,0,0);
    closebtndown:=false;
  end;
  if ptinrect(quessbtn,pt) and quessbtndown then
  begin
    WinHelp(self.Handle,pchar(dir+'\help.hlp'),HELP_CONTENTS	,0);
    quessbtndown:=false;
  end;
  inherited;
end;



procedure Tmain.WMNCLBUTTONDown(var msg:TWMNCLBUTTonDown);
var
pt:Tpoint;
begin
  getcursorpos(pt);
  pt:=screentoclient(pt);
  pt.y:=pt.y+getsystemmetrics(sm_cycaption);
  if ptinrect(smallBtn,pt)  then    //smallbtn down test
  Begin             //small true
    mbinfo.HowButton:=1;
    mbinfo.Status:=Mybuttondown;
    drawbtn(mbinfo);
    msg.HitTest:=HTCLIENT;
    smallbtndown:=true;
  End                         //small true
  Else
    if ptinrect(closebtn,pt)  then       //closebtn down test
    Begin                             //close true
      mbinfo.HowButton:=2;
      mbinfo.Status:=Mybuttondown;
      drawbtn(mbinfo);
      msg.HitTest:=HTCLIENT;
      closebtndown:=true;
    End                      //close true
    Else
      if ptinrect(quessbtn,pt)  then       //quessbtn down test
      Begin                             //quess true
        mbinfo.HowButton:=3;
        mbinfo.Status:=Mybuttondown;
        drawbtn(mbinfo);
        msg.HitTest:=HTCLIENT;
        quessbtndown:=true;
      End;                      //quess true
  inherited;
end;


procedure Tmain.DrawBtn(var btinfo:buttonInfo);
var
xFrame,yFrame,captiony:Integer;
Whdc:HDC;
begin
  whdc:=getwindowdc(self.Handle);
  Xframe:=getsystemMetrics(SM_CXFRAME);
  yframe:=getsystemMetrics(SM_CYFRAME);
  captiony:=getsystemMetrics(SM_CYcaption);
  case btinfo.HowButton of
  1:
    begin  //最小化按钮
     smallbtn:=bounds(Width-xFrame-2*(captiony-yframe-5)-6,yframe,captiony-yframe-5,captiony-yframe-5); //设置按钮区域
      if screen.ActiveForm = self then
     stretchblt(whdc,smallbtn.Left,smallbtn.Top,smallbtn.Right-smallbtn.Left,smallbtn.Bottom-smallbtn.Top,Whdc,Width-xFrame-3*(captiony-yframe-5)-9,smallbtn.Top,smallbtn.Right-smallbtn.Left-32,smallbtn.Bottom-smallbtn.Top,srccopy);
     stretchblt(whdc,smallbtn.Left,smallbtn.Top,smallbtn.Right-smallbtn.Left,smallbtn.Bottom-smallbtn.Top,maskbmp.canvas.Handle,btinfo.Status*32,0,32,32,srccopy);
     stretchblt(whdc,smallbtn.Left,smallbtn.Top,smallbtn.Right-smallbtn.Left,smallbtn.Bottom-smallbtn.Top,smallbtnbmp.canvas.Handle,btinfo.Status*32,0,32,32,srcand);
    end;
  2:
    begin   //关闭按钮
     closebtn:=bounds(Width-xFrame-(captiony-yframe-5)-3,yframe,captiony-yframe-5,captiony-yframe-5); //设置按钮区域
      if screen.ActiveForm = self then
     stretchblt(whdc,closebtn.Left,closebtn.Top,closebtn.Right-closebtn.Left,closebtn.Bottom-closebtn.Top,Whdc,Width-xFrame-3*(captiony-yframe-5)-9,closebtn.Top,closebtn.Right-closebtn.Left-32,closebtn.Bottom-closebtn.Top,srccopy);
     stretchblt(whdc,closebtn.Left,closebtn.Top,closebtn.Right-closebtn.Left,closebtn.Bottom-closebtn.Top,Maskbmp.canvas.Handle,btinfo.Status*32,0,32,32,srccopy);
     stretchblt(whdc,closebtn.Left,closebtn.Top,closebtn.Right-closebtn.Left,closebtn.Bottom-closebtn.Top,closebtnbmp.canvas.Handle,btinfo.Status*32,0,32,32,srcand);
    end;
  3: //     问号按钮
    begin
     quessbtn:=bounds(Width-xFrame-3*(captiony-yframe-5)-9,yframe,captiony-yframe-5,captiony-yframe-5); //设置按钮区域
      if screen.ActiveForm = self then
     stretchblt(whdc,quessbtn.Left,quessbtn.Top,quessbtn.Right-quessbtn.Left,quessbtn.Bottom-quessbtn.Top,Whdc,Width-xFrame-3*(captiony-yframe-5)-9,quessbtn.Top,quessbtn.Right-quessbtn.Left-32,quessbtn.Bottom-quessbtn.Top,srccopy);
     stretchblt(whdc,quessbtn.Left,quessbtn.Top,quessbtn.Right-quessbtn.Left,quessbtn.Bottom-quessbtn.Top,Maskbmp.canvas.Handle,btinfo.Status*32,0,32,32,srccopy);
     stretchblt(whdc,quessbtn.Left,quessbtn.Top,quessbtn.Right-quessbtn.Left,quessbtn.Bottom-quessbtn.Top,quessbtnbmp.canvas.Handle,btinfo.Status*32,0,32,32,srcand);
    end;
  end;
  releasedc(self.Handle,whdc);
end;

procedure Tmain.NCmouseMove(var msg: Tmessage);
var
pt:tPoint;
begin
  getcursorpos(pt);
  pt:=screentoclient(pt);
  pt.y:=pt.y+getsystemmetrics(sm_cycaption);
  if ptinrect(smallBtn,pt) then       //最小化按钮判断
  begin                               //smallbtn down
    if smallbtndown then
    begin
      mbinfo.HowButton:=1;
      mbinfo.Status:=Mybuttondown;
      drawbtn(mbinfo);
    end
    else
    begin
      mbinfo.HowButton:=1;
      mbinfo.Status:=Mybuttonmove;
      drawbtn(mbinfo);
    end;
  end                             //smallbtn down
  else
  begin
    begin           //smallbtn not down
      mbinfo.HowButton:=1;
      mbinfo.Status:=Mybuttonnormal;
      drawbtn(mbinfo);
      smallbtndown:=false;
    end;           //smallbtn not down

    if ptinrect(closebtn,pt) then       //关闭按钮判断
    begin                              //    close down
      if closebtndown then
      begin
        mbinfo.HowButton:=2;
        mbinfo.Status:=Mybuttondown;      //按下状态
        drawbtn(mbinfo);
      end
      else
        begin
          mbinfo.HowButton:=2;
          mbinfo.Status:=Mybuttonmove;         //移动状态
          drawbtn(mbinfo);
        end;
    end                              //close down
    else
    begin
      begin                     //close not down
        mbinfo.HowButton:=2;
        mbinfo.Status:=Mybuttonnormal;        //一般状态
        drawbtn(mbinfo);
        closebtndown:=false;
      end;                         //close not down

      if ptinrect(quessbtn,pt) then       //问号按钮判断
      begin                              //    quess down
        if quessbtndown then
        begin
          mbinfo.HowButton:=3;
          mbinfo.Status:=Mybuttondown;           //按下状态
          drawbtn(mbinfo);
        end
        else
          begin
            mbinfo.HowButton:=3;
            mbinfo.Status:=Mybuttonmove;            //移动
            drawbtn(mbinfo);
          end;
      end                              //quess down
      else
        begin                     //quess not down
          mbinfo.HowButton:=3;
          mbinfo.Status:=Mybuttonnormal;                  //一般
          drawbtn(mbinfo);
          quessbtndown:=false;
        end;                         //quess not down
    end;
  end;
end;

procedure Tmain.Active(var msg:Tmessage);
begin
  sendmessage(main.Handle,WM_Paint,0,0);
  main.Broadcast(msg);
end;

procedure Tmain.setFOCUS1(var msg:Tmessage);
begin
//
end;

procedure Tmain.CreateParams(var Params: TCreateParams);
begin
  inherited;
  params.Style:=params.Style-WS_SYSMENU;
end;

procedure Tmain.WMPAINT(var msg:TWMPAINT);
begin
  inherited;
  sendmessage(self.Handle,WM_NCPAINT,0,0);
  if not N42.Checked then
  begin
    canvas.StretchDraw(clientrect,BTBround);
  end; 
end;

procedure Tmain.WMdbclick(var msg:Tmessage);
begin
  inherited;
  if splitter1.Left < self.Left+pagecontrol1.TabWidth then
  begin
    panel3.Width:= self.Width-pagecontrol1.TabWidth-splitter1.Width;
  end;
  sendmessage(self.Handle,WM_PAINT,0,0);
end;

procedure Tmain.WMNCPAINT(var msg:TWMNCPAINT);
var
  dc1:HDC;
  y,frame:integer;
  oldbrush:HBrush;
  oldpen,pen:HPEN;
  i:integer;
  msgs:Tmessage;
  oldfont,newfont:HFont;
  logfonts:taglogfonta;
  rect1:Trect;
begin
  // inherited;
  dc1:=getwindowdc(main.Handle);
  y:=GetSystemMetrics(SM_CYSIZE);
  frame:=GetSystemMetrics(SM_CYSIZEFRAME);

  //setup charfont
  logfonts.lfHeight:=GetSystemMetrics(SM_CYcaption);
  logfonts.lfWidth:=GetSystemMetrics(SM_CYcaption)div 5*3;
  logfonts.lfWeight:=0;
  logfonts.lfUnderline:=0;
  logfonts.lfStrikeOut:=0;
  logfonts.lfItalic:=0;
  logfonts.lfEscapement:=0;
  logfonts.lfOrientation:=0;
  logfonts.lfFaceName:='楷体_GB2312';
  logfonts.lfCharSet:=gb2312_charset;
  //setup charfont end

  oldbrush:=selectobject(dc1,getstockobject(null_brush));
  pen:=createpen(PS_SOLID,frame*2,rgb(255,255,255));
  oldpen:=selectobject(dc1,pen);
  //rectangle(dc1,0,0,main.Width,main.Height);
  //framerect(dc1,rect(0,0,self.Width,self.Height)  ,createsolidbrush(rgb(150,150,150)));

  oldbrush:=selectobject(dc1,getstockobject(null_brush));
  pen:=createpen(PS_SOLID,1,rgb(155,155,155));
  oldpen:=selectobject(dc1,pen);
  RoundRect(dc1,0,0,Width,Height,12,12);
  pen:=createpen(PS_SOLID,frame*2-5,rgb(255,255,255));
  selectobject(dc1,pen);
  RoundRect(dc1,2,2,Width-2,Height-2,8,10);

  StretchBlt(dc1,frame,frame,main.Width-2*frame,y+frame div 2,titlebmp.Canvas.Handle,0,0,titlebmp.Width,titlebmp.Height,srccopy);
  newfont:=createfontindirect(logfonts);
  oldfont:=selectobject(dc1,newfont);
  rect1:=rect(frame,frame,main.Width-2*frame,y+frame div 2);
  setbkmode(dc1,TRANSPARENT);
  drawtext(dc1,pchar(self.Caption),length(self.Caption),rect1,DT_CENTER+DT_VCENTER);
  imagelist1.GetBitmap(0,textbmp);
  StretchBlt(dc1,frame*2, GetSystemMetrics(SM_CYcaption)div 2-8,GetSystemMetrics(SM_CYcaption)-frame*2,GetSystemMetrics(SM_CYcaption)-frame*2,maskbmp.Canvas.Handle,0,0,maskbmp.Width,maskbmp.Height,srccopy);
  StretchBlt(dc1,frame*2, GetSystemMetrics(SM_CYcaption)div 2-8,GetSystemMetrics(SM_CYcaption)-frame*2,GetSystemMetrics(SM_CYcaption)-frame*2,textbmp.Canvas.Handle,0,0,textbmp.Width,textbmp.Height,srcand);

  pen:=createpen(PS_SOLID,1,rgb(155,155,155));
  selectobject(dc1,pen);
  movetoex(dc1,frame,y+frame,nil);
  lineto(dc1,Width-frame,y+frame);

  selectobject(dc1,oldbrush);
  selectobject(dc1,oldpen);
  selectobject(dc1,oldfont);
  deleteObject(pen);
  deleteobject(newfont);
  releasedc(main.Handle,dc1);
  msgs.Msg:=WM_PAint;
  self.Broadcast(msgs);
  for i:=0 to 3 do
  begin
    mbinfo.HowButton:=i;
    mbinfo.Status:=Mybuttonnormal;
    DrawBtn(mbinfo);
  end;
  toolbar1.Repaint;
end;

procedure TMain.FormCreate(Sender: TObject);
begin
  setwindowrgn(self.Handle,CreateRoundRectRgn(0,0,Width+1,Height+1,8,10),true);
  imagelist1.GetIcon(0,application.Icon);
  getdir(0,dir);
  resource:=Loadlibrary(PCHAR(dir+'\resource.dll'));
  if not (resource > 32) then
  begin
    showmessage('对不起!所需要文件不存在,请重新安装本系统!');
    application.Terminate;
  end;
  TitleBmp:=Tbitmap.Create;
  textbmp:=Tbitmap.Create;
  maskbmp:=Tbitmap.Create;
  maskbmp.Mask(rgb(0,0,0));
  SmallBtnbmp:=tbitmap.Create;
  closeBtnbmp:=tbitmap.Create;
  quessbtnbmp:=Tbitmap.Create;
  pagebmp:=Tbitmap.Create;
  pagebmp2:=Tbitmap.Create;
  menubmp:=Tbitmap.create;
  menubmp.LoadFromResourceName(resource,'menu');
  pagebmp.LoadFromResourceName(resource,'page');
  pagebmp2.LoadFromResourceName(resource,'page2');
  Titlebmp.LoadFromResourceName(resource,'title');
  SmallBtnbmp.LoadFromResourceName(resource,'smallbtn');;
  closebtnbmp.LoadFromResourceName(resource,'closebtn');
  quessbtnbmp.LoadFromResourceName(resource,'quessbtn');
  statictext22.loadMyresource(resource,'Buttontext');
  statictext24.loadMyresource(resource,'Buttontext');
  statictext30.loadMyresource(resource,'Buttontext');
  statictext32.loadMyresource(resource,'Buttontext');
  statictext31.loadMyresource(resource,'Buttontext');
  statictext33.loadMyresource(resource,'Buttontext');
  toolbarbmp:=Tbitmap.Create;
  toolbarbmp.LoadFromResourceName(resource,'toolbar');
  format.TimePMString:='下午';
  format.TimeAMString:='上午';

⌨️ 快捷键说明

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