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

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

本人主笔的国内第一本uniGUI教学资料已诞生,分为cbuilder和delphi两个版本,买代码送手册,需要的朋友可以加入我的QQ技术交流群484979943给我(群主)留言。资料简介:https://blog.csdn.net/dlboy2018/article/details/88923832

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

一、窗口设计

新建一个窗口UniForm1,添加两个UniListBox用于列举Item清单,两个UniEdit控件用于显示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);
}
}
}

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

三、运行演示

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
0.83.5.820 +---------------------------------------------------------------------------------------- - 0000796: DBGrid: Render bug when Column color is clWindow and project is created with 0.82 - 0000795: Grid: Cell background color change poor render performance - 0000791: UniDBGrid, UniStringGrid: Option to disable custom renderer to speed-up render time. 0.83.4.819 +---------------------------------------------------------------------------------------- - 0000789: UniDBComboBox, UniDBListBox: Edit mode is not set when changed - 0000784: TUniStringGrid: Data not restored after decreasing/increasing Row count - 0000788: Bug in Grid Row/Col translation - 0000787: UniDBGrid: Broken CellSelect behavior - 0000786: MessageDlg and mtInformation bug. 0.83.2.817 +---------------------------------------------------------------------------------------- - 0000781: UniDBGrid: Row selection bug when no data is in dataset - 0000779: UniStringGrid: OnClick event implemented - 0000780: UniDBGrid: OnCellClick bug - 0000777: TUniDBGridColumn.ReadOnly property - 0000778: UniStringGrid: Assigning HTML content to cells - 0000776: UniDBLookUpXXX: ListSource cursor position does not follow Lookup value - 0000773: UniDBGrid: Column.Title.Font/Color - 0000771: UniDBGrid: Column.Font property - 0000772: UniDBGrid: Column.Color property - 0000775: UniFont: [fsUnderline, fsStrikeOut] implemented - 0000774: TUniStringGrid: OnDrawCell event - 0000769: UniDBGrid: Row position is ignored if row is immediately changed after a call to Open() - 0000673: UniDBGrid: OnDrawColumnCell event - 0000768: Better "ext\" folder translation - 0000766: TUniCalender.FirstDayOfWeek property - 0000767: TUniDateTimePicker.FirstDayOfWeek property - 0000765: UniImage: Bug when both Proportional and Stretch are true - New Demo: DrawCell 0.83.1.812 +---------------------------------------------------------------------------------------- - 0000764: KeyValue property for UniDBLookupXXX - 0000763: UniDBGrid doesn't handle TDataSet.Refresh() - 0000762: UniListBox and Items.Delete bug - 0000760: UniDBLookupXXX: KeyField value submit bug - 0000761: UniEdit and KeyXXX event bug - 0000759: UniDBLookupXXX: KeyField value problem 0.83.0.811 +---------------------------------------------------------------------------------------- - 0000756: MenuItem.Enabled property - 0000755: MenuItem.Visible not working in web mode. - 0000754: UniPageControl: UniTabSheet design time editor - 0000661: enabled/disabled property of TUniToolbarButton - 0000751: UniRadioButton value submission bug - 0000749: Changing ReadOnly := False in UniDateTimePicker & UniDbLookupComboBox raises AV - 0000721: Set ReadOnly := False on UniDB controls on runtime raises AV - 0000445: Customizable Timeout and Terminate pages. - 0000558: Customizable End of Session - 0000748: Field property for DB aware controls - 0000747: AV when trying to access the property TUniDBEdit.Field - 0000746: SessionManager: Bug when there is an Exception in session.Destroy - 0000745: TUniMemo.Clear bug - 0000740: UniTreeView: Node.Data not implemented - 0000744: UniDBMemo.Lines property - 0000743: UniDBMemo.Text porperty is not published - 0000739: UniTreeView: Items.Clear not implemented - 0000736: UniPageControl: Runtime assignment of OnChange event - 0000737: UniDBLookupXXX: Bug when there is " in string - 0000738: UniTreeView: GetFirstNode not implemented - 0000485: TUniButton renders non-themed! - 0000698: Toolbar Button Image/Text alignment - 0000732: TUniPageControl: Bug while setting designtime ActivePage - 0000716: Change Tab title in runtime - 0000507: Direct filename or image URL for TUniImage - 0000733: TUniScreenMask with a TUniPageControl does not work - 0000734: AutoScroll property for UniHTMLFrame - 0000680: The Alignment taRightJustify of a TUniDBGrid column - 0000610: TabOrder for dynamically created controls - 0000627: Unpublish OnChange in TUniComboBox web mode - 0000601: New Event in ServerModule to handle exceptions - 0000728: Disabled UniEdit does not receive values assigned with Control.Text := Value - 0000720: Tag property for DBGrid Columns - 0000723: DBGrid: numeric column is not aligned to right - 0000722: Setting Align := alCenter on DBGridColumns does not work - 0000715: OmniHTTPD and UniGUI ISAPI - 0000724: Runtime assignment for Align/Alignment property of UniDbGrid column - 0000714: UniDBGrid: Implement StripeRows property - 0000712: raise error if Form owner is not either TUniGUIApplication or TApplication - 0000609: TUniTimer: Attach to TUniScreenMask - 0000703: TUniDBLookUpxxx bug when datasource and datafield are not assigned - 0000731: Broken TabOrder in 0.82.0 - 0000708: UniGroupBox: Caption assignment when created dynamically - 0000706: UniEdit: Password char bug - 0000707: UniSplitter: ScreenMask doesn't work - 0000709: Changes in Form layout not reflected correctly - 0000437: AV when creating inherited forms when no projectgroup is available - 0000413: Maximized ExtWindow can't return to normal size - 0000697: UniPanel: Caption Alignment - 0000696: UniPanel: Caption - 0000699: UniPageControl: TabSheet is visible when TabVisible=False - New Demo: CustomException - New Demo: UniImage 0.82.1.804 +---------------------------------------------------------------------------------------- - 0000630: Big images in buttons - 0000692: Runtime creation and modification of DBLookup components - 0000693: UniDBLookup bug - 0000695: UniDBGrid: Broken OnCellSelect in 0.82.0 0.82.0.803 +---------------------------------------------------------------------------------------- - 0000668: UniDBGrid with data Memory leak - 0000686: New TUniHTMLFrame Component - 0000570: New TUniDBLookupComboBox and TUniDBLookupListBox Components - 0000689: CustomFiles property for ServerModule to add custom CSS and JS files - 0000688: Bug in installer Environment setter - 0000687: "Script" property for TUniForm for adding Custom JS - 0000665: Compatibility with multiple IP systems - 0000685: UniDBGrid: Ellipsis in first column bug (IE) - 0000690: UniDBGrid: OnTitleClick event - 0000684: UniEdit: Text alignment - 0000683: UniScreenMask bug with Maximized Form and mfPage set - 0000682: UniStringGrid: OnSelectCell bug - 0000679: Common DB Controls bug - 0000641: UniTabSheet.TabVisible property - 0000678: Core bug: Setting Align property at runtime - 0000677: Hiding or showing controls doesn't apply alignment/anchoring correctly - 0000675: Setting position of a UniTrackbar at run time - 0000671: UniDBListBox: Dataset is not set to edit mode after change - New Demo: DBLookup - New Demo: HTMLFrame - New Demo: Basic jQuery 0.81.2.801 +---------------------------------------------------------------------------------------- - TUniScreeMask issue with borderless MainForm - Installer: Bug resolved when selected Delphi version is not installed - XE DCU files compiled with Update 1 - Borderless MainForm bug fix 0.81.1.800 +---------------------------------------------------------------------------------------- - UniDBGrid: Critical bug in ISAPI mode - Critical bug in AssignGlobalDateParams 0.81.0.798 +---------------------------------------------------------------------------------------- - New Component UniDBText - Ability to create a windowless borderless MainForm - UniTreeView: Node dynamic add/delete support - UniTreeView: Several Memory leak issues - UniDBGrid: DBGrid.Column.Visible bug - PageControl: Render problem in invisible tabs - TUniListBox: Items are not rendered if placed on UniPageControl invisible Tab - ISAPI: Bug when pathInfo contains Unicode chars - TUniLabel Text alignment - UniDBGrid: _OnDataLoaded may be called before Grid is rendered - UniPageControl: TabIndex doesn't return correct index - UniComboBox in hidden TabPage bug in Chrome browser - UniApplication: New ClientInfo property - New Demo: TreeView - New Demo: ClientInfo - New Demo: Windowless 0.80.2.796 +---------------------------------------------------------------------------------------- - TUniChart moved to UniGUIEx package - TUniSplitter: Runtime create problem - Memory Leak in TUniForm 0.80.1.794 +---------------------------------------------------------------------------------------- - Apache web server and CoInitialize issue - UniSplitter Color in Web mode - UniSplitter broken and Ext JS 3.3.0 issue - New Component: TUniChart Component first preview - UniDateTimePicker: OnEnter, OnExit Events - UniGroupBox: CSS frame margin bug (IE) - TUniLabel: AutoSize problem - UniFileUpload: several changes - UniFileUpload: File names containing Unicode chars are returned correctly - Change color of label at runtime - Various runtime property assignment bugs - DataStores and AutoDestroy - Changing Server Port at runtime. - TabOrder and TabStop for Web - Upgraded to Latest Ext JS release (3.3.0) - UniTrackBar: Set Max at runtime - UniDBGrid: DataSet AfterEdit: Reload grid only when needed - New Demo: Chart Demo 0.79.1.788 +---------------------------------------------------------------------------------------- - UniRadioGroup: Render bug when control is disabled - Style:"color:#000000" in FontStyle bug - FileUpload bug - New TUniScreenMask component - Add startup "Loading..." message - Server Bindings property implemented - OwnerForm.IsDestroying: When owner is TUniFrame - DB Controls: Check IsDestroying - Allow suppressing "Ajax" and "Object not found" Errors - SynEdit: some unicode widechars cause problem in D2009+ (removed) - InsertControl/RemoveControl internal bug - TUniToolButton: Dynamic creation - UniDBGrid: Grid row doesn't change when table row changes - UniDBGrid: Master/Detail Support - uniDBGrid: Assigning ReadOnly property in runtime - uniDBGrid: Assigning Options.dgEditing property in runtime - UniForm: Event OnScreenResize implemented - UniForm: Event OnResize implemented - UniApplication: ScreenWidth, ScreenHeight Property - UniTreeView: AutoExpand Property - A mean to determine dimensions of the browser window - ExtPascal: Param Place Holders problem - TreeView: Full Tree load on first call - UniTreeView: TTreeNode.MakeVisible implemented - uniDBGrid: After opening grid row is set to real Dataset cursor location - UniGroupBox: Caption not visible bug - UniRadioGroup: Caption not visible bug - UniRadioButton: OnClick event implemented - UniLabel: Allow HTML Content - ServerModule: Implement Temp Folder Property - Unicode bug in ISAPI module - New Demo: Screen Size - New Demo: UI Mask - New Demo: Download Demo 0.78.0.783 +---------------------------------------------------------------------------------------- - Lots of changes and bug fixes in Unicode and codepage handling - Ajax Core: Queue process improvement - Don't respond Alert() to data requests - UniExtTimer.Stopall: check for null object - ExtJS: Test for "undefined" before destroy - UniDBGrid bug: FColumnsChanged is True after ConfigureExtColumns - A customized version of Indy included (10.5.7) - Unicode data transfer and IIS ISAPI bug - TUniTimer runtime enable bug - ExtPascal: StrToJS problem: Strings containing %nn - Unicode conversion bug - UniToolBar: ShowCaptions implemented - Inherited form Reader bug - Delphi XE: Unicode conversion problem - UniPageControl: Dynamic create: Initial ActiveTab bug? - New Demo: Unicode Demo (for D2009 and later) 0.77.1.781 +---------------------------------------------------------------------------------------- - D2009+ UniFrame creation problem - Other Project Wizard related bugs fixed 0.77.0.780 +---------------------------------------------------------------------------------------- - uniEdit, uniDBEdit: CharEOL property added - Buttons: Click Method implemented - New WebOptions property for uniDBGrid (Paged, PageSize) - CodeMirror: Missing Pascal keywords added - New Demo: CharEOL Demo 0.76.0.779 +---------------------------------------------------------------------------------------- - Delphi XE Support - uniTreeView: AddChild() Implemented - uniTreeNode: IsFirstNode() Implemented - ExtPascal: VarToJSON: WideString conversion bug - uniTreeView: D2009+ resource compatibility issue - In web mode some controls aren't assigned a default Width/Height - In StrToJs <CR> is not interpreted correctly. - UniSyntaxEdit: CodePress replaced with CodeMirror (CodePress files removed from installer) - Standalone server will display application name - Control parent assignment bug when parent is TUniForm - UniRadioGroup: runtime OnClick event assignment bug - Other minor changes and fixes - New Demo: SQL Demo ( Requires DBISAM http://www.elevatesoft.com/download?category=dbisam ) 0.75.0.777 +---------------------------------------------------------------------------------------- - Internal Bug fix in TUniExtWinControl.SetComponentsLoaded() - Internal Bug fix in TUniExtWinControl.RemoveControl() - UniEdit: MaxLength Property implemented - UniSplitter improved - Several bug fixes in UniSplitter - UniSyntaxEdit improved - UniSyntaxEdit bug fixes - Now SynEdit Packages are included in the installer 0.74.0.774 +---------------------------------------------------------------------------------------- - New: Inheritable Frames - New: Inheritable DataModules - New: In "Object Inspector" properties that are not implemented in web mode are displayed in gray - Bug in inherited form implementation - Improved exception handling - UniDBGrid: OnCellClick passes wrong Column - TUniDBGridColumn: Implement Field public property - When wsMaximized some components may render in wrong placed (IE8) - TUniForm: OnDestroy() implemented - DB Controls: Dynamic DataSource assignment - Workaround for WindowState wsMaximized problem 0.73.0.770 +---------------------------------------------------------------------------------------- - New: Service Application implemented - Async request mode is default mode now - Several Bug fixes and changes in AJAX Core - DB Controls: Internal improvements and fixes 0.72.2.767 +---------------------------------------------------------------------------------------- - Several internal core changes and bug fixes 0.72.1.766 +---------------------------------------------------------------------------------------- - Sync mode partially disabled 0.72.0.765 +---------------------------------------------------------------------------------------- - New Component TUniFileUpload - KeyEvents internal bug - TUniDBNavigator: VisibleButtons Property implemented - TUniEdit: Clear Method implemented - Bug: Showing a Window in another Window's OnShow event - uniMainMenu: Top level menus OnClick event not implemented - KeyEvents Bug - AJAX Core problem - Now Close tool button on Window can be removed - New Sync/Async modes implemented - Bug: Calling DataSet.Refresh in OnClose event may raise Ajax Error - When no project is active creating a new Form or DataModule fails - TUniImage: PNG Images are not shown in Web Mode - PNG/GIF type Images will not be converted to other formats - AV when calling FullExpand method of TUniTreeView - TUniTreeView: FullCollapse implemented - Internal Bug in DB Control DataChange - TUniForm: OnActivate implemented - Bug in ShowMessage - New Demo: FileUpload 0.71.0.760 +---------------------------------------------------------------------------------------- - New Component TUniDBListBox - New Component TUniDBComboBox - New Component TUniURLFrame - Form Inheritance implemented - OnEnter and OnExit Events implemented - TUniRadioGroup: OnClick Event implemented - Bug in UniTabControl - URL Parameters Implemented - New method: UniApplication.Terminate() - TUniEdit CharCase property implemented - TUniDateTimePicker "Visible" bug fixed - SetFocus bug fixed - TuniRadioGroup: ItemIndex implemented - TUniPageControl: Property ActivePage implemented - TUniListBox: ItemIndex bug fixed - DB Controls: internal Bug fixed - StandAloneServer Control Panel imporved - Improved Project Wizard - UniDateTimePicker: OnChange event implemented - Forms divided into two categories: Application Forms and normal Forms - KeyDown, KeyUp, KeyPress implemented - ExtRoot bug in ServerModule fixed - ClientHeight problem in XP theme fixed - 4 new demos: URLFrame, FormInheritance, Dynamic, URLParameters 0.70.0 +---------------------------------------------------------------------------------------- First Beta

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值