|
올빼미 님이 쓰신 글 :
: 안녕하세여??? 또 질문을 올립니다.....
: 70여개의 DBtext가 있어서 for문을 쓰려고 합니다.
: 근데.....
: DBtext+IntToStr(i)->DataSource = Table1 이렇게 하니까....되질 않더군요,,,,
: 어떻게 할수 있나여???
: ---------------------------------------------------------------------------------
: 그리고....DBGrid에서 팝업메뉴를 만들어서....뿌려진 레코드의 상세내용Edit창에 불러오려고
: 합니다...그래서 코드를 이렇게 짰는데..
: EditNum->Text = CustomerData->CustTable->FieldByName("회원번호")->AsString;
: EditName->Text = CustomerData->CustTable->FieldByName("이름")->AsString;
: EditSchool->Text = CustomerData->CustTable->FieldByName("학교명")->AsString;
: EditGrade->Text = CustomerData->CustTable->FieldByName("학년")->AsString;
: EditBirth->Text = CustomerData->CustTable->FieldByName("생일")->AsString;
: Editstep->Text = CustomerData->CustTable->FieldByName("과정명")->AsString;
: EditAddress->Text = CustomerData->CustTable->FieldByName("주소")->AsString;
: EditTel->Text = CustomerData->CustTable->FieldByName("전화번호")->AsString;
: EditPhone->Text = CustomerData->CustTable->FieldByName("핸드폰")->AsString;
: EditParent->Text = CustomerData->CustTable->FieldByName("보호자성명")->AsString;
: EditIdadress->Text = CustomerData->CustTable->FieldByName("등록번호")->AsString;
: Editjob->Text = CustomerData->CustTable->FieldByName("보호자직업")->AsString;
: Editdate->Text = CustomerData->CustTable->FieldByName("계약일")->AsString;
: Editday->Text = CustomerData->CustTable->FieldByName("배송요일")->AsString;
: 문제가.....팝업메뉴 뛰울때 마우스포인터위치에 관계없이 제일 첫번째레코드의
: 내용만이 Edit창에 뛰어 지더군요.....뭐가 문제인지......가르침부탁합니다...
안녕하세요 만해 입니다.
흑~ 70개의 필드값을 싹다 Edit로 보내 줄려면 고생이겠네요 ~
크크~
그냥 제가 애기 들릴건 단순한 건데요
Dynamic_cast를 이용하는건데요
우선 기본 조건이 있습니다.
Edit의 Tag 값이 자료를 받아올 필드의 인덱스 값하고 같아야 하거든요
간단히 애기 드리면
void __fastcall TForm1::Vutton1Click(TObject Sender)
{
TEdit* edt = new TEdit(Application);
for ( int i = 0 ; i < Form1->ComponentCount ; i ++ )
{
if ((edt = dynamic_cast<TEdit *>(Form1->Components[i])) != 0)
{
edt->Text = Table1->Fields->Fields[edt->Tag]->AsString;
}
}
delete edt;
}
헥헥 힘들당~
방금 테스팅한 루틴인데 헐 몸가 이래 잘 기억이 안 나던지
약간 설명 드리면요
for ( int i = 0 ; i < Form1->ComponentCount ; i ++ )
// 폼 위의 모든 컴포넌트에서
{
TEdit* edt = new TEdit(Application);
if ((edt = dynamic_cast<TEdit *>(Form1->Components[i])) != 0)
// Edit 컴포넌트만 가져와서
{
edt->Text = Table1->Fields->Fields[edt->Tag]->AsString;
// Edit 컴포넌트의 Tag값과 일치하는 Field의 값을 Edit 컴포넌트에 할당~
}
}
간단쵸~
도움이 되면 좋겟네요
그럼 이만
^^//
ps. 방금 수정 했네요 조금 틀린게 있어서 수정하기 전에 다른분들이 안 보셔서 다행~
그럼 정말 이만~ ^^///
|