Консультация № 182940
25.04.2011, 20:43
53.35 руб.
0 3 1
Уважаемые эксперты! Искал в интернете не нашел ответа на вопрос, обращаюсь к вам, может Вы поможете.
Есть у меня на форме три CheckBox. CheckBox13, CheckBox14, CheckBox15. Если CheckBox13=cdChecked то пишется в файл и идет выполнение дальше. Если CheckBox13=cdUnchecked то дальше код не хочет выполнятся, не хочет переходить к условиям выполнения CheckBox14. Как правильно написать что если CheckBox13=cdUnchecked то перейти к выполнению условия CheckBox14 и соответвенно еслиCheckBox14=cdUnchecked то перейти к условию CheckBox15.

Код:
 

///---Действия при CheckBox13

If CheckBox13.State = cbChecked Then
Form3.Caption :='www';

If CheckBox13.State = cbChecked Then
Ex.ActiveWorkBook.WorkSheets[L3].Range['E2'].Value:=n1;

If CheckBox13.State = cbChecked Then
Ex.ActiveWorkBook.WorkSheets[L1].Range['B26'].Value:='Новый лист';

If CheckBox13.State = cbChecked Then
begin
for i:=1 to length(mem3) do begin
j:=(i div 105) + 7;
Ex.ActiveWorkBook.WorkSheets[L3].Cells[j,2].value:=Ex.ActiveWorkBook.WorkSheets[L3].Cells[j,2].value+mem3[i];
end;


///---Действия при CheckBox14
If CheckBox14.State = cbChecked Then
Form3.Caption :='wwwwwww';

If CheckBox14.State = cbChecked Then
Ex.ActiveWorkBook.WorkSheets[L4].Range['E2'].Value:=n1;

If CheckBox14.State = cbChecked Then
Ex.ActiveWorkBook.WorkSheets[L1].Range['B46'].Value:='Новый лист-2';

If CheckBox14.State = cbChecked Then
begin
for i:=1 to length(mem4) do begin
j:=(i div 105) + 7;
Ex.ActiveWorkBook.WorkSheets[L4].Cells[j,2].value:=Ex.ActiveWorkBook.WorkSheets[L4].Cells[j,2].value+mem4[i];
end;


Обсуждение

Неизвестный
25.04.2011, 22:19
общий
Адресаты:
У Вас три раза проверяется одно и то же условие
If CheckBox13.State = cbChecked
Естественно при условии
CheckBox13.State=cdUnchecked ничего не будет выполняться
Неизвестный
26.04.2011, 07:38
общий
26.04.2011, 11:07
это ответ
Здравствуйте, Владимир!
У Вас немного напутано с конструкцией begin... end.
Поясню:
Вот кусок Вашего кода:
...
If CheckBox13.State = cbChecked Then // эта строка блокирует все дальнейшее прохождение программы
begin // 1-й begin
for i:=1 to length(mem3) do begin // 2-й begin
j:=(i div 105) + 7;
Ex.ActiveWorkBook.WorkSheets[L3].Cells[j,2].value := Ex.ActiveWorkBook.WorkSheets[L3].Cells[j,2].value + mem3[i];
end; // end для 2-го begin


///---Действия при CheckBox14
If CheckBox14.State = cbChecked Then
Form3.Caption :='wwwwwww';
...
end; // end для 1-го begin

Вариант кода для такой ситуации прилагаю.
Вопросы пишите в форум.


Приложение:
///---Действия при CheckBox13

If CheckBox13.State = cbChecked Then
begin // начало операций для CheckBox13.State = cbChecked
Form3.Caption :='www';
Ex.ActiveWorkBook.WorkSheets[L3].Range['E2'].Value:=n1;
Ex.ActiveWorkBook.WorkSheets[L1].Range['B26'].Value:='Новый лист';
for i:=1 to length(mem3) do
begin // начало цикла
j:=(i div 105) + 7;
Ex.ActiveWorkBook.WorkSheets[L3].Cells[j,2].value:=Ex.ActiveWorkBook.WorkSheets[L3].Cells[j,2].value+mem3[i];
end; // конец циклв
end; // конец операций для CheckBox13.State = cbChecked


///---Действия при CheckBox14
If CheckBox14.State = cbChecked Then
begin // начало операций для CheckBox14.State = cbChecked
Form3.Caption :='wwwwwww';
Ex.ActiveWorkBook.WorkSheets[L4].Range['E2'].Value:=n1;
Ex.ActiveWorkBook.WorkSheets[L1].Range['B46'].Value:='Новый лист-2';
for i:=1 to length(mem4) do
begin // начало цикла
j:=(i div 105) + 7;
Ex.ActiveWorkBook.WorkSheets[L4].Cells[j,2].value:=Ex.ActiveWorkBook.WorkSheets[L4].Cells[j,2].value+mem4[i];
end; // конец цикла
end; // конец операций для CheckBox14.State = cbChecked
5
Все работает. Благодарю!
давно
Посетитель
352040
133
26.04.2011, 08:13
общий
Благодарю за ответ. Попробовал сделать как вы подсказали, все работает. Еще раз спасибо за помощь.
Об авторе:
Пользуюсь Delphi Enterprise Version7.
Форма ответа