Q&A

  • image 위치를 일괄적으로 바꿀려고 할때..
델파이 초보입니다.. 질문이 어설프더라고 이해해주시길 바래요..

[질문1]
예를들어 메인폼에서 image 50개를 올려 놓고 작업 해당하는 image.left와 image.top을 동적으로 바꿀려고 합니다..

50개 전부를 일일히 다 할려고 하니까 코딩이 넘 길어져서 어떻게 하면 이쁜코딩이 될까요??

[질문2]
위 질문과 동일한데.. 이벤트도 위와 같은 방법으로 적용시킬려면 방법이 있나요??

예를 들어 버튼이 50개 있다고 했을때 모든 버튼을 클릭하면 한프로시져에서 처리할수 있겠금요...

<!--CodeS-->
procedure TMain.BitBtnALLClick(Sender: TObject);
begin
전버튼을 클릭했을때 코딩
end;

procedure TMain.BitBtn1Click(Sender: TObject);
begin
개별코딩
end;

procedure TMain.BitBtn2Click(Sender: TObject);
begin
개별코딩
end;

계속~~~
<!--CodeE-->


초보라 모르는게 넘 많네요.. 읽어주셔서 감사합니다..
1  COMMENTS
  • Profile
    김백원 2006.09.09 00:39
    저도 잘은 모릅니다만, 아래의 방법은 어떠실지요...

    여러개의 Control 에서 수행할 procedure 하나를 선언하시구...
    각각의 Control 에 동일한 Event를 등록하시고...

    해당 Control (여기서는 버튼)의 속성중 특정 속성...
    이름으로 Check를 하시든가.. 아님 각각 Tag 속성을 달리하여 Tag 값으로 Check를 하셔서...
    원하시는 작업을 진행하는 Routine을 추가하심 될 것 같네요.

    아래는 Sample 입니다.

    <!--CodeS-->
    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;

    type
      TForm1 = class(TForm)
        GroupBox1: TGroupBox;
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        procedure ButtonClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;

    implementation

    {$R *.DFM}

    procedure TForm1.ButtonClick(Sender: TObject);
    var
       tmpBtn : TButton;
       tmpStr : string;
    begin
       Try
           tmpStr := '';
           Try
               tmpBtn := nil;
               tmpBtn := Sender as TButton;
               tmpStr := '클릭하신 버튼은 => ' + tmpBtn.Name + ' (이)군요!!!';
           except
           end;
           showMessage(tmpStr);
       except
           on E : Exception do
           begin
               showMessage(E.Message);
           end;
       end;
    end;

    end.
    <!--CodeE-->