社区
数据库相关
帖子详情
菜鸟的问题:DELPHI中form的形状可以有方形改成自定义的形状吗?
fengguo1009
2003-08-24 01:13:35
各位大吓:
我想做一个有个性形状的东西,怎么样将DELPHI中form的形状可以有方形改成自定义的形状吗?
急急急!!!!!!!!!!!!!!
...全文
66
5
打赏
收藏
菜鸟的问题:DELPHI中form的形状可以有方形改成自定义的形状吗?
各位大吓: 我想做一个有个性形状的东西,怎么样将DELPHI中form的形状可以有方形改成自定义的形状吗? 急急急!!!!!!!!!!!!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
karach
2003-08-29
打赏
举报
回复
看来我是没有分拉,
我的专家问题->我的问题->管理->给分就可以拉
注意给点给我哦
fengguo1009
2003-08-29
打赏
举报
回复
hehe,我是CSDN的新手,请问怎么给分??不好意思!
frogshero
2003-08-26
打赏
举报
回复
給分撒
fengguo1009
2003-08-26
打赏
举报
回复
xiexie
frogshero
2003-08-24
打赏
举报
回复
zswang老大的
(*//
标题:不规则窗体的弹出效果
说明:加上图片效果就好点
日期:2002-10-07
设计:Zswang
//*)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, Buttons;
type
TForm1 = class(TForm)
ImageRight: TImage;
ImageDown: TImage;
PanelCenter: TPanel;
ImageCenter: TImage;
MemoRight: TMemo;
MemoDown: TMemo;
SpeedButtonRight: TSpeedButton;
SpeedButtonDown: TSpeedButton;
SpeedButtonClose: TSpeedButton;
procedure SpeedButtonRightClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure SpeedButtonDownClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure ImageCenterMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure SpeedButtonCloseClick(Sender: TObject);
private
{ Private declarations }
FRGNRight: HRGN;
FRGNDown: HRGN;
FRGNCenter: HRGN;
FRGNForm: HRGN;
FShowRight: Boolean;
FShowDown: Boolean;
procedure SetShowRight(const Value: Boolean);
procedure SetShowDown(const Value: Boolean);
procedure ShowFormRgn;
public
{ Public declarations }
property ShowRight: Boolean read FShowRight write SetShowRight;
property ShowDown: Boolean read FShowDown write SetShowDown;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.SpeedButtonRightClick(Sender: TObject);
begin
ShowRight := not ShowRight;
end;
procedure TForm1.SpeedButtonDownClick(Sender: TObject);
begin
ShowDown := not ShowDown;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
with ImageCenter do begin
Picture.Bitmap.Width := Width;
Picture.Bitmap.Height := Height;
Picture.Bitmap.Canvas.Brush.Color := clBlue;
Picture.Bitmap.Canvas.FillRect(Rect(0, 0, Width, Height));
end;
///////Begin 创建不规则的区域
{ TODO : 修改区域 }
FRGNRight := CreateRectRgn(
ImageRight.BoundsRect.Left,
ImageRight.BoundsRect.Top,
ImageRight.BoundsRect.Right,
ImageRight.BoundsRect.Bottom);
FRGNDown := CreateRectRgn(
ImageDown.BoundsRect.Left,
ImageDown.BoundsRect.Top,
ImageDown.BoundsRect.Right,
ImageDown.BoundsRect.Bottom);
FRGNCenter := CreateRectRgn(
ImageCenter.BoundsRect.Left,
ImageCenter.BoundsRect.Top,
ImageCenter.BoundsRect.Right,
ImageCenter.BoundsRect.Bottom);
///////End 创建不规则的区域
ShowFormRgn;
DoubleBuffered := True;
FShowRight := False;
FShowDown := False;
end;
procedure TForm1.SetShowRight(const Value: Boolean);
const
{$J+}vChanging: Boolean = False;
const
cOffset = 3;
var
I: Integer;
vStart, vEnd: Integer;
vOffset: Integer; //偏移量
begin
if FShowRight = Value then Exit;
if vChanging then Exit;
FShowRight := Value;
vChanging := True;
if FShowRight then begin
vOffset := -cOffset;
vStart := ImageRight.Left;
vEnd := ImageRight.Left - ImageRight.Width + 20;
end else begin
vOffset := +cOffset;
vStart := ImageRight.Left;
vEnd := ImageRight.Left + ImageRight.Width - 20;
end;
I := vStart;
while Abs(I - vEnd) > Abs(vOffset) do begin
ImageRight.Left := I;
MemoRight.Left := I + 1;
SpeedButtonRight.Left := I + 170;
Application.ProcessMessages;
OffsetRgn(FRGNRight, vOffset, 0); //偏移区域
ShowFormRgn;
ClientWidth := I + ImageRight.Width + 2; //宽度改变
Update;
I := I + vOffset;
end;
vChanging := False;
end;
procedure TForm1.SetShowDown(const Value: Boolean);
const
{$J+}vChanging: Boolean = False;
const
cOffset = 3;
var
I: Integer;
vStart, vEnd: Integer;
vOffset: Integer; //偏移量
begin
if FShowDown = Value then Exit;
if vChanging then Exit;
FShowDown := Value;
vChanging := True;
if FShowDown then begin
vOffset := -cOffset;
vStart := ImageDown.Top;
vEnd := ImageDown.Top - ImageDown.Height + 20;
end else begin
vOffset := +cOffset;
vStart := ImageDown.Top;
vEnd := ImageDown.Top + ImageDown.Height - 20;
end;
I := vStart;
while Abs(I - vEnd) > Abs(vOffset) do begin
ImageDown.Top := I;
MemoDown.Top := I + 1;
SpeedButtonDown.Top := I + 95;
Application.ProcessMessages;
OffsetRgn(FRGNDown, 0, vOffset); //偏移区域
ShowFormRgn;
ClientHeight := I + ImageDown.Height + 2; //宽度改变
Update;
I := I + vOffset;
end;
vChanging := False;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
DeleteObject(FRGNRight);
DeleteObject(FRGNDown);
DeleteObject(FRGNCenter);
DeleteObject(FRGNForm);
end;
procedure TForm1.ShowFormRgn;
begin
///////Begin 清除区域
DeleteObject(FRGNForm);
FRGNForm := CreateRectRgn(0, 0, 0, 0);
///////End 清除区域
CombineRgn(FRGNForm, FRGNCenter, FRGNRight, RGN_OR);
CombineRgn(FRGNForm, FRGNForm, FRGNDown, RGN_OR);
SetWindowRgn(Handle, FRGNForm, True);
end;
procedure TForm1.ImageCenterMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
Perform(WM_SYSCOMMAND, SC_MOVE + 1, 0);
end;
procedure TForm1.SpeedButtonCloseClick(Sender: TObject);
begin
Close;
end;
end.
//------------------------------------------------------------------------
object Form1: TForm1
Left = 97
Top = 22
BorderStyle = bsNone
Caption = 'Form1'
ClientHeight = 486
ClientWidth = 602
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
OnDestroy = FormDestroy
PixelsPerInch = 96
TextHeight = 13
object ImageRight: TImage
Left = 408
Top = 36
Width = 190
Height = 263
end
object ImageDown: TImage
Left = 64
Top = 368
Width = 294
Height = 115
end
object SpeedButtonRight: TSpeedButton
Left = 576
Top = 140
Width = 17
Height = 33
OnClick = SpeedButtonRightClick
end
object SpeedButtonDown: TSpeedButton
Left = 192
Top = 464
Width = 41
Height = 17
OnClick = SpeedButtonDownClick
end
object MemoDown: TMemo
Left = 83
Top = 369
Width = 256
Height = 80
BevelKind = bkFlat
Lines.Strings = (
'MemoDown')
TabOrder = 2
end
object MemoRight: TMemo
Left = 410
Top = 52
Width = 156
Height = 225
BevelKind = bkFlat
Lines.Strings = (
'MemoRight')
TabOrder = 1
end
object PanelCenter: TPanel
Left = 0
Top = 0
Width = 409
Height = 369
BevelOuter = bvNone
TabOrder = 0
object ImageCenter: TImage
Left = -2
Top = 0
Width = 411
Height = 369
ParentShowHint = False
ShowHint = False
OnMouseDown = ImageCenterMouseDown
end
object SpeedButtonClose: TSpeedButton
Left = 380
Top = 5
Width = 23
Height = 22
OnClick = SpeedButtonCloseClick
end
end
end
ThinkPHP5
菜鸟
必备之:微信扫码支付
微信支付是我们在做项目和网站或商城的时候经常遇到的一个
问题
,我从接触到熟悉,一步一个坑走过来,花费许多时间和精力,为了不让小...目的就是让大家彻底明白微信支付的全过程,也让大家可以把学到的立刻用到项目
中
。
实战化课程:全面掌握SQL Server高可用技术,从
菜鸟
到专家
课程系统性强,知识体系完整,覆盖90%以上的企业环境下SQL Server高可用场景,课程
中
不仅演示详细的操作步骤,更加突出最常见的故障和
问题
,让学员少走“弯路”,不只是让学员学会“操作”更能让学员“操作”的规范...
[2023]云原生高薪实战技术K8S案例分析:基于生产环境学习k8s
韩先超老师一直在一线工作,具备实战经验,课程内容均来自企业真实项目,课程覆盖大厂真实案例,讲解世界1000强企业实战课程,大家可以放心学习,学习课程之后即可在公司具体应用。 讲师简介 高级运维、资深...
Web Components 新前端组件新手
菜鸟
快速入门与实战
1,从
菜鸟
零基础到熟练掌握,使用 Web Components 基于原生的新 前端组件技术,用有趣的堆积木的方式,开发实战一个带动画交互的组件式移动端 WEB 应用。 组件式开发是前端发展的方向,现在流行...
Java大数据培训学校全套教程-51)MapReduce进阶
多文件输出MultipleOutputs,DBOutput
Form
at把MapReduce结果输出到mysql
中
,MapReduce实现join算法,map端做join,寻找用户间的共同好友等,围绕着Mapreduce知识点的相关14个
问题
,学过后可以基本胜任MapReduce编程...
数据库相关
2,497
社区成员
88,445
社区内容
发帖
与我相关
我的任务
数据库相关
Delphi 数据库相关
复制链接
扫一扫
分享
社区描述
Delphi 数据库相关
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章