惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
人人都是产品经理
人人都是产品经理
IT之家
IT之家
T
The Blog of Author Tim Ferriss
V
V2EX
博客园 - 聂微东
The Cloudflare Blog
Blog — PlanetScale
Blog — PlanetScale
A
About on SuperTechFans
U
Unit 42
Vercel News
Vercel News
L
LangChain Blog
博客园 - 司徒正美
H
Help Net Security
Recent Announcements
Recent Announcements
Recorded Future
Recorded Future
V
Visual Studio Blog
Jina AI
Jina AI
Microsoft Azure Blog
Microsoft Azure Blog
GbyAI
GbyAI
Y
Y Combinator Blog
C
Check Point Blog
博客园 - 三生石上(FineUI控件)
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
J
Java Code Geeks
The Register - Security
The Register - Security
The GitHub Blog
The GitHub Blog
B
Blog RSS Feed
F
Fortinet All Blogs
B
Blog
G
Google Developers Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
云风的 BLOG
云风的 BLOG
爱范儿
爱范儿
MongoDB | Blog
MongoDB | Blog
F
Full Disclosure
有赞技术团队
有赞技术团队
罗磊的独立博客
博客园_首页
MyScale Blog
MyScale Blog
aimingoo的专栏
aimingoo的专栏
Google DeepMind News
Google DeepMind News
M
MIT News - Artificial intelligence
N
Netflix TechBlog - Medium
Engineering at Meta
Engineering at Meta
量子位
I
InfoQ
小众软件
小众软件
P
Proofpoint News Feed

博客园 - Enli

IOS 命令行安装备忘 IOS开发备忘 MAC 编制计划任务 弹出式窗口管理单元备忘 Wininet请求包装类简稿 自备工具库 多屏开发的备忘 rc资源文件的中英文应用备忘 Wininet下载类初稿 Dephi调用C#编写的WebService的一些问题与解决 (转) 关于Window的快捷方式,图标缓存的清理 Delphi 备忘五 http断点续传的单元 Delphi 代码优化(转) [转载]Delphi的四舍五入函数 同名派生的应用(转) 关于delphi的程序在英文操作系统下乱码问题 - Enli - 博客园 TWebBrowser备忘 组件开发中的技巧(转)
界面方面的备忘
Enli · 2011-11-08 · via 博客园 - Enli

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之初就要设定好高宽,而不是边画边设高宽