|
FindComponent 를 이용하세요
[방안1]
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String sEdtName="Edit"+EditSel->Text;
TEdit *edt=(TEdit *)FindComponent(sEdtName);
if(edt)
{
edt->Text=Now().FormatString("yyyy-mm-dd hh:nn:ss");
}
}
//---------------------------------------------------------------------------
[방안2]
그리고 좀더 빠리게 처리하겠다면
TEdit *EdtLst[50] ; 이런 배열에다가 순서대로 미리 FindComponent 를 통해 다 담아놓고
배열로 접근하는 방법도 있습니다. 메모리가 50*4Byte정도 추가로 더 들겠죠
TEdit *EdtLst[50];
//프로그램 시작할때 미리 찾아서 포인터 배열에 담아둔다.
void __fastcall TForm1::FormCreate(TObject *Sender)
{
String sEdtName;
for(int i=0;i<50;i++)
{
EdtLst[i]=(TEdit *)FindComponent("Edit"+IntToStr(i+1));
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int idx=StrToInt(EditSel->Text);
if(idx>=0 && idx<50)
{
if(EdtLst[idx])EdtLst[idx]->Text=Now().FormatString("yyyy-mm-dd hh:nn:ss");
}
}
그럼......
초보 님이 쓰신 글 :
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
: if(EditSet->Text== 1)
: {
: Edit1->Text = DateTimeToStr(Now());
: }
: else if(EditSet->Text == 2)
: {
: Edit2->Text = DateTimeToStr(Now());
: }
: else if(EditSet->Text == 3)
: {
: Edit3->Text = DateTimeToStr(Now());
: }
: else if(EditSet->Text == 4)
: {
: Edit4->Text = DateTimeToStr(Now());
: }
: }
: Edit에 현재 날짜를 보여주는 건데요 텍스트 상자는 Edit1 ~ Edit50 50개 되거든요
:
: 일일이 IF문을 쓰면 너무 길어 져서 다른게 처리 할수 있을가요?
:
: 초보인데요 다른 방법으로 처리 하는 방법있는지 알려 주세요 부탁합니다.
|