![]() |
|
|
#1
|
|||
|
|||
|
Доброе утро. Пожалуйста, посмотрите кусок кода, который не совсем корректно работает:
В Unit1 : Код:
procedure TForm1.Makro(Var U8, U5, MU8, MU5, O1, MO1, MU : TMasMin);
var f: File of TElementi;
U8w, U5w, O1w : TElementi;
i, j: integer;
begin
..................
Form3.ComboBox4.Clear;
Form3.ComboBox4.Items.Add('U238');
Form3.ComboBox4.Items.Add('U235');
Form3.ComboBox4.Items.Add('U');
if Form3.RadioButton1.Checked = True then
Form3.ComboBox4Change(Form3.ComboBox4 , 0, MU5, MU8, MO1, MU);
end;
........
end;В Unit3 : Код:
procedure TForm3.ComboBox4Change(Sender: TObject; k: integer; var MU5w, MU8w, MO1w, MUw: TMasMin); var i, j : integer; begin if k = 0 then begin case Form3.ComboBox4.ItemIndex of 0: VivodMakr(MU8w); 1: VivodMakr(MU5w); 2: begin for i:=1 to 4 do for j:=1 to 4 do MUw[i, j]:=MU5w[i, j]+MU8w[i, j]; VivodMakr(MUw); end; end; end; end; Процедура VivodMakr должна должна выводить предложенный ей массив TMasMin: array[1..4, 1..4] of real в таблицу StringGrid. И, собственно, без процедуры Код:
procedure TForm3.ComboBox4Change(Sender: TObject; k: integer; var MU5w, MU8w, MO1w, MUw: TMasMin); Код:
procedure TForm3.ComboBox4Change(Sender: TObject; k: integer; var MU5w, MU8w, MO1w, MUw: TMasMin); |
|
#2
|
||||
|
||||
|
Цитата:
Цитата:
Вот как твоя TForm3.ComboBox4Change выглядит отформатированной: Код:
procedure TForm3.ComboBox4Change(Sender: TObject; k: integer; var MU5w, MU8w, MO1w, MUw: TMasMin);
var
i, j: integer;
begin
if k = 0 then
begin
case Form3.ComboBox4.ItemIndex of
0: VivodMakr(MU8w);
1: VivodMakr(MU5w);
2: begin
for i := 1 to 4 do
for j := 1 to 4 do
MUw[i, j] := MU5w[i, j] + MU8w[i, j];
VivodMakr(MUw);
end;
end;
end;
end; |
|
#3
|
|||
|
|||
|
Я подразумевал, что при изменении ItemIndex ComboBox4 в Unit3.
Это прописано процедурой VivodMakr(var Q: TMAsMin); -- она работает корректно -- проверял, да, и если убрать чехарде с Combobox4 она заработает |
|
#4
|
||||
|
||||
|
Цитата:
При визуальном изменении ItemIndex (т.е. при выборе из выпадающего списка нужного элемента) событие OnChange срабатывает, но для этого нужно чтобы обработчик события был присвоен свойству события (например в инспекторе объектов на вкладке Events), но твою TForm3.ComboBox4Change туда присвоить не получится, так как типы параметров и их количество у неё не совпадают с теми которые там нужны. |
|
#5
|
|||
|
|||
|
Понял, почти. Спасибо
|
|
#6
|
||||
|
||||
|
Цитата:
|
|
#7
|
|||
|
|||
|
А вызвал я её правильно с Unit1, если теперь оставить только Sender: TObject?
Код:
Form3.ComboBox4Change(Form3.ComboBox4); |
|
#8
|
||||
|
||||
|
Цитата:
А если в обработчике события не проверяется кто вызвал это событие, то можно ещё и так вызывать: Код:
Form3.ComboBox4Change(nil); |
|
#9
|
|||
|
|||
|
Спасибо большое.
|