C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[75895] Re:Re:TStackPanel 을 사용하여 컴포넌트를 정렬하여 사용하려고 합니다.
nagne [] 1048 읽음    2020-07-06 09:07
빌더(TWx) 님이 쓰신 글 :
: 나그네 님이 쓰신 글 :
: : TStackPanel 을 사용하여 컴포넌트를 정렬하여 사용하려고 합니다.
: :
: : StackPanel 안에 상황에 따라  일반 Panel 을 1개, 2개 , 최대 3개 배치를 하려고 합니다.
: :
: : 원하는 것은 1개가 배치 될 경우 StackPanel 의 정중앙에 배치 되고, 2개가 배치 될 경우 정 중앙을 중심으로
: :
: : 2개가 , 3개 일경우 StackPanel이 3등분 된 형태로 배치가 되어야 합니다.
: :
: : 문의 사항은 TStackPanel 안에 배치된 일반 판넬의 프로퍼티가 새로 생기면서 조정할 수 있는 부분이 있는데
: :
: : HorizontalPositioning 의 경우는 정상적으로 작동을 해서 sphpCenter를 선택하면 가로 방향으로 정 중앙으로 배치가 됩니다.
: :
: : 그런데 VerticalPositioning의 경우에는 아무 값으로 바꾸어도 판넬의 위치가 변하지 않습니다.
: :
: : 제 생각으로는 이 값을 sphpCenter 로 하면 세로 방향으로 중앙에 배치 되리라 예상했는데 어떠한 값도 적용되지 않고
: :
: : 항상 동일한 위치에서 변하지 않습니다.
: :
: : 혹시 다른 설정을 변경해야 하는 것이 있는지 좀 알려 주세요.
: :
: : 이 설정은 빌더 리오, 시드니 둘다 테스트 해 보았는데 동일합니다.
:
:
:
:
: 답변:
:
:
: 지극히 상식적으로 생각하면...
:
: TStackPanel 에서 HorizontalPositioning 과 VerticalPositioning 두개의 프로퍼티를 갖고 있으므로
: Orientation을 spcVertical로 했을 경우, VerticalPositioning 을 바꾸면 Center나 Fill 등의 값이
: 반영 되어야 하는 게 맞죠.
:
: C# 으로 WPF 프로그래밍을 해본 경험이 있다면 StackPanel 은 낯익은 콘트롤 일 겁니다.
:
: 오래전 부터 Visual Studio WPF에서는 StackPanel 콘트롤을 지원하고 있었는데...
:
: 델파이는 이 콘트롤이 없으니 델파이 컴포넌트로 지원하자 해서 만들어진 게 TStackPanel 컴포넌트이고,
: 이 컴포넌트는 WPF StackPanel 콘트롤을 베껴서 '마르코 칸투'가 만든거로 알고 있습니다.
:
:
:
: 상식적으로 생각하면 질문의 의도와 같이 동작해야 하겠지만
:
: TStackPanel 컴포넌트는 Orientation이 spoHorizontal 일 때는 VerticalPositioning 만 동작하고
: HorizontalPositiong은 mulfunction(동작하지 않는) 상태가 되고.
:
: 반대로 Orientation 이 spoVertical 일 때는 HorizontalPositioning 만 동작하고
: VerticalPositioning 은 mulfunction(동작하지 않는) 이 되는 식으로 구현 되어 있어요.
:
:
: 사용자 들을 배려헤서 컴포넌트를 직관적으로 사용할 수 있게 만들려면
:
: 1.
: StackPanel을 THorizStackPanel과 TVertStackPanel로 나누어서 개별적으로 구현을 하든가.
:
:
: 2.
: 아니면 TStackPanel 하나로 구현하되...
: HorizontalPositiong과 VerticalPositioning으로 Positioning을 구분하지 말고
: 하나의 Positioning으로 Orientation과 상관 없이 Left, Center, Fill 등 모든 상태가 반영될 수 있도록 컴포넌트를 만들어 놨어야죠.
:
:
: 다른 설정을 추가로 변경해야 하는 부분이 따로 있는 게 아니고...
: 컴포넌트를 어설프게 대충 베껴서 구현해 놓았기 때문에 그런 겁니다.
:
:
: 의도했던 동작이 필요하면... 컴포넌트를 따로 새로 만들어 쓰세요.
:
: TCustomStackPanel 클래스에 대부분의 코드가 구현되어 있으므로
: C++로 TCustomStackPanel  상속해서 컴포넌트 만들면 15 분도 안걸릴 겁니다.
:
:

답변 감사드립니다. 저도 처음에는 상식적으로 생각해서 상식선에서 작동을 하지 않길래 질문을 올렸는데 질문 후에 다시 테스트 해보니 빌더님 답변해 주신것 처럼 동작을 하더라고요..

마르코칸투가 만들었다고 하셨는데 델파이 쪽에는 꽤 영향력을 행사하는 인물인것 같은데 왜 이따위로 만들었는지 이해가 안가네요..

하여간 해당 컴포넌트는 제가 의도하는 바대로 동작을 안해서 귀찮치만 코드를 따로 만들어서 해결을 했습니다.
이왕이면 상식선에서 잘 동작했다면 좀 수고를 덜었을 텐데..

다시한번 답변 감사드립니다.

+ -

관련 글 리스트
75893 TStackPanel 을 사용하여 컴포넌트를 정렬하여 사용하려고 합니다. 나그네 1055 2020/07/03
75894     Re:TStackPanel 을 사용하여 컴포넌트를 정렬하여 사용하려고 합니다. 빌더(TWx) 1148 2020/07/04
75895         Re:Re:TStackPanel 을 사용하여 컴포넌트를 정렬하여 사용하려고 합니다. nagne 1048 2020/07/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.