마우스에 대한 질문입니다.
Lable에 마우스를 갖다댔을때 그 Lable에 대한 정보창(ShowMessage)이 뜨게 하고
싶은데요..
문제는... Lable 전체가 아니구요...
Lable01_11 , Lable02_12, Lable01_22, Lable03_11 ...
이런식으로 Lable의 이름이 있다구 하면요...
Lable01 이란 이름이 있는곳에만.. 마우스가 위와 같은 동작을 하게 하고 싶은데여...
음.. Lable01 이름을 포함한 Lable가 10개있구.. Lable03 을 포함한 Lable이 5개 있으면
Lable01 을 포함한 Lable 10개만 그 Lable에 마우스를 갖다댔을때.. 거기에 대한 정보가 보이게 하는거죠..
아참 위에 꺼랑 비슷한 질문 하나 더 할께요..
Lable 이 100개가 화면 있다구 하면요... 음.. 가로 세로 10줄씩여...
거기에서 어떠한 버튼을 눌렀을때그 100개 중에 10개만 Lable에 써있는 caption이
보이게 하고 나머지 Lable 90개는 그 모든 Lable들이 클리어 되게 하고싶은데요..
이렇게 하려면 어떻게 해야하는지요...
이걸 하나하나 코딩하는것 말구 딴 방법이 있을꺼 같은데요..
급합니다..
빠른 답변 부탁드립니다.
음. 님이 말씀하신건 그냥 이름으로 찾으면 되겠네요...
findComponent 라는 함수가 있습ㄴ다. 이넘은 콤포넌트의 이름으로
해당 클래스 Tcomponent형을 리턴하는 함수입니다. 아주 강력하게 쓸수있는
거죠..
그냥 간단하게 특정 문자를 포함하고 있으면 정보 표시
var
CompoName : String;
SearchName : String;
i : Integer;
begin
// 현재 콤포넌트 이름을 가져온다.
CompoName := (Sender as TLabel).Name;
//찾을 문자
SearchName := 'aaa';
// aaa 란 문자를 포함하면 내용을 표시한다.
i := pos( SearchName, CompoName );
if i > 0 then ShowMessage( (Sender as TLabel).Name )
end;
이걸 이용하면 두번째도 간단히 해결됩니다.
이름을 정하실때 규칙을 만드시던지 아니면 위에 글남기신분의
말씀대로 테그를 입력해두는거죠...
테그를 입력해두면.. 테그를 1-10 까지 입력했다고 하구요..
var
i : Integer;
compo : TComponent;
tempLabel : TLabel;
begin
// 이건 테그가 1인넘만 보이게
for i := 0 to ComponentCount -1 do
begin
compo := ComponentIndex[i];
if Compo is TLabel then
begin
tempLabel := Compo as TLabel;
if tempLabel.Tag = 1 then
begin
tampLabel.Visible := true;
end else begin
tempLabel.visible := false;
end;
end;
end;
end;
오타나 버그가 있을지 모르니... 그냥 참고 하세요. 그럼.
- 하얀까마귀 -