|
MyPopup->Items->Add(Item);
위의 부분을 다음과 같이하면..
// 팝업 아이템중 같은 이름이 있는지 확인한다.
// 있으면 캡션만 바꾸고
// 없으면 아이템을 추가한다
for(int i=0; i<MyPopup->Items->Count; i++)
{
// 추가할려는 아이템이름이 팝업아이템에 있으면...
if(!StrCopm(Item->Name.c_str(), MyPopup->Items->Items[i]->Name.c_str()))
{
// 해당 아이템의 캡션만 바꾼다.
MyPopup->Items->Items[i]->Caption = Item->Caption;
// for문 종료
break;
}
// 마지막 아이템까지 확인했는데도
// 추가할려는 아이템이름이 팝업아이템에 없으면...
else if(i == MyPopup->Items->Count-1)
{
// 아이템을 추가한다.
MyPopup->Items->Add(Item);
}
}
우비소녀.. 님이 쓰신 글 :
: 버튼을 클릭하면 DB내용을 가져와서 팝업메뉴를 동적으로 생성해서 팝업메뉴에 보여주는건데여...
: 버튼을 한번 클릭하면 가져와서 보여주는데 두번째 클릭하면 컴포넌트가 존재한다는 오류가 나옹는데여...
: 한번 생성된 메뉴아이템이 삭제가 되질 않아서 그런것 같은데...어떻게 삭제를 해줘야 하는지...
: 팝업에 다 보여준 후에 delete를 하면 OnClick이벤트에서 아이템을 찾을수 없어서 삭제를 할수가 없고....어떻게 해야할지...
: 방법좀 알려주세요....
:
: 소스는...
: TPopupMenu *MyPopup = new TPopupMenu(this); //팝업메뉴 생성..
: this->PopupMenu = MyPopup;
: MyPopup->AutoHotkeys = maManual;
:
: TMenuItem *Item = new TMenuItem(this); //메뉴아이템생성..
: Item->AutoHotkeys = maParent;
:
: AnsiString SqlStr; //쿼리부분..
: SqlStr = "Select * From AAA";
:
: if(MData->qryTemp->Active) MData->qryTemp->Active = false;
: MData->qryTemp->SQL->Clear();
: MData->qryTemp->SQL->Add(SqlStr);
: MData->qryTemp->Active = true;
:
: if(!MData->qryTemp->Eof){
: while(!MData->qryTemp->Eof){
: Item = new TMenuItem(this);
: Item->Caption = MData->qryTemp->FieldByName("bbb")->AsString;
: Item->Name = MData->qryTemp->FieldByName("ccc")->AsString;
:
: //<---여기서 에러가 납니다...한번은 에러가 안나는데...두번째 부터는 에러가 납니다..
: 이미 생성이 되어 있어서 그런것 같은데...방법이 없을까여?...
:
: MyPopup->Items->Add(Item);
:
: MData->qryTemp->Next();
: }
: }
:
: MData->qryTemp->Active = false;
:
:
: int x = Left + BEventSort->Left + 15;
: int y = Top + GroupBox2->Height + BEventSort->Top + BEventSort->Height + 45;
:
: MyPopup->Popup(x,y);
|