Delphi-TComboBox下拉取值

本文介绍了一种在Delphi中使用ADOQuery填充组合框的方法,并详细展示了如何通过自定义类存储额外数据,以及如何从组合框中检索选定的字符串值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新建一个类,存储我们需要的数据:

TItemEx
=class(TObject)

public

      caption:
string;
      StringValue:
string;
end;

//使用adoquery中的值填充combobox
function FillInComBoBoxWithAdoQuery(objAdoQuery:TAdoQuery;objComBoBox:TComboBox;sql:string;captionFieldName:string;
    valueFieldName:
string;noAsFirst:boolean):boolean;

//当noAsFirst为true是,combobox的第一项是'无'
var
  objItemEx:TItemEx;
begin
  objComBoBox.Clear;
  objComBoBox.ItemIndex:
=-1;
  
if noAsFirst
  then begin
     objItemEx:
=TItemEx.Create;
     objItemEx.caption:
='';
     objItemEx.StringValue:
='';
     objComBoBox.Items.AddObject(objItemEx.caption,objItemEx);
     objComBoBox.ItemIndex:
=0;
  end;
  objAdoQuery.Close;
  objAdoQuery.SQL.Clear;
  objAdoQuery.SQL.Add(sql);
  objAdoQuery.Open;
  objAdoQuery.First;
  
while not objAdoQuery.Eof do
  begin
    objItemEx:
=TItemEx.Create;
    objItemEx.caption:
=objAdoQuery.FieldByName(captionFieldName).AsString;
    objItemEx.StringValue:
=objAdoQuery.FieldByName(valueFieldName).AsString;
    objComBoBox.Items.AddObject(objItemEx.caption,objItemEx);
    objAdoQuery.Next;
  end;
  objAdoQuery.close;
  result:
=true;
end;

//取得comboobx中被选定向的制
function GetComBoBoxSelectedStringValue(objComBoBox:TComboBox):string;
var
  objItemEx:TItemEx;
begin
  
if (objComBoBox.ItemIndex>-1 )
  then begin
       objItemEx:
=(objComBoBox.Items.Objects[objComBoBox.ItemIndex] as  TItemEx);
       result:
=objItemEx.StringValue;
  end
  
else begin
       result:
='';
  end;
end;

listbox的解决方法与此类似。

 
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值