윈2000(sp2)와 델파이5를 사용하고 있습니다.(업뎃 패치 했음)
이문제는 어제 질문을 올렸는데 오늘 원인을 밣혀 내어 다시 적어 봅니다.
이중철님 채승호님 답변에 감사드리구요.
역시 free와는 다른 문제 였더군요(어떻게 보면 관계가 조금 있을지도..)
일단 증상부터 다시 밣히 겠습니다.
**등장폼
form1 : 메인폼
form2 : 모달폼(showmodal로 나타날 폼)
dbgrid1 : form1의 디비 그리드
dbgrid2 : form2의 디비 그리드
**발단
procedure Tform1.buttonClick(sender : Tobject);
var
form2 : Tform2;
begin
form2 := Tform2.Create(Self);
form2.shomodal;
if modalResult = mrOk then
xxxxxxxxxxx;
form2.free;
end;
참고 : 위의 소스는 전혀 문제 없는 소스입니다.
**전개
위의 소스처럼 폼을 띠웁니다.
공교롭게도
dbgrid1와 dbgrid2의 셀의 위치가 딱 맞아 떨어 집니다.
dbGird2의 그리드를 더블 클릭 합니다.
아래의 폼의 dbGrid1도 같이 클릭이 되어 버립니다.
그래서 원하지도 않은 dbGrid1의 OnCellClick 가 발생하여 버립니다.
즉 showmodal 로 띠운 폼에서 디비그리드를 클릭 하면
아래의 메인폼의 디비드리드 또한 클릭이 되어 버린다는 말입니다.
(바로 아래(매인폼의 디비그리드) 위치한 디비그리드가 클릭 되어 버려짐..)
물론 모달폼의 위치를 옮겨 버리면
(바로 아래의 디비그리드와 모달의 디비그리드가 겹쳐지지 않게 ...)
이상이 없죠..
왜 이런것일까요..
이 이유 알아 내는것도 오늘 소스 다시 코딩 하면서(ㅠㅠ)
우연히 알아낸 사실입니다.(백업 해놓아서 다행이지..ㅡㅡ)
다른님들도 그런 경우 겪으신 분 없으시나요..
저만 그런것 같지는 않는데..
다른 컴에 제 소스를 다시 깔아 보니깐.. 역시 위와 같은 현상이 일어 나더군요.
아 그리고 저번에 말했듯이
모달폼.free 하면 위와 같은 현상
free를 하지 않으면 위와 같은 현상은 일어 나지 않습니다.
참 알수 없는 현상이죠.
이 현상을 좀 해석 좀 해주세요..
해결법이랑..
form1과 form2는 같은 프로젝트에 있는 폼인거 같은데여
button1click안에
var
form2 : Tform2;
라구 선언해 뒀던데 왜 일케 하셨지염?
선언안하구 걍
form2 := TForm2.create(self)하는거 하구 차이가 있나요?
이게 문제가 있는거 아닌가요?