|
| |
Пост N: 15
Зарегистрирован: 15.11.12
|
|
Отправлено: 23.11.12 12:09. Заголовок: увы и ах.....Valkyri..
увы и ах.....Valkyrie тоже ниче не выдала. Есть мелкая надежда на то что используемый класс не полное творение разработчика. Поэтому ниже приведен текст фнукция где этот класс создается мож с подобным классом уже кто сталкивался.... function TPRINTER static Static26 local Local1 if (ISNIL(Static26)) Static26:= _newclass("TPrinter", Local1) _addmethod({"Text1"}, Nil, Nil, 1) _addmethod({"aOpr"}, Nil, Nil, 1) _addmethod({"aVar"}, Nil, Nil, 1) _addmethod({"nStr"}, Nil, Nil, 1) _addmethod({"nList"}, Nil, Nil, 1) _addmethod({"Auto"}, Nil, Nil, 1) _addmethod({"IsPrn"}, Nil, Nil, 1) _addmethod({"Device"}, Nil, Nil, 1) _addmethod({"ReportName"}, Nil, Nil, 1) _addmethod({"cHead"}, Nil, Nil, 1) _addmethod({"cEject"}, Nil, Nil, 1) _addmethod({"cHeadFoot"}, Nil, Nil, 1) _addmethod({"cFoot"}, Nil, Nil, 1) _addmethod({"cTitul"}, Nil, Nil, 1) _addmethod({"nHeadWidth"}, Nil, Nil, 1) _addmethod({"KolStr"}, Nil, Nil, 1) _addmethod({"Ustanovki"}, Nil, Nil, 1) _addmethod({"lContinue"}, Nil, Nil, 1) _addmethod({"cFile"}, Nil, Nil, 1) _addmethod({"cSource"}, Nil, Nil, 1) _addmethod({"lLoadError"}, Nil, Nil, 1) _addmethod({"Rulon"}, Nil, Nil, 1) _addmethod({"lTempFile"}, Nil, Nil, 1) _addmethod({"Init", {|| tprninit()}}, Nil, .T., 0) _addmethod({"Load", {|| tprnload()}}, Nil, .T., 0) _addmethod({"SetDevice", {|| tprnsetdev()}}, Nil, .F., 0) _addmethod({"Process", {|| tprnproces()}}, Nil, .F., 0) _addmethod({"PrintTitul", {|| tprntitul()}}, Nil, .F., 0) _addmethod({"PrintHead", {|| tprnhead()}}, Nil, .F., 0) _addmethod({"PrintHeadFoot", {|| tprnheadfo()}}, Nil, .F., 0) _addmethod({"PrintStr", {|| tprnstr()}}, Nil, .F., 0) _addmethod({"PrintFoot", {|| tprnfoot()}}, Nil, .F., 0) _addmethod({"PrintFormula", {|| tprnprintf()}}, Nil, .F., 0) _addmethod({"Set", {|| tprnset()}}, Nil, .F., 0) _addmethod({"Done", {|| tprndone()}}, Nil, .F., 0) _addmethod({"StrTransform", {|| tprntransf()}}, Nil, .F., 0) _addmethod({"NewPage", {|| newpage()}}, Nil, .F., 0) _addmethod({"ResetPage", {|| resetpage()}}, Nil, .F., 0) _addmethod({"AddnStr", {|| tprnaddnst()}}, Nil, .F., 0) endif return __classins(Static26) ******************************** один из методов класса static function TPRNLOAD(Arg1) local Local1:= qself(), Local2, Local3:= {}, Local4:= {}, Local5, ; Local6, Local7, Local8, Local9 Local1:lloaderro(.F.) Local1:aopr({}) Local1:avar({}) if (!file(Arg1)) alert("Отсутствует файл отчетной формы " + Arg1) Local1:lloaderro(.T.) return .F. endif Local1:nstr(1) Local1:nlist(1) Local1:isprn(.T.) Local1:ctitul("") Local1:nheadwidt(40) Local1:kolstr(getcfg("KOLSTR", Arg1, "N")) if (Local1:kolstr() == 0) Local1:kolstr(75) endif Local1:device(getcfg("DEVICE", Arg1, "C")) Local1:rulon(getcfg("RULON", Arg1, "C")) if (Upper(Local1:rulon()) = "ДА") Local1:rulon(.T.) else Local1:rulon(.F.) endif Local1:ustanovki("") Local1:ustanovki(getcfg("Ustanovki", Arg1, "C")) Local1:ceject(getcfg("EJECT", Arg1, "C")) if (Empty(Local1:ceject())) Local1:ceject("") endif if (Empty(Local1:ustanovki()) .AND. Type("cUstanovki") != "U") Local1:ustanovki(custanovki) elseif (Upper(Local1:ustanovki()) == "НЕТ") Local1:ustanovki("") endif Local1:lcontinue(.T.) Local2:= memoread(Arg1) Local1:cfile(SubStr(Arg1, 1, Len(Arg1) - 3) + "prn") Local1:csource(memoread(Arg1)) Local1:ctitul(beforatnum(Chr(13) + Chr(10) + "ENDTITUL", ; afteratnum("TITUL" + Chr(13) + Chr(10), Local1:csource(), 1), ; 1)) Local1:chead(beforatnum(Chr(13) + Chr(10) + "ENDPAGEHEAD", ; afteratnum("PAGEHEAD" + Chr(13) + Chr(10), Local1:csource(), ; 1), 1)) Local1:cheadfoot(beforatnum(Chr(13) + Chr(10) + "ENDPAGEFOOT", ; afteratnum("PAGEFOOT" + Chr(13) + Chr(10), Local1:csource(), ; 1), 1)) Local1:cfoot(beforatnum(Chr(13) + Chr(10) + "ENDMAINFOOT", ; afteratnum("MAINFOOT" + Chr(13) + Chr(10), Local1:csource(), ; 1), 1)) Local1:reportnam("Отчет") tokeninit(@Local2, Chr(13) + Chr(10), 2) Local5:= 0 Local9:= .F. do while (!tokenend()) Local7:= tokennext(Local2) Local6:= alltrim(Local7) Local5++ do case case Left(Local6, 1) == "#" if (!Local9) Local1:reportnam(SubStr(Local7, 2)) Local9:= .T. endif loop case Upper(Local6) = "KOLSTR" .OR. Upper(Local6) = "USTANOVKI" ; .OR. Upper(Local6) = "RULON" .OR. Upper(Local6) = ; "DEVICE" .OR. Upper(Local6) = "LIST" .OR. Upper(Local6) ; = "EJECT" loop case Upper(Local6) = "TITUL" do while (!tokenend() .AND. Upper(Local6) != "ENDTITUL") Local7:= tokennext(Local2) Local5++ Local6:= alltrim(Local7) enddo case Upper(Local6) = "PAGEHEAD" do while (!tokenend() .AND. Upper(Local6) != "ENDPAGEHEAD") Local7:= tokennext(Local2) Local5++ Local6:= alltrim(Local7) enddo case Upper(Local6) = "PAGEFOOT" do while (!tokenend() .AND. Upper(Local6) != "ENDPAGEFOOT") Local7:= tokennext(Local2) Local5++ Local6:= alltrim(Local7) enddo case Upper(Local6) = "MAINFOOT" do while (!tokenend() .AND. Upper(Local6) != "ENDMAINFOOT") Local7:= tokennext(Local2) Local5++ Local6:= alltrim(Local7) enddo case Upper(Local6) = "VAR" Local6:= alltrim(SubStr(Local6, 4)) numelem:= numtoken(Local6, "," + Chr(13) + Chr(10)) for Local8:= 1 to numelem AAdd(Local1:avar(), alltrim(token(Local6, "," + Chr(13) ; + Chr(10), Local8))) Local5++ next case Upper(Local6) = "AUTO" Local5++ Local1:auto(.T.) case SubStr(Local6, 1, 2) = "@ " Local6:= LTrim(SubStr(Local6, 2)) Local7:= alltrim(Local6) do case case Upper(Local7) = "IF" AAdd(Local1:aopr(), {"IF", alltrim(SubStr(Local7, 3)), ; Local5, 0, &("{||" + alltrim(SubStr(Local7, 3)) + ; "}")}) AAdd(Local3, Len(Local1:aopr())) case Upper(Local7) = "ELSE" if (Len(Local3) == 0) alert("Ошибка в составлении условных операторов;Строка" ; + Str(alltrim(Local5))) Local1:lloaderro(.T.) return .F. endif if (Empty(SubStr(Local7, 5))) AAdd(Local1:aopr(), {"ELSE", alltrim(SubStr(Local7, ; 5)), Local5, 0}) else AAdd(Local1:aopr(), {"ELSE", alltrim(SubStr(Local7, ; 5)), Local5, 0, &("{||" + alltrim(SubStr(Local7, ; 5)) + "}")}) endif Local1:aopr()[ATail(Local3)][4]:= Len(Local1:aopr()) Local3[Len(Local3)]:= Len(Local1:aopr()) case Upper(Local7) = "ENDIF" if (Len(Local3) == 0) alert("Ошибка в составлении условных операторов;Строка " ; + alltrim(Str(Local5))) Local1:lloaderro(.T.) return .F. endif AAdd(Local1:aopr(), {"ENDIF", "", Local5, 0}) Local1:aopr()[ATail(Local3)][4]:= Len(Local1:aopr()) asize(Local3, Len(Local3) - 1) case Upper(Local7) = "WHILE" AAdd(Local1:aopr(), {"WHILE", alltrim(SubStr(Local7, ; 6)), Local5, 0, &("{||" + alltrim(SubStr(Local7, 6)) ; + "}")}) AAdd(Local4, Len(Local1:aopr())) case Upper(Local7) = "ENDWHILE" if (Len(Local4) == 0) Local1:lloaderro(.T.) alert("Ошибка в составлении условных операторов;Строка " ; + alltrim(Str(Local5))) return .F. endif AAdd(Local1:aopr(), {"ENDWHILE", "", Local5, ; ATail(Local4)}) Local1:aopr()[ATail(Local4)][4]:= Len(Local1:aopr()) asize(Local4, Len(Local4) - 1) case "{|" $ Upper(Local7) .OR. "&" $ Upper(Local7) AAdd(Local1:aopr(), {"OP", Local7, Local5, 0, "{||" + ; Local7 + "}"}) otherwise AAdd(Local1:aopr(), {"OP", Local7, Local5, 0, &("{||" + ; Local7 + "}")}) endcase case SubStr(Local6, 1, 1) != "@" AAdd(Local1:aopr(), {"STR", Local7, Local5, 0}) endcase enddo for Local8:= 1 to Len(Local1:avar()) Local6:= Local1:avar()[Local8] if (Type("M->" + Local6) = "U") public &Local6 endif next return ******************************** процедура через которую осуществляется печать форм: procedure PRINTFORM(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6) local Local1, Local2 if (demoflag) demo() else showmessag("Формирую отчет.") Arg3:= iif(Arg3 = Nil, .F., Arg3) Arg4:= iif(Arg4 = Nil, .F., Arg4) Arg5:= iif(Arg5 = Nil, .F., Arg5) Arg6:= iif(Arg6 = Nil, 0, Arg6) if (file(dallvod + Arg1)) Local1:= tprinter():load(dallvod + Arg1) else Local1:= tprinter():load(dvod + Arg1) endif if (Local1:lloaderror()) showmessag() else if (Arg2 != Nil) Local1:device(Arg2) endif Arg2:= iif(!Empty(ctempdir), ctempdir + "\", "") + ; Local1:device() if (Local1:setdevice(Arg4, Arg5)) Local2:= Local1:reportname() if (Local1:process()) if (Arg3 .AND. file(Arg2 + ".prn")) edittext(Arg2 + ".prn", Local2 + Space(10) + Arg1, ; Arg6) endif endif endif showmessag() return endif endif ********************************
|