Q&A

  • 동적으로 컴포넌트 생성후 그중 특정 컴퍼넌트의 속성을 바꿀려고 하려면은요?
폼 쇼를 할때
동적으로 Timage를 바둑판처럼 9개를 그렸습니다.

tag값은 0부터 8까지 증가를 시켜 놓았구요.

동적 생성 이후에
특정 이벤트에서 9개의 동적 이미지중 특정 이미지의 속성값
(예를 들어 색상변경 이나 이미지 변경) 을 변경 할 수 있는 방법
없나요?


즉 tag값이 6인 Timage의 Picture 의 값을 바꿀수 있는 방법 같은 것입니다.

참고로 각 Timage는 TobjectList에 add 해놓았습니다.


밑에는 대략적인 소스 입니다.
// d_rage는 전역 변수 (:Timage)
// ragelist는 전역 변수 ( : TObjectImage)


with d_rage do
    begin
        for i := 0 to 2 do
        begin
            d_rage := Timage.Create(self);
            d_rage.Parent := Panel1;

            //가로 147  세로 220

            Width   := 147;
            Height  := 220;
            Top     := i*221;
            Left    := 0;
            Tag     := inc_com;

            f_ragelist.Add(d_rage);

            OnMouseUp := RangeMouseUp;

            inc(inc_com);

            for y := 0 to 1 do
            begin
                d_rage := Timage.Create(self);
                d_rage.Parent := Panel1;
                Width   := 147;
                Height  := 220;

                Top     := i*221;
                Left    := (y+1)*148;
                Tag     := inc_com;

                f_ragelist.Add(d_rage);


                OnMouseUp := RangeMouseUp;
                inc(inc_com);
            end;
        end;

으로 생성 시켜 놓았습니다.


아 그리고 참고로 동적으로 생성되는 이미지가 이것 말고도 있어서..
TImage(Componts[x]).picture.LoadFromFile('이미지') 이런식의 표현은
안될것 같네요..(다르게 생성한 동적 이미지 마저 영향을 미칠것 같아서요.)
1  COMMENTS
  • Profile
    너구리 2004.04.07 03:49
    TImage(Componts[x]).picture.LoadFromFile('이미지') 이런식의 표현은

    위 방법으로도 할수 있습니다.

    Form1.Compoents[x] 가 아니라

    Panel1.Components[x]로 하면 panel1을 parent로 갖는 애들만 찾게 됩니다.

    만약에 panel1에 다른 이미지도 있다면 안되겠죠..

    다른 방법은

    objList1Image : Array[0..9] of TImage;

    입니다.

    저렇게 배열로 선언해서

    objListImage[6].Picture.Loadfromfile

    이런식으로 사용할수 있습니다.

    아 실수 했습니다.

    윗부분에 components가 parent에 따른다고 했는데..

    다시 보니 owner군요..

    create할때 d_rage := Timage.Create(Panel1);
                    d_rage.Parent := Panel1;
    이래 되겠군여..