文档章节

模拟一个带背景的 TPanel

涂孟超
 涂孟超
发布于 2014/09/26 15:36
字数 468
阅读 6
收藏 0
程序中用 TPanel 做了容器, 需要给它一个背景图片; 发现这竟是个难题!

发现我经常使用的滚动箱控件 TScrollBox, 是一个很好的替代品.

本例需要先添加两个图片资源, 添加方法可以参考: http://www.cnblogs.com/del/archive/2008/08/23/1274591.html

本例效果图:



代码文件:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ScrollBox1: TScrollBox;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var
  bg1,bg2: TBitmap; {做背景需要持久对象, 不能为局部变量}

procedure TForm1.FormCreate(Sender: TObject);
begin
  bg1 := TBitmap.Create;
  bg2 := TBitmap.Create;

  {已经在资源中添加好了两个背景图片, 分别命名为: Bitmap1、Bitmap2}
  bg1.LoadFromResourceName(HInstance, 'Bitmap1');
  bg2.LoadFromResourceName(HInstance, 'Bitmap2');
  {如果添加本地文件可用 LoadFromFile}
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  bg1.Free;
  bg2.Free;
end;

{把滚动箱的样式做如下调整来模拟 TPanel}
procedure TForm1.Button1Click(Sender: TObject);
begin
  with ScrollBox1 do
  begin
    BevelKind := bkSoft;
    BevelOuter := bvRaised;
    BorderStyle := BsNone;
    AutoScroll := False;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Self.Brush.Bitmap := bg1;
  Self.Refresh;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  ScrollBox1.Brush.Bitmap := bg2;
  ScrollBox1.Refresh;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  if Self.Brush.Bitmap = bg1 then
  begin
    Self.Brush.Bitmap := bg2;
    ScrollBox1.Brush.Bitmap := bg1;
  end else begin
    Self.Brush.Bitmap := bg1;
    ScrollBox1.Brush.Bitmap := bg2;
  end;
  Self.Refresh;
  ScrollBox1.Refresh;
end;

end.

 
 
 
 
 

 

 

  
窗体文件:
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 195
  ClientWidth = 364
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  OnCreate = FormCreate
  OnDestroy = FormDestroy
  PixelsPerInch = 96
  TextHeight = 13
  object ScrollBox1: TScrollBox
    Left = 32
    Top = 32
    Width = 185
    Height = 137
    TabOrder = 0
  end
  object Button1: TButton
    Left = 240
    Top = 32
    Width = 105
    Height = 25
    Caption = #28378#21160#31665#26679#24335
    TabOrder = 1
    OnClick = Button1Click
  end
  object Button2: TButton
    Left = 240
    Top = 69
    Width = 105
    Height = 25
    Caption = #31383#20307#32972#26223
    TabOrder = 2
    OnClick = Button2Click
  end
  object Button3: TButton
    Left = 240
    Top = 106
    Width = 105
    Height = 25
    Caption = #28378#21160#31665#32972#26223
    TabOrder = 3
    OnClick = Button3Click
  end
  object Button4: TButton
    Left = 240
    Top = 143
    Width = 105
    Height = 25
    Caption = #20114#25442#32972#26223
    TabOrder = 4
    OnClick = Button4Click
  end
end

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2008/09/01/1281345.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
GO 语言 UI 组件库 - govcl

由于现有第三方的Go UI库不是太大就是用的不习惯,或者组件太少。就萌生了自己写一个UI库的想法Delphi(Lazarus)有些许多优秀的VCL(LCL)组件,不拿来使用太可惜了。所以就索性做了一套。目前支...

不在乎y
2017/10/10
6.9K
17
Delphi XE7的蓝牙 Bluetooth

介绍 本文章介绍了Delphi XE7的蓝牙 Bluetooth,Delphi XE7已经内建了蓝牙功能,提供了System.Bluetooth.pas单元 顾名思义,System表示XE7的蓝牙功能可以在Windows,Android,IOS系统内使用 ...

vga
2015/03/02
0
0
Java执行JavaScript脚本破解encodeInp()加密

一:背景 在模拟登录某网站时遇到了用户名和密码被JS进行加密提交的问题,如图: 二:解决方法 conwork.js Methods.java 注意:Js文件在实例中默认保存在项目源文件夹下 更多推荐: Jsoup模拟...

巅峰小学生
2018/02/10
0
0
[嵌入式开发板学习分享]迅为i.MX6开发板QT 鼠标和触摸的问题

本文转自迅为论坛:http://www.topeetboard.com 平台:迅为-i.MX6开发板 一. 背景 在使用迅为提供的QT4.7的时候,鼠标可以正常使用,有触摸但是触摸会出现问题。尤其是在左右滑动qt界面的时候...

歌之王子殿下
2017/04/13
43
0
CSS 写个带边框背景色透明的消息框

写个消息框容易太容易了,网上一搜就一大堆教程。直接拷贝粘贴到自己项目就可以啦。大多是用::after或者::before实现三角形,绝对定位移动到边上成为消息框的角角。 但是如果要我们实现背景色...

低调哥
2018/09/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

对Docker了解多少?10分钟带你从入门操作到实战上手

Docker简述 Docker是一种OS虚拟化技术,是一个开源的应用容器引擎。它可以让开发者将应用打包到一个可移植的容器中,并且该容器可以运行在几乎所有linux系统中(Windows10目前也原生支持,W...

别打我会飞
33分钟前
1
0
Java自定义注解及应用

前沿 java目前只内置了三种标准注解 注解 解释 @Override 表示当前的方法定义将覆盖超类中的方法。如果你不小心拼写错误,或者方法签名对不上被覆盖的方法,编译器就会发出错误提示 @Depreca...

细节探索者
37分钟前
1
0
Java实现视频网站的视频上传、视频转码、视频关键帧抽图, 及视频播放功能

视频网站中提供的在线视频播放功能,播放的都是FLV格式的文件,它是Flash动画文件,可通过Flash制作的播放器来播放该文件.项目中用制作的player.swf播放器. 多媒体视频处理工具FFmpeg有非常强大...

红土豆
41分钟前
1
0
谈谈lucene的DocValues特性之SortedDocValuesField

lucene的DocValues不同于document文档级别的存储,它是一个面向列的存储结构,提供从文档编号到值的映射功能。根据不同的数据类型和应用场景支持多个DocValuesField类型,SortedDocValuesFi...

FAT_mt
54分钟前
3
0
漏洞防御与修复工作

导读 漏洞管理工作是企业安全建设必不可少的一环,在风险管理工作中,漏洞管理能够防患于未然,企业对漏洞管理有着广泛的基础建设和实践经验。但随着攻防技术的发展,传统漏洞管理的安全技术...

问题终结者
57分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部