Q&A

  • DateTimpPicker가 넘넘많아서...
procedure TForm1.DateTimePicker1Change(Sender: TObject);

begin

MaskEdit1.Text := Copy(DateToStr(DateTimePicker1.Date),1,4) +'/' +

Copy(DateToStr(DateTimePicker1.Date),5,2) +'/' +

Copy(DateToStr(DateTimePicker1.Date),7,2);

end;



procedure TForm1.DateTimePicker2Change(Sender: TObject);

begin

MaskEdit2.Text := Copy(DateToStr(DateTimePicker2.Date),1,4) +'/' +

Copy(DateToStr(DateTimePicker2.Date),5,2) +'/' +

Copy(DateToStr(DateTimePicker2.Date),7,2);

end;



procedure TForm1.DateTimePicker3Change(Sender: TObject);

begin

MaskEdit3.Text := Copy(DateToStr(DateTimePicker3.Date),1,4) +'/' +

Copy(DateToStr(DateTimePicker3.Date),5,2) +'/' +

Copy(DateToStr(DateTimePicker3.Date),7,2);

end;



procedure TForm1.DateTimePicker4Change(Sender: TObject);

begin

MaskEdit4.Text := Copy(DateToStr(DateTimePicker4.Date),1,4) +'/' +

Copy(DateToStr(DateTimePicker4.Date),5,2) +'/' +

Copy(DateToStr(DateTimePicker4.Date),7,2);

end;



이렇게 DateTimePicker도 여러개이고 MaskEdit도 여러개네요.

공통된사항은 DateTimePicker4 이면 이름이 MaskEdit4가 됩니다.

이런 식으로 20개 남짓되는데..

그렇게 된다면...위의 쏘쓰 너무 지저분해지잖아여!

이 길이를 화~~악 줄일수 있을까여?



나름대로 생각을 해도 답이...-_-;

지발 답을... 쩌번에도 누가 올려놨는데...암도 대답을 안하셨던데..



함만, 곰곰히 생각해 답을 유출해주세요~~~



1  COMMENTS
  • Profile
    최용일 2001.08.17 02:12
    안녕하세요. 최용일입니다.



    FindComponent란 메소드를 사용해보세요...



    // 모든 DateTimePicker의 OnChange이벤트

    procedure TForm1.DateTimePickerChange(Sender: TObject);

    var

    IndexStr: string;

    MaskEdit: TMaskEdit;

    DateTimePicker: TDateTimePicker;

    begin

    // 'DateTimePickerXX' 라는 컴포넌트 이름에서 'DateTimePicker'라는 문자열을

    // 삭제하면 숫자 인덱스만 나온다...

    // ex) 컴포넌트 이름이 'DateTimePicker1'일때: IndexStr = '1'

    IndexStr := TDateTimePicker( Sender ).Name;

    Delete(IndexStr, 1, Length('DateTimePicker'));



    // DateTimePicker와 인덱스가 같은 MaskEdit를 찾는다.

    MaskEdit := FindComponent('MaskEdit' + IndexStr);

    // 이벤트를 일으킨 TDateTimePicker컴포넌트는 Sender로 넘어오므로 찾을필요가 없다...

    DateTimePicker := TDateTimePicker( Sender );



    MaskEdit.Text := Copy(DateToStr(DateTimePicker.Date),1,4) +'/' +

    Copy(DateToStr(DateTimePicker.Date),5,2) +'/' +

    Copy(DateToStr(DateTimePicker.Date),7,2);

    end;



    ^^ 항상 즐코하세요...



    DEUXIST ^^; wrote:

    > procedure TForm1.DateTimePicker1Change(Sender: TObject);

    > begin

    > MaskEdit1.Text := Copy(DateToStr(DateTimePicker1.Date),1,4) +'/' +

    > Copy(DateToStr(DateTimePicker1.Date),5,2) +'/' +

    > Copy(DateToStr(DateTimePicker1.Date),7,2);

    > end;

    >

    > procedure TForm1.DateTimePicker2Change(Sender: TObject);

    > begin

    > MaskEdit2.Text := Copy(DateToStr(DateTimePicker2.Date),1,4) +'/' +

    > Copy(DateToStr(DateTimePicker2.Date),5,2) +'/' +

    > Copy(DateToStr(DateTimePicker2.Date),7,2);

    > end;

    >

    > procedure TForm1.DateTimePicker3Change(Sender: TObject);

    > begin

    > MaskEdit3.Text := Copy(DateToStr(DateTimePicker3.Date),1,4) +'/' +

    > Copy(DateToStr(DateTimePicker3.Date),5,2) +'/' +

    > Copy(DateToStr(DateTimePicker3.Date),7,2);

    > end;

    >

    > procedure TForm1.DateTimePicker4Change(Sender: TObject);

    > begin

    > MaskEdit4.Text := Copy(DateToStr(DateTimePicker4.Date),1,4) +'/' +

    > Copy(DateToStr(DateTimePicker4.Date),5,2) +'/' +

    > Copy(DateToStr(DateTimePicker4.Date),7,2);

    > end;

    >

    > 이렇게 DateTimePicker도 여러개이고 MaskEdit도 여러개네요.

    > 공통된사항은 DateTimePicker4 이면 이름이 MaskEdit4가 됩니다.

    > 이런 식으로 20개 남짓되는데..

    > 그렇게 된다면...위의 쏘쓰 너무 지저분해지잖아여!

    > 이 길이를 화~~악 줄일수 있을까여?

    >

    > 나름대로 생각을 해도 답이...-_-;

    > 지발 답을... 쩌번에도 누가 올려놨는데...암도 대답을 안하셨던데..

    >

    > 함만, 곰곰히 생각해 답을 유출해주세요~~~

    >