У меня есть эти элементы управления TDateTimePicker, TComboBox, Tedit и TButton.TButton отключен по умолчанию.Чего я хотел бы добиться, так это включить TButton, когда все остальные элементы управления заполнены или не заполнены нулями.
С помощью следующих кодов все 3 элемента управления, начиная с TDateTimePicker, при заполнении У меня нет проблем, это работаеткак и ожидалось.
Ошибка возникает, когда я заполняю TComboxBox, а затем TEdit, он включает TButton, даже если TDateTimePicker еще не заполнен.Или наоборот, я буду заполнять TEdit, а затем TComboBox, он включает TButton.
Из кодов, приведенных ниже, я ожидаю, что TButton не включится, пока не будут заполнены все 3 элемента управления.
IПытался выяснить (весь день), как эта ошибка произошла.
Я буду признателен всем, кто поможет мне разобраться в этом.
procedure TfrmHolidays.EnableSaveButton;
begin
if (edtHolidayName.Text <> NullAsStringValue) and (cmbHolidayType.ItemIndex <> -1)and (dtpHolidayDate.Date <> 0) then
begin
btnHolidaySave.Enabled := True;
end
else
begin
btnHolidaySave.Enabled := False;
end;
end;
procedure TfrmHolidays.dtpHolidayDateChange(Sender: TObject);
begin
EnableSaveButton;
end;
procedure TfrmHolidays.cmbHolidayTypeChange(Sender: TObject);
begin
EnableSaveButton;
end;
procedure TfrmHolidays.edtHolidayNameChange(Sender: TObject);
begin
EnableSaveButton; // triggers enable btnHolidaySave button
end;
Кстати, у меня естьбольше кода, связанного с тем, чтобы сделать TDateTimePicker пустым, и я предположил, что с этим проблем нет.Я также попытался вложить в If Statement каждое условие, и я все еще получаю ошибку.Кроме того, я проверял каждое условие за раз, и оно отлично работает.
Обновления: вот как я инициализировал dtpHolidayDate.Date:
procedure TfrmHolidays.FormCreate(Sender: TObject);
begin
DateTime_SetFormat(dtpHolidayDate.Handle, ' ');
FDTMDateEmpty := True;
end;
procedure TfrmHolidays.dtpHolidayDateCloseUp(Sender: TObject);
begin
DateTime_SetFormat(dtpHolidayDate.Handle, PChar('MMM dd yyyy (ddd)'));
end;
procedure TfrmHolidays.dtpHolidayDateChange(Sender: TObject);
begin
FDTMDateEmpty := False;
EnableSaveButton; // same and updated procedure above
end;