真是邪门,大家来看看。 ++++++++ 仅有15分 ++++++++(15分)

  • 主题发起人 主题发起人 coolingxyz
  • 开始时间 开始时间
C

coolingxyz

Unregistered / Unconfirmed
GUEST, unregistred user!
//FrmSx: TFrmSx;文件中这么写的。

procedure TFrmSx.FormCreate(Sender: TObject);
var
s : String;
begin
new(xuanx.who);
xuanx.style := main.FrmFh.udpserver.Tag; //收发器类型
FrmSx.Caption := FrmFh.myxinxi.Ip + ' ' + IntToStr(FrmFh.myxinxi.Port)+'端口'+' '+ IntToStr(FrmFh.myxinxi.Data[2])+'机架'+' '+IntToStr(FrmFh.myxinxi.Data[4])+'插槽';
if xuanx.style = 1 then
begin //100M
//
end else
begin //自适应
if copy(s,6,1) = '1' then //dup
begin
FrmSx.Tag := 1;
RGUdp.ItemIndex := 0;
RGUdp.Tag := 0;
FrmSx.Tag := 0;
end else
begin
FrmSx.Tag := 1;
RGUdp.ItemIndex := 1;
RGUdp.Tag := 1;
FrmSx.Tag := 0;
end;

if copy(s,7,1) = '1' then
begin
FrmSx.Tag := 1;
RGSpd.ItemIndex := 1;
RGSpd.Tag := 1;
FrmSx.Tag := 0;
end else
begin
FrmSx.Tag := 1;
RGSpd.ItemIndex := 2;
RGSpd.Tag := 2;
FrmSx.Tag := 0;
end;

if copy(s,8,1) = '1' then
begin
FrmSx.Tag := 1;
RGSpd.ItemIndex := 0;
RGSpd.Tag := 0;
RGUdp.ItemIndex := 0;
RGUdp.Tag := 0;
FrmSx.Tag := 0;
end;
end;
end;

procedure TFrmSx.FormClose(Sender: TObject; var Action: TCloseAction);
begin
xuanx.who.Free;
Action := caFree;
FrmSx := nil;
end;


//主窗体中是这么写的
if assigned(FrmSx) then FrmSx.Close;
Application.CreateForm(TFrmSx, FrmSx);
FrmSx.ShowModal;

如果我把这三句写在一个button里的话,一切正常。
procedure TFrmFh.udpserverUDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle); //数据返回
begin
//但是我把它写在这里的话,当我把FrmSx关闭的时候,主窗体上的一个动画还能动(用timer控制),但就是不能响应我的任何操作了。
end;

请大家指教
 
case xxxxxxxxxxx of
1: bengin
if assigned(FrmSx) then FrmSx.Close;
Application.CreateForm(TFrmSx, FrmSx);
FrmSx.ShowModal; //当我关闭了FrmSx的时候总是停在这里,说是读写内存出错了。
end;
2: //其他语句。
end;
 
这样改看看
if assigned(FrmSx) then FrmSx.Free;
Application.CreateForm(TFrmSx, FrmSx);
FrmSx.Show;
 
谢谢,我的问题不是这个。我已经找到了。不过我还是给你分吧。 ;( 我没有可用分了。
 
多人接受答案了。
 
后退
顶部