두 개의 프로젝트 파일을 이용하여
두 개(고객등록,우편번호조회) 의 OCX를 생성했습니다..
한개는 고객등록.htm 또 한개는 우편번호조회.htm 입니다.
첨에 고객등록.htm 를 열어서 브라우져에 띄운다음
우편번호 항목에서 버튼을 클릭하여 우편번호조회.htm을 팝업으로 연후
우편번호를 선택하여 다시 고객등록.htm에있는 액티브폼에 뿌려주고
싶습니다.
그런데 WM_COPYDATA를 이용하여 코딩을 했는데...
우편번호조회.htm에 있는 액티브폼의 조회된 디비그리드를 더블클릭할때
다음과 같이 코딩을 했습니다.
procedure TFLoadPost.DBGrid2DblClick(Sender: TObject);
var
wnn : HWND;
DataStruct : TCopyDataStruct;
Data : TData;
IExplorer : THandle;
begin
wnn := FindWindow('TFCustomer','FCustomer');
Data.s := FDMBasic.cdsZipPOSTNO.Value; 있나요?
ShowMessage(Data.s);
DataStruct.dwData := wnn;
DataStruct.cbData := SizeOf(TData);
DataStruct.lpData := @Data;
SendMessage(wnn,WM_COPYDATA,wParam(Application.Handle),
lParam(@DataStruct));
IExplorer := FindWindow('IEFrame', nil);
If IExplorer <> 0 Then
SendMessage(IExplorer, WM_SYSCOMMAND, SC_CLOSE, 0);
end;
위의 코딩에서 wnn := FindWindow('TFCustomer','FCustomer')
로했는데 <--브라우져안에 있는 폼을 찾을수 있는건지요?
그리고 수신하는 쪽의 고객등록.htm에 있는 Activeform에 다음과
같이 코딩을 했습니다..
type
tData = Record
s:String[7];
end;
procedure TFCustomer.WMCopyData(var Message:TMessage); //사용자정의프로시져
var
Data : TData;
begin
CopyMemory(@data,PCopyDataStruct(Message.LParam)^.lpData,SizeOf(TData));
Message.Result := 1;
우편번호.Value := Data.s;
end;
그리고 이 프로시져를 어느이벤트에서 호출을 해주어야 하는지요?
사실 우편번호는 팝업으로 띄운거라...고객등록쪽은 특별한 이벤트가
없는거 같아서요..
어느부분이 잘못되었는지좀 도와주세요!!!!!