2009-04-15 6 views
2

필자는 필자가 델파이 (Win32)로 작성한 4 개의 작은 단일 형식 유틸리티 응용 프로그램을 가지고 있습니다. 잠시 동안 나는 "느낌"을주는 것처럼 사용하고 싶습니다. 그것들은 모두 하나의 응용 프로그램이며, 주로 이들 사이에서 앞뒤로 쉽게 전환 할 수 있습니다. 예를 들어 TabSheet 안의 컨테이너 또는 그 라인을 따라 뭔가를 컨테이너에 삽입 할 수 있다면 좋을 것입니다.자신의 앱에 시각적으로 다른 앱이 있음

AppControls는 TForm 하위 항목과 비슷한 기능을하는 아주 작은 구성 요소로, Delphi 응용 프로그램에서 다른 컨테이너 내부에 삽입 할 수 있도록합니다 (acEmbeddedForm http://www.appcontrols.com/appcontrols/overview.html '> 여기에 나와 있습니다).하지만이 최종 결과를 염두에두고 다섯 번째 응용 프로그램을 빌드하고 원래 네 가지 응용 프로그램의 모든 형태로 컴파일하지 않으면 네 개의 개별 응용 프로그램으로이 작업을 수행 할 수있는 방법이 없습니다.

다른 애플리케이션 (예 : 메모장)을 "포함"하거나 포함 시키려한다고 상상할 수도 있습니다.

델파이에서 가능합니까? (모든 것이 가능합니다 ... < g>) ... 그렇다면 엄청난 양의 Windows API에 익숙해 져야합니다.

나는 이것들에 대한 각각의 대답이 아마도 예, 그렇습니다라고 생각하지만 대답은 예, 아니오라고 생각하고 있습니다. 나는 단지 확신 할 것을 요구할 것이라고 생각했다. < g>

여기서는 프로그래밍 관점에서 꿈꿔 왔지만 이것이 가치있는 것보다 더 많은 작업입니다. 일반적으로 Windows보다 3 ~ 4 개의 표준 응용 프로그램을 앞뒤로 전환하는 유틸리티에 대한 권장 사항은 무엇입니까?

답변

3

기타 SO question은 몇 가지 힌트를 제공 할 수 있습니다. 기본적으로 그것은 SetParent을 사용한다고 명시되어 있습니다. FindWindow을 사용하여 기존 창 (예 : notepad.exe)을 열거하고 SetParent를 호출하여 사용자 자신의 하위 항목을 다시 지정할 수도 있습니다.

5

작은 응용 프로그램을 OLE 서버로 만들고 한 주 양식으로 호스트하는 새 응용 프로그램을 만들 수 있습니다. OLE는 Delphi에서 잘 지원되므로 꽤 쉽고 API를 많이 사용하지 않아야합니다.

1

임베디드 프로그램에 관해서는 제어 할 권한이 없습니다. 설명하는 것을 수행하는 데 많은 어려움을 겪을 것 같고, 전혀 불가능할 수도 있지만 의심 스럽습니다. 많은 저수준 API 호출과 일반적인 불쾌감에 의존 할 것입니다.

응용 프로그램을 다소 재구성하려는 경우 4 개의 프로그램을 플러그인으로 만들고 그 중 일부 또는 전부를로드 할 수있는 다섯 번째 "호스트"응용 프로그램을 만들 수 있습니다.

http://delphi-jedi.org에서 무료로 사용할 수있는 JEDI 플러그인 시스템을 살펴 보시기 바랍니다.

0

다른 앱은 모두 단일 양식이므로 각 앱의 모든 구성 요소는 Component Template으로 저장된 별도의 '배경'패널에 잘라내거나 붙여 넣을 수 있습니다. 그런 다음 자신의 PageControl/Tab에 컴포넌트 템플릿을로드 할 수 있습니다.

1

몇 가지 내부 앱을 하나의 앱으로 결합하여 탭 사이를 선택하면 "다섯 번째 앱 만들기"솔루션을 사용했습니다.

frmShipRef := TfrmShipRef.Create(self); 
frmShipRef.Parent := tabShipRef; 
frmShipRef.BorderStyle := bsNone; 
frmShipRef.Align := alClient; 
frmShipRef.Show; 

방금 ​​탭으로 새 양식을 설정 한 다음 위의 코드로 서로 다른 양식을 만듭니다.이것은 잘 작동했고 약간의 조건부 컴파일을 통해 왼쪽 사이에 데이터를 전달할 수있는 일종의 "meta-copy-and-paste"를 제공하는 패널을 추가 할 수있었습니다.

+0

팁 (및 코드!)에 감사드립니다. :) 나는 지금 그 길을 끝낼지도 모른다. 우리가 보게 될 것이다. – Jamo

관련 문제