2013-03-05 7 views
2

우리는 델파이 7에서 몇 가지 OLE 자동화를 사용하여 워드 문서를 열고로드 한 다음 저장하고 데이터베이스에로드합니다.Delphi OLE 자동화 GUI

이것은 정상적으로 작동하지만 OLE 비트가 진행되는 동안 진행률 표시 줄이 있어야하며 OLE 부분이 너무 오래 걸리면 시간 초과가 있어야합니다.

문제는 OLE가 진행되는 동안 전체 GUI가 정지된다는 것입니다. 진행률 막대는 아무 것도하지 않고 끝에서 오른쪽으로 쏜다.

어떻게 접근 할 수 있을지에 대한 아이디어가 있습니까?

+0

자체 스레드를 옵션으로 사용 하시겠습니까? – bummi

답변

5

나는 이것이 깔끔하게하기가 어려울 것이라고 생각합니다. 지금까지 내가 아는 한 Word 자동화는 장기간 실행되는 이벤트를 취소 할 수있는 기회를 제공하지 않습니다. 또한 진행 상황을 알려주지 않습니다.

아마도 가장 좋은 방법은 자동화를 별도의 스레드로 옮기는 것입니다. 그런 다음 장기 실행 자동화가 진행되는 동안 선택 윤곽 진행 막대를 표시합니다. 최소한 그것은 사용자에게 어떤 일이 일어나고 있음을 알리게합니다.

취소 작업이 진행되는 동안 사용자는 진행 대화 상자에서 취소 한 다음 프로그램을 계속 진행할 수 있습니다. 자동화 스레드를 죽일 수는 있지만 Word가 나쁜 상태가됩니다. 나는 단지 그것이 계속 완성되도록 하겠지만 결과를 무시한다. 사용자의 관점에서 보면 장면 뒤에서 조금 더러운 경우에도 목표를 합리적으로 충족시킬 수 있습니다.

+0

+1 "조금 더러운 장면": D – jachguate

+0

감사합니다. 우리는 이제 쓰레드 내부에서 OLE 객체를 생성하는 코드를 얻었습니다. 작동중인 스레드와 진행 막대가 이제 새로 고칩니다. Word OLE에 사용자 개입이 필요한 경우 즉, 암호로 보호 된 Word 문서 인 경우 암호가 입력되는 즉시 스레드가 종료되는 새로운 문제가 발생했습니다. – nehpets

+0

이 질문에 대한 의견을 다루기가 약간 어렵습니다. 완전히 새로운 질문 인 것 같습니다. –

관련 문제