不可能通过 ComboBox 上的 OnChange 事件直接执行此操作,因为在 OnChange 事件之后,文本属性将设置回用户选择的任何内容。但是,我可以向表单发送消息以进行更改。
procedure TfINISettings.cbLongDateFormatChange(Sender: TObject);
begin
PostMessage(Handle, WM_USER, 0, 0);
end;
并在表单界面中声明一个过程
procedure DateFormatComboBoxChange(var msg: TMessage); message WM_USER;
处理此消息,并在实现中
procedure TfINISettings.DateFormatComboBoxChange(var msg: TMessage);
begin
if cbLongDateFormat.ItemIndex <> -1 then
cbLongDateFormat.Text := DateFormats[cbLongDateFormat.ItemIndex];
end;
其中 DateFormats 是一个包含我的日期格式的 TStringList。FormCreate 方法如下所示
procedure TfINISettings.FormCreate(Sender: TObject);
var
d: String;
begin
DateFormats := TStringList.Create;
DateFormats.Add('ddddd');
DateFormats.Add('dddddd');
DateFormats.Add('d mmmm yyyy');
for d in DateFormats do
cbLongDateFormat.Items.Add(FormatDateTime(d, now));
end;
欢迎提出改进建议。