Q&A

  • ActiveForm사이의 데이터 전송???????
두 개의 프로젝트 파일을 이용하여

두 개(고객등록,우편번호조회) 의 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;

그리고 이 프로시져를 어느이벤트에서 호출을 해주어야 하는지요?

사실 우편번호는 팝업으로 띄운거라...고객등록쪽은 특별한 이벤트가

없는거 같아서요..

어느부분이 잘못되었는지좀 도와주세요!!!!!



0  COMMENTS