문제

나는 MDI 응용 프로그램에서 작성 Delphi2006 년 실행되는 XP 에서 기본 테마로.

는 방법이 있을 제어하는 모양의 MDI 을 방지하기 위해 어린이 큰 XP 스타일의 제목 표시줄에서 각 창은?

저는 한도 설정 BorderStyleMDIChildren 하기 bsSizeToolWin 하지만 그들은 여전히 렌더링이 정상적으로 형성한다.

도움이 되었습니까?

해결책

귀하의 모든 필요한 하중 초과 절차 CreateWindowHandle 은 다음과 같습니다.

unit CHILDWIN;
interface
uses Windows, Classes, Graphics, Forms, Controls, StdCtrls;

type
  TMDIChild = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
    procedure CreateWindowHandle(const Params: TCreateParams); override;
  end;

implementation

{$R *.dfm}
procedure TMDIChild.CreateWindowHandle(const Params: TCreateParams);
begin
  inherited CreateWindowHandle(Params);
  SetWindowLong(Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
end;
end.

다른 팁

의 방법으로 MDI 작동하지 않을 젤로 당신이 무엇을 행하려고 노력하는 것입니다.

필요한 경우에는"MDI 를"형식으로 고려해야 할 중 하나를 사용하여 내장 또는 상업적인 도킹 패키지를 사용하여 도킹 스테이션 설치를 모방하는 MDI 느낌입니다.

내 Delphi apps,나는 자주 사용하 TFrames 과 부모들을 주요 양식을 극대화하고 그들을 그래서 그들은 클라이언트 영역입니다.이것은 당신과 유사한 무언가 어떻게 전망이 보입니다.그것은 다음과 같습니다:

TMyForm = class(TForm)
private
  FCurrentModule : TFrame;
public
  property CurrentModule : TFrame read FModule write SetCurrentModule;
end;

procedure TMyForm.SetCurrentModule(ACurrentModule : TFrame);
begin
  if assigned(FCurrentModule) then
    FreeAndNil(FCurrentModule);  // You could cache this if you wanted
  FCurrentModule := ACurrentModule;
  if assigned(FCurrentModule) then
  begin
    FCurrentModule.Parent := Self;
    FCurrentModule.Align := alClient;
  end;
end;

그것을 사용하려면,당신은 단순히 수행하십시오:

MyForm.CurrentModule := TSomeFrame.Create(nil);

이 사용해야 하는 인터페이스(을 만드는 IModule 인터페이스 또는 뭔가)을 제공하지 않습니다.난 종종 그렇지만,그것보다 더 복잡한 필요를 설명하는 개념을 여기에.

HTH

지가 있다고 생각하지 않은;내 경험에 의하면,MDI 델파이 매우 엄격하게 제한에 의해 통제 구현에 VCL(아마도 Windows API?).예를 들어,시도하지 않는 숨어있는 MDI 아동(당신을 얻을 것이지 예외 당신이 시도하는 경우,그리고 당신은 당신을 통해 이동하는 몇 가지의 API 농구의 주위에 일하는 것),하거나 변경하는 방법으로 MDI 아동의 주요 메뉴가 병합된 호스트와의 양식을습니다.

이러한 제한,아마도 당신을 재고해야 한다 왜 당신은 같은 시스템을 보유하고 있습니다.타이틀 바에서 첫 번째 장소는?나는 거기에도 좋은 이유가 이 MDI 물건은 표준화---사용자가 감사합니다:)

(PS:를 볼 좋은 델파이 질문에 주위에 여기!)

감사 onnodb

불행하게도 클라이언트는 주장에 MDI 및 작고 있습니다.

내 일 방법 중 하나 그것을 하고 있는가를 숨기기 제목 표시줄을 재정의하여 윈도우 createparams 속성을 만든 다음 내 자신의 제목 표시줄(간단한 위원회와 일부 마우스 처리에 대한 이동하).잘 작동하도록 충분히 생각할 그것을 실행하여 클라이언트에 보면 그것을 할 것입니다...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top