怎样消除窗口闪烁?(20分)

  • 主题发起人 主题发起人 fwcy
  • 开始时间 开始时间
TO:cyf_00002
这段程序在B退出时怎样处理?

procedure TFormA.FormShow(Sender: TObject);
var i:integer;
begin

for i:=0 to componentcount-1 do
if (Components is Tmenuitem) then
if pos((components as Tmenuitem).name,rights)>0 then
(components as Tmenuitem).enabled:=true;

end;

是这样吗?不行的!

procedure TFORMB.FormCLOSE(Sender: TObject);
var i:integer;
begin

for i:=0 to formA.componentcount-1 do
if (formA.Components is Tmenuitem) then
if pos((formA.components as Tmenuitem).name,rights)>0 then
(formA.components as Tmenuitem).enabled:=true;

end;

 
TO:JILONGER
你那段程序是在那个窗体的事件写入?form1是指那个窗口?
 
我执行没问题啊,是不是你条件有错啊。
 
TO:0000鬼0000
不会有错,写在onshow中就没问题!
 
不可能吧。
我的程序怎么可以呢?
你是不是在B中没有usesA呀。
 
老兄把设置变量全换到FORMA或是全局的就完了,为什么非要放B中呢,你放B中以后有变化
怎么办啊?
 
{没有问题}
//FORM1
procedure TForm1.FormActivate(Sender: TObject);
begin
Edit1.Text := IntToStr(Form2.val);
end;

procedure TForm1.FormShow(Sender: TObject);
begin
Form2.Show;
end;
//FORM2
unit Unit2;

interface

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

type
TForm2 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
{ Private declarations }
public
val:Integer;
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
val:=1;
self.Hide;
end;

procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
val:=9;
Form2.Hide;
end;

end.
 
在A的Paint里写显示B
这样就不会了
OperatorID 变量来判断是否已经登陆过,不要的话是是每次Paint时都会出来登陆窗口的

这只是个思路,你应该自己写
 
后退
顶部