У меня есть несколько коробок TEdit на моей форме. Данные привязаны к оборудованию, которое имеет одинаковые минимальные и максимальные значения для каждого диапазона, но несколько диапазонов. Если пользователь обновляет максимальное значение для любого диапазона, введя в поле TEdit, я хочу обновить соответствующий поле min, а также поле TEdit, которое содержит произведение максимального времени другого значения и т. Д. Так как все поля TEdit имеют аналогичные имена, я хотел бы знать, могу ли я передать только отличительную строку в общую процедуру и построить имя конкретных полей TEdit для ее изменения. Во время выполнения я получаю «Нарушение доступа по адресу 0074CB11 в модуле« MyProject.exe ». Читайте адрес 8BD88B77». Любой совет будет принят во внимание.Использовать TEdit как переменную?
procedure TForm1.R1IMaxEditChange(Sender: TObject);
//User types a new Range 1 Maximum I value
begin
UpdateIMin_Power('R1')
end;
procedure TForm1.UpdateIMin_Power(Range: string);
var
R_IMax, R_IMin, R_Power, R_Volts: TEdit;
begin
//Assign variable names to TEdit boxes already on form.
R_IMax.Name := Range + 'IMaxEdit'; //'R1IMaxEdit' when called by R1IMaxEditChange
R_Volts.Name := Range + 'VoltsEdit';
R_IMin.Name := Range + 'IMinEdit';
R_IPower.Name := Range + 'IPowerEdit';
//IMax already manually entered by user in R1IMaxEdit; Volts already on form
R_IMin.Text := R_IMax.Text; //Let IMin = IMax
R_Power.Text := FloatToStr(StrToFloat(R_IMax.Text) * StrToFloat(R_Volts.Text)); //Power = Imax * Voltage
end;
Поскольку переменные относятся к коробкам TEdit со значениями в форме, я думал, что они были инициализированы. Раньше я пытался передавать элементы управления редактирования вместо строки в аналогичную процедуру, и это работало нормально. Я просто пытался понять, есть ли другой способ сделать это. Благодарю. – user3298739
Или используйте функцию «FindComponent». – hvd
@hvd О, продолжай! На самом деле я знал, что есть что-то, что делало повторение, но я забыл его имя. Я никогда не использовал такие вещи. Anathema. –