반응형
Version 11.60
자식폼을 최소화 했을 경우에 태스크바로 내려가지 않고 좌측 하단으로 내려간다 -_-;
외국에서는 저렇게 사용하는지, 아니면 MDI 환경을 고려한 것인지는 몰라도..
나는 여간 신경쓰이고 못마땅하다 ㅋㅋㅋㅋㅋ
소스 붙잡고 엎어치기 몇 번 한 결과..
TspDynamicSkinForm 컴포넌트의 MinimizeDefault 를 True로 바꿔주면 된다.
기본적으로 컴포넌트가 생성이 될 때 False 로 셋팅을 하기 때문에 좌측 하단으로 내려가게 된다.
자.. 이제 Form의 Create의 부분에서 TspDynamicSkinForm 컴포넌트의 MinimizeDefault 속성을 True로 바꿔보자.
아차! TspDynamicSkinForm 컴포넌트를 사용해서 창을 띄웠을 경우 자식폼은 태스크바에 표시가 아니된다.
우선 태스크바에 표시를 하고나서 해야 한다. 안그러면 기존처럼 좌측 하단으로 내려가는데 모습이 영~~ 시원찮다.
그럼 자식폼의 Create 이벤트에서 아래와 같은 코드를 추가하자.
SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_APPWINDOW);
이제 다시 자식폼을 최소화 시켜보자. 슈슉~
짜잔~~ 잘 내려갔다. 그.. 그런데 -_-;
또 저기 남는 알맹이 빠져나간 허물마냥.. 또 잔상(?)이 남네... 아오 빡침 ㅋㅋㅋㅋ
다시 소스 까데기 시작!
procedure TspDynamicSkinForm.DoMinimize; var P: TPoint; begin if (Application.MainForm = FForm) or not FSupportNCArea then begin if FSupportNCArea then begin {$IFDEF VER200} if Application.MainFormOnTaskBar then if FBorderLayer.FVisible then FBorderLayer.Hide; {$ENDIF} {$IFDEF VER185} if Application.MainFormOnTaskBar then if FBorderLayer.FVisible then FBorderLayer.Hide; {$ENDIF} end; Application.Minimize; end else if FMinimizeDefault then begin // (2011-07-06) START //FBorderLayer.Hide; // (2011-07-06) END FForm.WindowState := wsMinimized; end else begin if IsNullRect(OldBoundsRect) then OldBoundsRect := FForm.BoundsRect; P := GetMinimizeCoord; if FBorderLayer.FVisible and (FBorderLayer.FData <> nil) and FBorderLayer.FData.FullBorder then FForm.SetBounds(P.X + FBorderLayer.LeftSize, P.Y - FBorderLayer.BottomSize + 10 - FBorderLayer.FData.RollUpFormHeight, GetMinWidth, GetMinHeight) else FForm.SetBounds(P.X, P.Y, GetMinWidth, GetMinHeight); if (FForm.FormStyle = fsMDIChild) and (FWindowState <> wsMaximized) then begin SendMessage(Application.MainForm.Handle, WM_MDICHILDRESTORE, 0, 0); end; end; if Assigned(FOnMinimize) then FOnMinimize(Self); end;
휴.. 찾긴 찾았으나.. 최선입니까? ㅋㅋㅋㅋ
위의 소스에서 날짜로 주석처리된 부분을 추가해주면 된다. 이 스킨컴포넌트는 기본적으로 껍데기를 다시 그린(?)다.
즉, 테두리 따로 몸통 따로 논다는 얘기.
이로써 자식폼 최소화할 때 태스크바로 내리기 설명을 끝내겠쉼다.
p.s 이제 메인창을 내리면 모든 창이 최소화 되는 현상을 해결해보기위해 삽질해보겠습니다. ㅎㅎ
반응형
'Programming > Delphi' 카테고리의 다른 글
[Delphi] WMI(Windows Management Instrumentation) 사용하기에 앞서 (0) | 2015.01.28 |
---|---|
파일수정한날짜 변경하기 (0) | 2013.12.30 |
[다이나믹스킨] 메인창이 뒤로 갔을 경우 잔상이 남을 때 (0) | 2011.07.06 |
폼이 없는 unit 에서 초기화방법 (0) | 2011.07.05 |
현재 사용중인 익스플로러 버전 확인하기 (0) | 2011.07.05 |