음...
[Panel위에 있는 컨트롤 찾기]
먼저 Panel위에 있는 Control을 찾는 방법은?
FindChildControl을 이용하시면 됩니다.
TForm에만 있는 함수가 아니라 모든 TWinControl에 있는 함수입니다.
//다음과 같이 찾습니다.
TButton *btn=(TButton *)Panel3->FindChildControl("Button1");
//또는 아래과 같이 TEdit로 입력을 받아서..
TButton *btn=(TButton *)Panel3->FindChildControl(Edit1->Text);
[ ScrollBox의 ScrollBar를 Control이 있는 위치로 이동]
님이 올린 샘플을 보니 ScrollBar위에 있는 Panel의 위치가 (0,0)이 아니더군요
즉 이런경우에 ScrollBar의 HorzScrollBar->Range 나 ScrollBox1->VertScrollBar->Range 가
Panel의 크기와 일치하지 않게 됩니다.
1. 먼저 ScrollBar위에 있는 Panel의 위치를 (0,0)으로 폼 디자인타임에 설정하십시요
그럼 ScrollBar의 Scroll Range가 Panel의 크기와 같게 됩니다.
2. 그런다음 FindChildControl 찾은 Button의 Left , Top을 ScrollBox의
HorzScrollBar->Position 과 VertScrollBar->Position으로 설정하시면 됩니다.
void __fastcall TForm1::Button6Click(TObject *Sender)
{
TButton *btn=(TButton *)Panel3->FindChildControl(Edit1->Text);
if(btn)
{
ScrollBox1->HorzScrollBar->Position=btn->Left;
ScrollBox1->VertScrollBar->Position=btn->Top;
}
}
그럼...
linuxman 님이 쓰신 글 :
: 안녕하세요..
: 스크롤박스 안에..아주 큰 패널을 만들었습니다.
: 그런후에 패널의 여기저기에 동적인 콤포넌트 들을 배치하였습니다...
: (여기 저기 있기때문에...)
:
: 스크롤 박스 안에 원하는 콤포넌트가 있는지 체크할수 있는 방법과
: 없다면... 스크롤박스를 최소한 움직여서 원하는 콤포넌트를 스크롤 박스의
: 귀퉁이에라도 보여주고 싶은데... 좋은방법이 있을까요?
:
:
: ScrollBox1->VertScrollBar->Position=Button1->Left;
: ScrollBox1->HorzScrollBar ->Position=Button1->Left;
:
: 수고하세요.