26 ноября, четверг 04:18
Bankir.Ru

Объявление

Свернуть
Пока нет объявлений.

VCH и вывод на печать не закрывая формы

Свернуть
X
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • VCH и вывод на печать не закрывая формы

    Доброго дня!
    Собственно сабж.
    Расковырял такой замечательный инструмент как VCH, но как с этой формы напечатать - увы не знаю.
    В форме заполняют данные, все это выводится на экран (то что нужно напечатать) и закрывается все, опять же приходится заново открывать форму, набирать данные и т.д.
    можно ли как то это все обойти? использую инструмент Windows Report.

  • #2
    не понятно, что у вас происходит.
    делаете в vch кнопку "печать" у неё пишете и устанавливаете (ProcessEvent.Set) метод OnClick, в котором формируете объект отчёта
    у кнопки не трогаете ModalResult, форма в этом случае не должна закрываться

    VCH хорош, но из-за EasyWin я перестал не писать под него

    Комментарий


    • #3
      Проблема в том, что не выводит на экран. Висит окно "Обработка и печать отобранных записей" и все.
      Вот код макроса.

      import Vch, "or_rep_h";

      Rep = CMakeReport("",SEP_DEFAULT,9999);

      class (TForm) TReport
      Var
      dat = date(),
      Label0 = TLabel("Label0", 2, 1, 16, 1, "Начальная дата"),
      Label1 = TLabel("Label1", 2, 3, 16, 3, "Конечная дата"),
      DateEdit0 = TDateEdit("DateEdit0", 18, 1),
      DateEdit1 = TDateEdit("DateEdit1", 18, 3),
      CheckBox0 = TCheckBox("CheckBox0", 2, 5, 28, 5, "Формирование Проводок"),
      CheckBox1 = TCheckBox("CheckBox1", 2, 7, 28, 7, "Печать реестра");

      MACRO OnKeyDown( keyCode )
      if (KeyCode == kbF2)

      Rep.AutoScan("[" +
      "############ \n" +
      "] ",
      dat, "r");

      Rep.PrintRep;
      end;
      END;

      initTForm( 10, 3, 41, 13 );
      Title = "Реестр";
      Color = Black;
      BkGrColor = LightGray;
      StatLineMsg = "~ESC~ Выход ~F2~ Выполнить";

      ComponentInsert(Label0);

      ComponentInsert(Label1);


      ComponentInsert(DateEdit0);
      DateEdit0.Color = Black;
      DateEdit0.BkGrColor = LightGray;
      DateEdit0.SelBkGrColor = LightGray;
      DateEdit0.FcBkGrColor = DarkGray;

      ComponentInsert(DateEdit1);
      DateEdit1.Color = Black;
      DateEdit1.BkGrColor = LightGray;
      DateEdit1.SelBkGrColor = LightGray;
      DateEdit1.FcBkGrColor = DarkGray;

      ComponentInsert(CheckBox0);
      CheckBox0.BkGrColor = LightGray;
      CheckBox0.SelBkGrColor = LightGray;

      ComponentInsert(CheckBox1);
      CheckBox1.BkGrColor = LightGray;
      CheckBox1.SelBkGrColor = LightGray;
      CheckBox1.Check(0); //отмечаем галочку

      selectComponent(DateEdit0);
      end;

      /********* Начало основной процедуры *******************/
      Var
      Report = TReport;

      _SetEventDelay(100);
      Report.ShowModal;

      //exit( 1 );

      END.
      Не стал кнопку делать, сделал по нажатию клавиши F2.

      если прописываю
      Rep.PrintRep; exit(0);
      То окно не висит, выводит на печать, а по нажатию Esc - форма закрывается

      Комментарий


      • #4
        А вывод куда планируется? В плейн-текст? ворд? эксель?

        Я тут плохой советчик, ибо WindowsReports не ипользую. У меня свои библиотеки для прямой работы с OpenDocument через xml. Однако, рискну предоложить, что всю работу с объектом Rep надо делать внутри OnKeyDown. В том числе инициализацию, а закончить Rep=null;

        Комментарий


        • #5
          Да, в плайн-текст. OnKeyDown как раз таки и использую.
          По событию окно тупо висит.
          http://bankir.ru/dom/attachment.php?...1&d=1418968478

          Когда запускаю макрос не из формы, все отрабатывает четко, когда из формы, вот так виснет. По нажатию ESC выводит инфу на экран и закрывает форму, хотя команды выхода exit() нет.

          P.S. В принципе уже разобрался с печатью, но другими методами. Хотелось бы конечно добить вывод из формы отчетов Windows Reports
          Вложения

          Комментарий


          • #6
            В начало:
            PHP код:
            import GetRegVals
            В обработчик onClick
            PHP код:
            MACRO OnKeyDownkeyCode )
                if (
            KeyCode == kbF2)
                    var 
            Rep CMakeReport("",SEP_DEFAULT,9999);

                    
            Rep.AutoScan("[" +
                    
            "################### \n" +
                    
            "] ",
                    
            dat+" "+String(time()), "r");

                    var 
            strFileName GetRegValStr"BANK_INI\\ОБЩИЕ ПАРАМЕТРЫ\\ДИРЕКТОРИИ\\TEXTDIR""..\\TXTFILE") +"\\""my-test-report." StringUserNumber() );
                    
            SetOutPut(strFileName);
                    
            Rep.PrintRep;
                    
            SetOutPut(null);
                    
            ViewFile(strFileName);
                
            end;
            END

            Комментарий


            • #7
              Спасибо большое!

              Комментарий

              Обработка...
              X