取的Combobox中的所选择项的值

有时候我们需要根据combobox(listbox同样)的选择项的值进行处理,但是在delphi中的Combobox的item是一个TStrings类型的对象,我们无法象c#或java中那样从combobox的选项类中继承,创建一个我们需要的类来完成任务。但是仔细研究delphi的combobox对象发现了以下的解决方法:

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

TItemEx=class(TObject)      caption:string;
   public

      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的解决方法与此类似。

www.sinoprise.com

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
用法举例:从数据表name字段写入VALComboBox的items,id字段写入VALComboBox的values,当从VALComboBox选择一个选项后,就可以从value属性获得相应的ID,或者写value的为某ID,VALComboBox将定位在相应的选项上;unit VALComboBox;interfaceuses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Menus, Dialogs, StdCtrls;type TValComboBox = class(TComboBox) private FValue: PString; FValues: TStrings; FOnChange: TNotifyEvent; function GetValue: string; function GetButtonValue(Index: Integer): string; procedure SetValue(const Value: string); procedure SetValues(Value: TStrings); protected procedure Change; dynamic; procedure Notification(AComponent: TComponent; Operation: TOperation); override; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; property Value: string read GetValue write SetValue; property ItemIndex; published property Values: TStrings read FValues write SetValues; property OnChange: TNotifyEvent read FOnChange write FOnChange; end;procedure Register;implementationconstructor TValComboBox.Create(AOwner: TComponent);begin inherited Create(AOwner); FValue := NullStr; FValues := TStringList.Create; style := csDropDownList;end;destructor TValComboBox.Destroy;begin DisposeStr (FValue); FValues.Free; inherited Destroy;end;procedure TValComboBox.Notification(AComponent: TComponent; Operation: TOperation);begin inherited Notification(AComponent, Operation);end;function TValComboBox.GetValue : string;begin result:=values[itemindex];end;function TValComboBox.GetButtonValue(Index: Integer): string;begin if (Index < FValues.Count) and (FValues[Index] ‘‘) then Result := FValues[Index] else if (Index < Items.Count) then Result := Items[Index] else Result := ‘‘;end;procedure TValComboBox.SetValue (const Value: string);var I : Integer;begin AssignStr(FValue, Value); if (ItemIndex < 0) or (GetButtonValue(ItemIndex) Value) then begin if (ItemIndex >= 0) then ItemIndex := -1; for I := 0 to Items.Count - 1 do begin if GetButtonValue(I) = Value then begin ItemIndex := I; break; end
### 回答1: 在PyQt5ComboBox,可以使用以下代码: ```python value = comboBox.currentText() ``` 其,`comboBox`是ComboBox对象的名称,`currentText()`方法可以获当前选的文本。如果需要获项的索引,可以使用`currentIndex()`方法: ```python index = comboBox.currentIndex() ``` 以上就是在PyQt5ComboBox的方法。 ### 回答2: 在pyqt5,可以通过combobox控件来实现下拉菜单的效果。当用户在下拉列表选择一个选项时,我们需要获combobox。 获combobox可以使用currentText()方法。该方法将返回当前选择的文本字符串。例如: ``` value = self.comboBox.currentText() ``` 以上代码将当前combobox控件选择的文本字符串赋给变量value。 如果我们需要获当前选择的选项的索引,可以使用currentIndex()方法。该方法将返回被选项的索引数字。例如: ``` index = self.comboBox.currentIndex() ``` 以上代码将当前combobox控件被选项的索引数字赋给变量index。 在上述代码,self代表当前的窗口,comboBoxcombobox控件的名称。需要提醒的是,获combobox控件的时,要确保已经实现了combobox控件的下拉列表选项。 ### 回答3: 在 Pyqt5 combobox可以使用以下几种方式: 1. 通过 currentIndex() 方法获当前选项的索引,再使用 itemText() 方法获该索引下的项的。例如: ``` value = combo_box.currentIndex() selected_value = combo_box.itemText(value) ``` 2. 通过 currentText() 方法直接获当前选项的。例如: ``` selected_value = combo_box.currentText() ``` 3. 通过 activated[str] 信号获项的。例如: ``` def get_selected_value(value): selected_value = value combo_box.activated[str].connect(get_selected_value) ``` 注意,第三种方式需要在定义 combobox 时添加下面这行代码: ``` combo_box.setEditable(True) ``` 这样才能发出 activated[str] 信号。另外,当使用第一种方式获时,返回是一个整数,需要通过 itemText() 方法转换成具体的。 除此之外,如果 combobox 的选项是通过 model 设置的,还可以通过 model().data(index) 方法获项的。例如: ``` index = combo_box.currentIndex() selected_value = combo_box.model().data(index) ``` 以上就是在 Pyqt5 combobox 的几种方式。根据实际情况选择合适的方法即可。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

newsunet

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值