Q&A

  • 홍성락님 다시한번 부탁드려요
홍성락님 다시 한번 부탁드립니다.

왜전에 .. 엑셀을 패널의 올리는것은 많은 도움을 받았어요

그런데요..

문제는 셋업파일을 만들서 배포할려고 하는데...

처음에... 프로그램 실행하고 엑셀을 패넬을 올리면요..

엑셀의 전체.. 메뉴하고 툴바가 하나도 없이 올라옵니다.

그러다가..

컴퓨터에잇는 엑셀을 한번 실행한다음 종료하고.나서..

프로그램을 실행하면 엑셀이 정상적으로 보입니다.

제가 셋업만들때 빠트린것이 있나요..

아님ㄴ.. 셋업만들때 엑셀도 라이브러리 추가 하는것이 있나요..

알려주세요...
3  COMMENTS
  • Profile
    홍성락 2002.09.04 01:08
    hsr////////////////////////////////////////////////////////////
    정확히 파악이 안되네요....
    몇가지 질문식 답변을 하겠습니다.

    1.엑셀의 메뉴가 안보인다는것은 엑셀ole에 간소화하는것으로 해당 시트만 나오는 아주약식이란게 있긴 있어요, 주로 뷰만할때...
    ShellExecute로 할때 SW_HIDE으로부르면 메뉴,툴바 아무것도 안나옵니다.
    ShellExecute(0, 'open', PChar('Excel'), nil, nil, SW_HIDE);
    그런데 예전게 이런식으로 창모양이 나오나요?
    그리고 꼭 ole를 쓸 필요는 없어요.
    전번에 처럼 sleep로 잠시 기다렸다가 핸들을 찾으면 되는데....
    var
        wnd :  HWND;
    begin
       ShellExecute(0, 'open', PChar('Excel.exe'), nil, nil, SW_SHOWNORMAL);
       sleep(1000);
       wnd := FindWindow( 'XLMAIN', nil );
       Windows.SetParent( wnd, Panel1.Handle );
       setWindowPos( wnd, Panel1.Handle , 0, 0, Panel1.clientwidth, Panel1.clientheight ,  SWP_NOZORDER or sWP_SHOWWINDOW);
    end;

    2.setWindowPos에 -26을 했나요 위 표시줄을 안보이게하려고하셨나요?
    그럼 Panel1.clientheight+26하면 꽉차보이는데요...
    하여간, 파일은 열지 않고 또 새 워크시트도 만들지 않았네요
    XLApp.WorkBooks.Open(OpenDialog1.FileName);

    XLApp.WorkBooks.add;

    procedure TFrmMain.FormShow(Sender: TObject);
    Var wnd: HWND;
    begin
       try
           XLApp:= CreateOleObject('Excel.Application');
       except
           ShowMessage('엑셀이 설치되어있지 않습니다.');
           exit;
       end;
       XLApp.WorkBooks.add; <<<<< 추가해보세요

       XLApp.Visible := True;   //엑셀실행          
       wnd := findwindow('XLMAIN', nil );
       Windows.SetParent(wnd, Panel1.Handle); //Panel1.Handle
       SetWindowPos( wnd, Panel1.Handle , 0, -26, Panel1.clientwidth, Panel1.clientheight , SWP_NOZORDER or sWP_SHOWWINDOW );   //엑세을 실행하여.. panel1올려보여줌

    end;
  • Profile
    byun 2002.09.04 02:14

    님이 하라는데로...  xlapp.workbooks.add 추가했는데도
    제말은요.. 2번처럼 작업을 했는데요~

    셋업을 만들고 다른컴퓨터 배포한다음 실행을 하면. 엑셀 메뉴툴바이런것들이 전부 나와야하는데.. 나오지 않습니다.

    어떻게 해야하나요..

    그런데 우낀것은요.. 프로그램에서 엑셀 실행말구요..

    원래엑셀을 실행한번해준다음  프로그램을 실행하면... 엑셀의 툴바 메뉴가 전부 보임니다..


    알려주세요


  • Profile
    홍성락 2002.09.04 03:16
    ShowWindow(wnd,SW_SHOWNORMAL);을 한번 넣어보세요.
    안되면 다른 방안을 찾아보시는게 빠를겁니다.
    servers의 컴포넌트등....

    ....
    wnd := FindWindow( 'XLMAIN', nil );
    ShowWindow(wnd,SW_SHOWNORMAL);
    Windows.SetParent( wnd, Panel1.Handle );
    ...
    hsr////////////////////////////////////////////////////////////////