Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Delphi и Lazarus


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Советник
Рейтинг: 10964
∙ повысить рейтинг »
Орловский Дмитрий
Статус: Мастер-Эксперт
Рейтинг: 7267
∙ повысить рейтинг »
Гусятинер Леонид aka lamed
Статус: Академик
Рейтинг: 5820
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Delphi и Lazarus

Номер выпуска:1633
Дата выхода:05.07.2012, 20:00
Администратор рассылки:Киселёва Алёна aka Verena (Академик)
Подписчиков / экспертов:131 / 89
Вопросов / ответов:1 / 1

Консультация # 186432: Уважаемые эксперты! Добрый день. Пожалуйста, ответьте на вопрос: В моем приложении не выполняется условие. Написанное приложение используетсся для заполнения разнообразных бланков. Есть главная форма из которой открываются дочерние формы и происходит заполнение. В процессе использую шаблон Excel.В зависимости от типа бланка в шаблоне удаляются либо...


Консультация # 186432:

Уважаемые эксперты! Добрый день. Пожалуйста, ответьте на вопрос: В моем приложении не выполняется условие. Написанное приложение используетсся для заполнения разнообразных бланков. Есть главная форма из которой открываются дочерние формы и происходит заполнение. В процессе использую шаблон Excel.В зависимости от типа бланка в шаблоне удаляются либо остаются листы для заполнения.
Ниже часть кода с ошибкой.

Код :
procedure TForm2.DPrint;
 var
  Ex, Workbook, L1, L2, L3, L4, L5, FitToPagesTall,FitToPagesWide,
  CenterHorizontally, CenterVertically, Orientation, PaperSize:Variant;
 begin

  dt := Form2.Edit35.Text;
  n1 := Form2.ComboBox1.Text;

  L1 := 'Лист1';
  L2 := 'Лист2';
  L3 := 'Лист3';
  L4 := 'Лист4';
  L5 := 'Лист5';

  Ex := CreateOleObject('Excel.Application');

  Ex.Application.EnableEvents := false;
  Ex.DisplayAlerts := False;

   Workbook := Ex.WorkBooks.Open('C:\Prog\Sn.res');

  Ex.Visible := false; 
  Ex.ActiveWorkBook.WorkSheets['L15'].Delete;
  Ex.ActiveWorkBook.WorkSheets['L14'].Delete;
  Ex.ActiveWorkBook.WorkSheets['L13'].Delete;
  Ex.ActiveWorkBook.WorkSheets['L12'].Delete;
  Ex.ActiveWorkBook.WorkSheets['L11'].Delete;
  Ex.ActiveWorkBook.WorkSheets['L10'].Delete;
  Ex.ActiveWorkBook.WorkSheets['L9'].Delete;
  Ex.ActiveWorkBook.WorkSheets['L8'].Delete;
  Ex.ActiveWorkBook.WorkSheets['L7'].Delete;
  Ex.ActiveWorkBook.WorkSheets['L6'].Delete;

  Ex.DisplayAlerts:=True;
  Ex.ActiveWorkBook.WorkSheets[1].Name:=L1;
  Ex.ActiveWorkBook.WorkSheets[2].Name:=L2;
  Ex.ActiveWorkBook.WorkSheets[3].Name:=L3;
  Ex.ActiveWorkBook.WorkSheets[4].Name:=L4;
  Ex.ActiveWorkBook.WorkSheets[5].Name:=L5;

  If CheckBox15.State = cbUnchecked Then //Если CheckBox15 выключен удаляем лист5
       Ex.DisplayAlerts:=False;
       Ex.ActiveWorkBook.WorkSheets[5].Delete;
       Ex.DisplayAlerts:=True;
                                             
  If CheckBox14.State = cbUnchecked Then  //Если CheckBox14 выключен удаляем лист4 
       Ex.DisplayAlerts:=False;
       Ex.ActiveWorkBook.WorkSheets[4].Delete;
       Ex.DisplayAlerts:=True;

  If CheckBox13.State = cbUnchecked Then  //Если CheckBox13 выключен удаляем лист3 
       Ex.DisplayAlerts:=False;
       Ex.ActiveWorkBook.WorkSheets[3].Delete;
       Ex.DisplayAlerts:=True;


У меня не смотря на состояние CheckBox15,14,13, удаляет листы 5,4,3.Включены CheckBoxы или выключен все равно листы удаляются. В чем у меня ошибка?

Дата отправки: 04.07.2012, 10:12
Вопрос задал: Владимир (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Гусятинер Леонид aka lamed (Академик):

Здравствуйте, Владимир!
Ошибка заключается в неверном использовании краткой инструкции If
Посмотрим в справку Delphi:

Код :
If expression Then statement

Под "statement" понимается единственный оператор. Если требуется объединить для выполнения в ветке Then несколько операторов, их необходимо объединить в составной оператор (compound statement).
С учетом этого часть Вашего кода будет выглядеть так!
Код :
If CheckBox15.State = cbUnchecked Then 
//Если CheckBox15 выключен удаляем лист5
begin
       Ex.DisplayAlerts:=False;
       Ex.ActiveWorkBook.WorkSheets[5].Delete;
       Ex.DisplayAlerts:=True;
end;

Удачи!

Консультировал: Гусятинер Леонид aka lamed (Академик)
Дата отправки: 04.07.2012, 12:24

5
Быстро, кратко, точно.
-----
Дата оценки: 04.07.2012, 12:35

Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное