| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 664 人关注过本帖
标题:可生成一个透明窗体的程序,代码差不多是照搬的,请教各位大侠,问题出在哪 ...
只看楼主 加入收藏
寻H不得
Rank: 4
等 级:业余侠客
威 望:1
帖 子:181
专家分:222
注 册:2010-10-9
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:6 
可生成一个透明窗体的程序,代码差不多是照搬的,请教各位大侠,问题出在哪里??
这是偶在教程里学习编写的一个程序,可生成一个透明窗体,代码差不多是照搬的,不知道问题出在哪里?请各位高手指点??
unit UnitONE;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;
type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Button1: TButton;
    Button2: TButton;
    procedure FormResize(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    procedure DoInvisible;
    procedure Dovisible;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.Doinvisible;
var
 Acontrol:TControl;
 A,Margin,X,Y,Ctlx,Ctly:Integer;
{ FullRgn:=???;这里原本没有的,该如何处理啊,如果要定义,这是个什么类型的变量啊}
begin
  Margin:=(width-ClientWidth)  div 2;
  FullRgn:=CreateRectRgn(0,0,width,Height); //运行到这里就出错了,是不是没定义啊??但原文如此,如果要定义的话,如何处理啊??
  X:=Margin
  Y:=Height-ClientHeight-Margin;
  ClientRgn:=CreateRectRgn(X,Y,X+ClientWidth,Y+ClientHeight);
  CombinRgn(FullRgn,FullRgn,ClientRgn,RGN_DIFF);
   for A:=0 to controlCount -1 do begin
     AControl:=controls[A];
      if (Acontrol is Twincontrol) or (Acontrol is TGraphicControl)
         then with AControl do begin
          if Visible then begin
            CTlX:=X+Left;
            CTlY:=Y+Top;
            CtlRgn:=CreateRectRgn(CtlX,CtlY,CtlX+Width,CtlY+Height)
              CombineRgn(FullRgn,FullRgn,CtlRgn,RGN_OR);
         end;
       end;
procedure TForm1.DOVisible;
   begin
   FullGgn:=CreateRecRgn(0,0,Width,Height);
   COmbineRgn(FUllRgn,FullRgn,FUllRgn,RGN_COPY);
   SetWindowRgn(Handle,FullRgn,TRUE);
   end;
 procedure TForm1.Button2Click(Sender: TObject);
begin
 Application.Terminate ;
end;

procedure TForm1.FormResize(Sender: TObject);
begin
 if Button1.Caption='Show' then
   DoInvisible
 else
   DoVisible;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 Deleteobject(ClientRgn);
 Deleteobject(FullRgn);
 deleteobject(CtlRgn);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  if Button1.Caption:='Show' then begin
  Dovisible;
  Button1.Caption:='Hide';
  end
  else begin
  DoInvesible;
  Button1.Caption:='Show';
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 DoInvisible;
end;

end.


[ 本帖最后由 寻H不得 于 2010-10-13 16:08 编辑 ]
搜索更多相关主题的帖子: 窗体 代码 
2010-10-12 22:22
倾尽天下2009
Rank: 2
等 级:论坛游民
帖 子:6
专家分:15
注 册:2010-10-15
收藏
得分:10 
FullGgn是个全局变量,从下面可以看出来
2010-10-15 05:07
倾尽天下2009
Rank: 2
等 级:论坛游民
帖 子:6
专家分:15
注 册:2010-10-15
收藏
得分:0 
我对LZ表示相当无语,本人虽也是菜鸟,但一些编程的良好习惯还是有的,不懂可以问,但你一些基本的录入错误先自己要剔除来啊!拼写错误太多了!!!!!!!!!
2010-10-15 05:29
寻H不得
Rank: 4
等 级:业余侠客
威 望:1
帖 子:181
专家分:222
注 册:2010-10-9
收藏
得分:0 
唉 录入错误?
但是录入错误在哪儿??
好像就运行到那儿就卡了 不知道怎么办了
2010-10-15 22:35
寻H不得
Rank: 4
等 级:业余侠客
威 望:1
帖 子:181
专家分:222
注 册:2010-10-9
收藏
得分:0 
各位大侠 这个问题 能不能解决掉啊 就算是个全局变量 对我说 定义也是不会的 用过几种办法也过不了
2010-10-16 22:58
寻H不得
Rank: 4
等 级:业余侠客
威 望:1
帖 子:181
专家分:222
注 册:2010-10-9
收藏
得分:0 
没有满意的回帖 也得结帖么 那没办法
2010-10-18 13:35
倾尽天下2009
Rank: 2
等 级:论坛游民
帖 子:6
专家分:15
注 册:2010-10-15
收藏
得分:0 
个人觉得新手不要用那些教材自学,我也看过的,比较复杂,建议用一些入门教材,可以用电驴搜一下“百例课堂”,可以搜到一般delphi的书,这本书比较适合咱们这样的新手,而且我弄到了几乎全部随书源码,我也在看,源码我慢慢传上来,先练练吧!!

[ 本帖最后由 倾尽天下2009 于 2010-10-20 01:17 编辑 ]
2010-10-20 01:08
快速回复:可生成一个透明窗体的程序,代码差不多是照搬的,请教各位大侠,问题出 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026506 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved