Screen.OnActiveFormChange 이벤트를 아래와 같이 처리했습니다.
procedure TMainForm.FormCreate(Sender: TObject);
begin
Screen.OnActiveFormChange:= UpdateMenuItems;
end;
procedure TMainForm.UpdateMenuItems(Sender: TObject);
var
MenuEnable:Boolean;
begin
MenuEnable:= (MDIChildCount>0) and (ActiveMDIChild<>nil);
EditItem.Enabled := MenuEnable; //편집메뉴 활성화
CloseChildItem.Enabled := MenuEnable; //닫기메뉴 활성화
end;
그런데 자꾸 AccessViolation이 나는군요. 어디가 잘못된 것인지 잘 모르겠군요.
> Screen.OnActiveFormChange 이벤트를 아래와 같이 처리했습니다.
>
> procedure TMainForm.FormCreate(Sender: TObject);
> begin
> Screen.OnActiveFormChange:= UpdateMenuItems;
> end;
>
> procedure TMainForm.UpdateMenuItems(Sender: TObject);
> var
> MenuEnable:Boolean;
> begin
> MenuEnable:= (MDIChildCount>0) and (ActiveMDIChild<>nil);
> EditItem.Enabled := MenuEnable; //편집메뉴 활성화
> CloseChildItem.Enabled := MenuEnable; //닫기메뉴 활성화
> end;
>
> 그런데 자꾸 AccessViolation이 나는군요. 어디가 잘못된 것인지 잘 모르겠군요.
>
폼의 Destroy 이벤트에 Screen.OnActiveFormChange:= nil을 추가함으로써 해결했습니다.