zoukankan      html  css  js  c++  java
  • 界面方面的备忘

    1. 透明panel

    unit uWnTransparentPanel;

    interface

    uses
      Windows,Classes,StdCtrls,ExtCtrls,Messages,Forms;

    type
      TWnTransparentPanel = class(TPanel)
      private
        FTransparentPercent: Integer;
        procedure SetTransparentPercent(const Value: Integer);
      protected
        procedure WMPaint(var message : TMessage); message WM_Paint;
      public
        procedure StepShow(const ALeft,ATop,HStet,VStep:Integer);
      published
        property TransparentPercent: Integer read FTransparentPercent write SetTransparentPercent;
      end;

    implementation

    { TWnTransparentPanel }

    procedure TWnTransparentPanel.SetTransparentPercent(const Value: Integer);
    begin
      FTransparentPercent := Value;
    end;

    procedure TWnTransparentPanel.StepShow(const ALeft, ATop,HStet, VStep: Integer);
    var
      I: Integer;
    begin
      Visible := True;
      Left := ALeft;
      Top := ATop+VStep*10  ;
      for I := 0 to 9 do
      begin
        Top := ATop +(9-I)*VStep;
        Self.Parent.Update;
        Self.Repaint;
        Sleep(100);
        Application.HandleMessage;
      end;
    end;

    procedure TWnTransparentPanel.WMPaint(var message: TMessage);
      procedure AlphaBlendTabControl;
      var
      MemBitmap, OldBitmap: HBITMAP;
      BF: BLENDFUNCTION;
      MemDC, DC: HDC;
      begin
        if (Parent = nilor not Parent.HandleAllocated then
        Exit;
        DC := GetDC(0);
        MemBitmap := CreateCompatibleBitmap(DC, Parent.Width, Parent.Height);
        ReleaseDC(0, DC);
        MemDC := CreateCompatibleDC(0);
        OldBitmap := SelectObject(MemDC, MemBitmap);
        try
          Parent.Perform(WM_ERASEBKGND, MemDC, MemDC);
          Parent.Perform(WM_PAINT, MemDC, 0);

          BF.SourceConstantAlpha := TransparentPercent;
          BF.AlphaFormat := 0;
          BF.BlendOp := AC_SRC_OVER;
          BF.BlendFlags := 0;
          Windows.AlphaBlend(Canvas.Handle, 00, Width, Height, MemDC, Left, Top, Width, Height, BF);
        finally
          SelectObject(MemDC, OldBitmap);
          DeleteDC(MemDC);
          DeleteObject(MemBitmap);
        end;
      end;
    begin
      inherited;
      AlphaBlendTabControl;
    end;

    end.

    2. 设计的时候,panel可以用Anchors = [akLeft, akTop, akRight, akBottom] 加上Align = alCustom达到自动预留边框的目的,就可以避免panel用Align = alClient的时候panel贴边的问题

    3. Grid载入数据的时候界面频刷的问题,主要是要Grid paint之初就要设定好高宽,而不是边画边设高宽

  • 相关阅读:
    httpclient5:信任所有证书,调用公众号接口
    驾驶技能考试系统:常见故障原因分析及排除
    C#:Combox实现key,value
    C#:密码框的两种方式
    C#:动态添加或删除控件,并根据控件名称获得控件
    微服务设计模式
    微服务设计模式
    微服务设计模式
    微服务设计模式
    微服务设计模式
  • 原文地址:https://www.cnblogs.com/enli/p/2241087.html
Copyright © 2011-2022 走看看