(7)uniGUI for C++ builder下UniListBox控件如何使用?

(同一个世界,同一个梦想,交流学习C++Builder XE10,传承c++builder的魅力!欢迎各地朋友加入我的QQ群484979943,进群密码“BCB”,同时也请将该群号广为宣传,希望能够广集各方高手,共同进步。)

UniListBox主要用于列举信息项,本文将设计一个例子,通过两个UniListBox演示如何选择一个Item,并且互相挪动。该功能主要用于选课等常见功能。

一、窗口设计

新建一个窗口UniForm1,添加两个UniListBox用于列举Item清单,两个UniEdit控件用于显示UniListBox当前选中的项目内容,

四个按钮分别实现左移一个、右移一个、左移全部、右移全部.

(7)uniGUI for C++ builder下UniListBox控件如何使用?

二、功能实现

1、在UniForm1的OnShow事件中添加两个UniListBox控件中初始添加的项目。

void __fastcall TUniForm1::UniFormShow(TObject *Sender)
{
//UniListBox1添加项目
UniListBox1->Items->Add("aaa");
UniListBox1->Items->Add("bbb");
UniListBox1->Items->Add("ccc");
UniListBox1->Items->Add("ddd");
UniListBox1->Items->Add("eee");
UniListBox1->Items->Add("fff");
//UniListBox2添加项目
UniListBox2->Items->Add("111");
UniListBox2->Items->Add("222");
UniListBox2->Items->Add("333");
UniListBox2->Items->Add("444");
UniListBox2->Items->Add("555");
UniListBox2->Items->Add("666");

}

2、两个UniListBox的OnClick事件添加显示当前选中Item内容的代码

void __fastcall TUniForm1::UniListBox1Click(TObject *Sender)
{
//UniListBox1单击选择项显示
if(UniListBox1->ItemIndex<0)
return;
UniEdit1->Text=UniListBox1->Items->Strings[UniListBox1->ItemIndex];
}
//---------------------------------------------------------------------------


void __fastcall TUniForm1::UniListBox2Click(TObject *Sender)
{
//UniListBox2单击选择项显示
if(UniListBox2->ItemIndex<0)
return;
UniEdit2->Text=UniListBox2->Items->Strings[UniListBox2->ItemIndex];
}

//---------------------------------------------------------------------------

3、UniButton1左移一个代码

void __fastcall TUniForm1::UniButton1Click(TObject *Sender)
{
//UniListBox2左移一个
bool findFlag=false;
if(UniListBox2->ItemIndex<0)
return;
//判断左边有没有,如果有仅删除右边,如果没有则左边增加右边删除.
for(int i=0;i<UniListBox1->Items->Count;i++)
{
if(UniListBox1->Items->Strings[i]==UniListBox2->Items->Strings[UniListBox2->ItemIndex])
{
findFlag=true;
break;
}
}
//
if(findFlag)
{
UniListBox2->Items->Delete(UniListBox2->ItemIndex);
}
else
{
UniListBox1->Items->Add(UniListBox2->Items->Strings[UniListBox2->ItemIndex]);
UniListBox2->Items->Delete(UniListBox2->ItemIndex);
}
}


4、UniButton2右移一个代码

void __fastcall TUniForm1::UniButton2Click(TObject *Sender)
{
//UniListBox1右移一个
bool findFlag=false;
if(UniListBox1->ItemIndex<0)
return;
//判断右边有没有,如果有仅删除左边,如果没有则右边增加左边删除.
for(int i=0;i<UniListBox2->Items->Count;i++)
{
if(UniListBox2->Items->Strings[i]==UniListBox1->Items->Strings[UniListBox1->ItemIndex])
{
findFlag=true;
break;
}
}
//
if(findFlag)
{
UniListBox1->Items->Delete(UniListBox1->ItemIndex);
}
else
{
UniListBox2->Items->Add(UniListBox1->Items->Strings[UniListBox1->ItemIndex]);
UniListBox1->Items->Delete(UniListBox1->ItemIndex);
}
}
//---------------------------------------------------------------------------

5、UniButton3的左移全部代码

void __fastcall TUniForm1::UniBitBtn1Click(TObject *Sender)
{
//UniListBox2左移全部
bool findFlag=false;
while(UniListBox2->Items->Count>0)
{
findFlag=false;
//判断左边有没有,如果有仅删除右边,如果没有则左边增加右边删除.
for(int i=0;i<UniListBox1->Items->Count;i++)
{
if(UniListBox1->Items->Strings[i]==UniListBox2->Items->Strings[0])
{
findFlag=true;
break;
}
}
//
if(findFlag)
{
UniListBox2->Items->Delete(1);
}
else
{
UniListBox1->Items->Add(UniListBox2->Items->Strings[0]);
UniListBox2->Items->Delete(0);
}
}
}

//---------------------------------------------------------------------------

6、UniButton4的右移全部代码

void __fastcall TUniForm1::UniBitBtn2Click(TObject *Sender)
{


//UniListBox1右移全部
bool findFlag=false;
while(UniListBox1->Items->Count>0)
{
findFlag=false;
//判断右边有没有,如果有仅删除左边,如果没有则右边增加左边删除.
for(int i=0;i<UniListBox2->Items->Count;i++)
{
if(UniListBox2->Items->Strings[i]==UniListBox1->Items->Strings[0])
{
findFlag=true;
break;
}
}
//
if(findFlag)
{
UniListBox1->Items->Delete(0);
}
else
{
UniListBox2->Items->Add(UniListBox1->Items->Strings[0]);
UniListBox1->Items->Delete(0);
}
}
}

//---------------------------------------------------------------------------

三、运行演示

(7)uniGUI for C++ builder下UniListBox控件如何使用?