delphi - 在TComboBox中,如何使下拉菜单显示X,但是选择X时text属性变为Y?

标签 delphi tcombobox

我需要用户选择一个日期格式(dd / mm / yyyy或dd mmmm yyyy等),但是显示这些选项只会造成混淆。我想要做的是将TComboBox项填充为“ 14/09/2012”,“ 2012年9月14日”,“ 2012年9月14日星期五”等,当用户选择这些日期格式之一时,组合框就会文字“ dd mmmm yyyy”或其他日期格式(尽管我仍然希望他们能够输入“ d / m / yy”之类的其他内容)。

但是我还没有找到一种简便的方法-除了带有TSpeedButton的TEdit,它会打开一个带有选择选项的表单,如果没有使用TComboBox的方法,这是我的第二选择。

问题:如何使TComboBox下拉显示日期,但是选择日期时text属性获得日期格式?

最佳答案

所有者提取TCombobox怎么样?

procedure TForm16.cbLongDateFormatDrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  with Control as TComboBox do
  begin
    if not (odSelected in State) then
      Canvas.Brush.Color:=clWindow
    else
      Canvas.Brush.Color:=clHighlight;
    Canvas.FillRect(Rect);
    Canvas.TextOut(Rect.Left +2 , Rect.Top, FormatDateTime(cbLongDateFormat.Items[Index], Now));
  end;
end;

procedure TForm16.FormCreate(Sender: TObject);
begin
  cbLongDateFormat.Items.Add('ddddd');
  cbLongDateFormat.Items.Add('dddddd');
  cbLongDateFormat.Items.Add('dd/mm/yyyy');
  cbLongDateFormat.Items.Add('d mmmm yyyy');
end;

关于delphi - 在TComboBox中,如何使下拉菜单显示X,但是选择X时text属性变为Y?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12416696/

相关文章:

string - Delphi 2007 中对多维数组进行排序

delphi - 如何将整数存储在对象属性中,然后向用户显示该值?

delphi - 是否可以向 Delphi 的 TButtonedEdit 添加历史列表下拉列表?

arrays - delphi 将文件作为字节数组发送到 Rest 服务

delphi - Delphi-分页数据的正确方法

delphi - 如何从 TTime 中删除秒而不诉诸 TimeToStr(const datetime :TDateTime; const formatsettings:TFormatSettings)

delphi - 获取当前选定的组合框值并将其用作变量

delphi - 当 BiDiMode= bdRightToLeft 和 Style= csDropDownList 且应用程序使用 VCL 样式时,TComboBoxEx 项目无法正确绘制

delphi - 具有 csOwnerDrawFixed 样式的组合框如何表现得像 csDropDown 样式?