#include #include #include "error.ch" #DEFINE KZIELONY { {80,240,60} , {80,240,60}, {80,240,60}, {80,240,60}, {80,240,60}, {80,240,60} } #DEFINE KCZERWONY { {240,0,60} , {240,0,60}, {240,0,60}, {240,0,60}, {240,0,60}, {240,0,60} } #DEFINE KGRANAT { {0,0,200} , {0,0,200}, {0,0,200}, {0,0,200}, {0,0,200}, {0,0,200} } #DEFINE KCZARNY { {0,0,0} , {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} } #DEFINE FAKTURAVAT 1 #DEFINE F_NIP DaneFirmy[8] #DEFINE EOL chr(13)+chr(10) #DEFINE WYKRESY_PROGRESS_BAR .f. #define FR_PRIVATE 0x10 #define FR_NOT_ENUM 0x20 DECLARE DLL_TYPE_INT AddFontResourceEx( DLL_TYPE_LPCTSTR lpszFileName, DLL_TYPE_DWORD fl, DLL_TYPE_LPVOID pdv) IN GDI32.DLL *--------------------- * Fazy eksportu * 0 - brak eksportu - do wysłania do pliku * 1 - wyeksportowane * 2 - po poprawie - ponowny eksport * 9 - do usunięcia z pliku docelowego *----------------------------- function MAIN param user, pass local i, tmpWer := "" static lBusyProc := .f. private TabObszarowPracownik := {} private lOtwarcieProgramu := .t. *\_/-\_/-\_/-\_/-\_/-\_/-\_/-\_/-\_/-\_/- public WersjaProgramu := "1.11.40.30.1" *\_/-\_/-\_/-\_/-\_/-\_/-\_/-\_/-\_/-\_/- SET LANGUAGE TO POLISH SET EPOCH TO 2000 SET DATE ANSI set century on set date ansi set browsesync on set deleted on set decimals to 4 set exclusive OFF set softseek off SET NAVIGATION EXTENDED REQUEST DBFCDX , DBFFPT RDDSETDEFAULT( "DBFCDX" ) public sciezka := ".\" public Kat_Roboczy := ".\" public Drukarka := "" public RecSize := 40 public max_obszar public SystemDBF := {"sys1", "sys2", "sys3", "sys4", "sys5", "sys6", "sys7"} public Kat_System := "system\" public FolderProgramu := "" public FolderLBH := "" public FolderMAT := "" public FolderZdjec := "" public PlikDatenBank := "" public PlikAuftragsNr := "" public aSerieAktywnosci := { { 400,400,400,400}, {0,0,0,0} } public aZadanaAktywnosc, aMcZadanaAktywnosc, aMcWykonanaAktywnosc public NrZalogowanegoPracownika := -1 public NazwiskoZalogowanegoPracownika := "" public MaxCzasPracy := 465 public SC_DOST :="" Public AUprawnienia := {; { "100", "Akord",.t.,.t.},; { "101", "Wprowadzanie akordu", .t. , .t.},; { "102", "Przeglšdanie akordu własnego", .t. , .t.},; { "103", "Przeglšdanie akordu - wszyscy pracownicy", .f., .f.},; { "104", "Poprawianie akordu", .f., .f.},; { "105", "Nieobecnoœci w pracy", .f., .f.},; { "106", "Rejestracja regulacji", .f., .f.},; { "200", "Przygotowanie produkcji", .f., .f.},; { "201", "Palety - przeglšdanie", .t., .t. },; { "202", "Palety - edycja", .f., .f. },; { "220", "Zlecenia - przeglšdanie", .t., .t. },; { "221", "Zlecenia - edycja", .f., .f. },; { "222", "Zlecenia - zamykanie", .f., .f. },; {"223","Zlecenia - poprawa",.f.,.f.},; {"224","Zlecenia - poprawa - kierownik",.f.,.f.},; {"225","Zlecenia - zamknięcie specjalne",.f.,.f.},; {"230","Zlecenia -wydanie na magazyn",.f.,.f.},; {"231","Magazyn braków - podglšd", .t. , .t.},; {"232","Magazyn braków - obsługa rozliczeń", .f. , .f.},; {"241","Trzpienie - zakładanie nowych", .f. ,.f. },; {"242","Trzpienie - paprawa danych", .f. ,.f. },; {"243","Trzpienie - Wymiana", .f. ,.f. },; {"244","Trzpienie - Usunięcie", .f. ,.f. },; { "800", "Przeniesienie danych", .f., .f. },; { "810", "Przeniesienie danych-LBH", .f., .f. },; { "820", "Przeniesienie danych-EingangPaletten", .f., .f. },; { "830", "Przeniesienie danych-ZuteilungPaletten", .f., .f. },; { "900", "Ustawienia", .f., .f. },; { "901", "Czynnoœci", .t., .t. },; { "911", "Maszyny", .t., .t. },; { "990", "Pracownicy", .f., .f. } , ; { "999", "ADMINISTRATOR", .f., .f. } ; } PUBLIC cPrzerwa1 :="", cPrzerwa2:="", cPrzerwa3 := "" PUBLIC aPrzerwy := { { 540,555} , {1080,1095} , {30, 45} } public ZablokujZmianeStrony := .f. //AddFont('LCDN.TTF') FolderProgramu := substr(exename(),1,rat("\",exename())-1) SetCurrentFolder(FolderProgramu) SC_DOST := FolderProgramu+"\" OdczytUstawien() // odczytaj wersję programu BEGIN INI FILE FolderProgramu+"\wersja.ini" GET tmpWer SECTION "GLOBALNE" ENTRY "Wersja" DEFAULT "" END INI if !File(GetWindowsFolder()+"\fonts\FRE3OF9X.TTF") FileCopy(FolderProgramu+"\FRE3OF9X.TTF", GetWindowsFolder()+"\fonts\FRE3OF9X.TTF") RegistryWrite( "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts\FREE 3 OF 9 Extended Regular" , "FRE3OF9X.TTF" ) //MsgInfo(hb_ValToStr( RegistryRead( "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts\Free3of9Extended") ) ,"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts\Free3of9Extended") endif if !(tmpWer == WersjaProgramu) test_dbf("sys") // zainstaluj czcionkę // skopiuj plik do folderu Windows'a BEGIN INI FILE FolderProgramu+"\wersja.ini" SET SECTION "GLOBALNE" ENTRY "Wersja" TO WersjaProgramu END INI endif if !UstawBazy({ {"dane\prac",,2,.f.}, {"system\uprprac",,1,.f.} , {"dane\aktywn",,2,.f. } , {"dane\zadakt",,1,.f. } } , 0, TabObszarowPracownik) return endif Load window OKGl_Akord Load window OknoIndeksowanie center window OKGl_Akord #IFDEF WYKRESY_PROGRESS_BAR * definicje_wykresow() #ENDIF //load window OknoWykres OkGl_Akord.Title := "Obsługa produkcji (v."+WersjaProgramu+")" //WykresAktywnosci(aSerieAktywnosci) //public aqq := ES_SEVERITY StObsBledu := ErrorBlock({|e| ObslBledu(e,StObsBledu)}) ON KEY ALT+Q Of OKGl_Akord ACTION OKGl_Akord.Release //OkGl_Akord.Et_Pracownik.FontName := "LCDD" Activate window OKGl_Akord ZamknijBazy(TabObszarowPracownik) return *------------------------- /* function alert param napis msgbox(napis) return */ *-------------------------- function ZalogujPracownika local i, dMiesiac private LimitLogin := 3 private LZmianaHasla := .f. if user != NIL SprawdzKodPracownika(.t.) endif //MsgBox(str(PrintLen("Marek Olszewski",12,"ARIAL CE"))) load window OKLogin center window OKLogin OKLogin.T_NrPrac.SetFocus ON KEY ESCAPE OF OKLogin ACTION ZakonczProgram() activate window OKLogin // odczytaj miesišce, w których pracownik miał aktywnoœć - do 12 m-cy do tyłu OkGL_Akord.C_Miesiac.DeleteAllItems select("aktywn") dMiesiac := bom(date()) dbseek(str(NRZalogowanegoPracownika,3)+dtos(dMiesiac)) if !found() // pierwsze logowanie w tym miesišcu addrec(0) replace; nrPrac with NrZalogowanegoPracownika,; miesiac with bom(date()) unlock endif aMcZadanaAktywnosc := array(12) aMcWykonanaAktywnosc := array(12) for i := 1 to 12 select("aktywn") dbseek(str(NRZalogowanegoPracownika,3)+dtos(dMiesiac)) if found() aMcWykonanaAktywnosc[i] := aktywn->({ Czas201, Czas301, Czas401, Czas501+Czas601, dtos(dMiesiac ) } ) else aMcWykonanaAktywnosc[i] := aktywn->({0,0,0,0, dtos(dMiesiac) } ) endif OkGL_Akord.C_Miesiac.AddItem(str(month(dMiesiac),2)+"/"+str(year(dMiesiac),4)) select("zadakt") DbSeek(dtos(dMiesiac),.t.) if !found() skip -1 if bof() // jeszcze nie funkcjonowało obliczanie aktywnoœci w tym okresie // ale przyjmuję następne wpisy endif endif aMcZadanaAktywnosc[i] := zadakt->({ Czas201, Czas301, Czas401, Czas501+Czas601, , dtos(dMiesiac) } ) dMiesiac := bom(dMiesiac-1) next i OKGL_Akord.C_Miesiac.Value := 1 WykresAktywnosci(.t.) lOtwarcieProgramu := .f. OKGL_Akord.SetFocus if prac->StrStart > 0 OKGl_Akord.Tab_1.Value := prac->StrStart endif return *----------------------- function LoginTest local cPole cPole := GetWindowText ( GetControlHandle ("T_NrPrac","OKLogin")) cPole := CharOnly("0123456789.",cPole) if "." $ cPole cPole := CharRem(".",cPole) SetProperty("OKLogin","T_NrPrac","Value", cPole) OKLogin.T_Haslo.SetFocus else SetProperty("OKLogin","T_NrPrac","Value", cPole) endif return function PassTest local cPole cPole := GetWindowText ( GetControlHandle ("T_Haslo","OKLogin")) if right(cPole,3) == "$%$" cPole := substr(cPole,1,len(cPole)-3) SetProperty("OKLogin","T_Haslo","Value", cPole) SprawdzKodPracownika() endif return *-------------------------- function InfoProgram //private cWersjaProgramu := "0.01" //MsgBox(str(PrintLen("Marek Olszewski",12,"ARIAL CE"))) load window OKInfo center window OKInfo OKInfo.L_Wersja.Value := WersjaProgramu activate window OKInfo return *-------------------------- function SprawdzKodPracownika param ZLiniiPolecen local nNrPrac, cHaslo if ZliniiPolecen = NIL ZLiniiPolecen := .f. endif if ZLiniiPolecen nNrPrac := val(user) cHaslo := pass lZmianaHasla := .f. else if empty(GetWindowText ( GetControlHandle ("T_NrPrac","OKLogin"))) //OKLogin.T_NrPrac.Value) MsgBox("Niepoprawny kod pracownika!!!") OKLogin.T_NrPrac.SetFocus return endif nNrPrac := val(OKLogin.T_NrPrac.Value) cHaslo := OKLogin.T_Haslo.Value endif Select("prac") if !DBSeek(nNrPrac) MsgBox("Niepoprawny kod pracownika!!!") if !ZliniiPolecen OKLogin.T_NrPrac.SetFocus endif return endif if prac->Nieaktywny MsgBox("Ten pracownik został zablokowany!!!") if !ZliniiPolecen OKLogin.T_NrPrac.SetFocus endif return endif if !lizi(padr(cHaslo,100), nNrPrac+317) == prac->PassWord MsgBox("Błędne hasło!!!") if --LimitLogin == 0 ZakonczProgram() endif if !ZliniiPolecen OKLogin.T_Haslo.SetFocus endif return endif if lZmianaHasla if OKLogin.T_NoweHaslo.Value == OKLogin.T_PowtorzNoweHaslo.Value if !empty(OKLogin.T_NoweHaslo.Value) prac->(Reclock(0)) reclock(0) replace ; password with lizi(padr(OKLogin.T_NoweHaslo.Value,100), val(OKLogin.T_NrPrac.Value)+317) unlock MsgBox("Pomyœlnie zmieniono hasło!") else MsgBox("Hasło pozostawiono bez zmian!") endif else MsgBox("Podane hasła nie zgadzajš się!!! Pozostawiono bez zmiany") endif endif NrZalogowanegoPracownika := nNrPrac NazwiskoZalogowanegoPracownika := alltrim(prac->Nazwisko) OKGL_Akord.ET_Pracownik.Value := "zalogowany jako: "+N2C(NrZalogowanegoPracownika,3)+" "+NazwiskoZalogowanegoPracownika OKGL_Akord.ET_Pracownik.FontColor := {80,130, 30} //WykresAktywnosci(aSerieAktywnosci) // wczytanie uprawnień select("uprprac") DBSeek(str(NrZalogowanegoPracownika,3),.t.) if uprprac->NrPrac <> NrZalogowanegoPracownika MsgBox("Pracownik nie ma zdefiniowanych uprawnień! Logowanie odrzucone!") return endif for i:= 1 to len(AUprawnienia) if DBSeek(str(NrZalogowanegoPracownika,3)+AUprawnienia[i,1]) AUprawnienia[i,3] := uprprac->upr else // uzupełnienie uprawnień o wart. domyslne addrec(0) replace; nrprac with NrZalogowanegoPracownika ,; id_upr with AUprawnienia[i,1] ,; upr with AUprawnienia[i,4] unlock endif next i if !ZLiniiPolecen OKLogin.Release endif return *-------------------------- function ZakonczProgram close databases OKLogin.Release OKGl_Akord.Release return *-------------------------- function UstalZmienHaslo lZmianaHasla := OKLogin.CH_ZmienHaslo.Value OKLogin.L_Haslo1.Visible := lZmianaHasla OKLogin.L_Haslo2.Visible := lZmianaHasla OKLogin.T_NoweHaslo.Visible := lZmianaHasla OKLogin.T_PowtorzNoweHaslo.Visible := lZmianaHasla if lZmianaHasla OKLogin.T_NoweHaslo.Value := "" OKLogin.T_PowtorzNoweHaslo.Value := "" endif return function ZamknijOkLogin if NrZalogowanegoPracownika < 0 ZakonczProgram() endif return function ZmianaMenuGlowne checkgraph() if OKGL_Akord.Tab_1.Value == 3 if ZablokujZmianeStrony OKGL_Akord.Tab_1.Value := 3 return endif OKGL_Akord.L_StatusEksportu.Value := "" OkGL_Akord.Raport.Visible := .f. endif return *--------------------------- function NowaWersja local cWersja := "", lZainstalowac := .f., cWersjaTXT := "" if !DownloadFromWWW("http://www.molsystemy.pl/kern/akord_wersja.txt",Kat_Roboczy+"akord_wersja.txt", .t.) MsgBox("Błšd w połšczeniu z internetem") return endif cWersjaTXT := Memoread(Kat_Roboczy+"akord_wersja.txt") cWersja := Memoline(cWersjaTXT) if cWersja > WersjaProgramu load window OknoNowaWersja center window OknoNowaWersja OknoNowaWersja.E_INFO.Value := cWersjatxt ON KEY ESCAPE OF OknoNowaWersja ACTION OknoNowaWersja.Release activate window OknoNowaWersja else lZainstalowac := .f. //OknoNowaWersja := NIL MsgBox("Brak dostępnych aktualizacji...") endif return *------------------------ function ZainstalujNowaWersje local lOdpSerwera WAIT WINDOW "Trwa pobieranie programu instalacyjnego. Proszę czekać..." NOWAIT lOdpSerwera := DownloadFromWWW("http://www.molsystemy.pl/kern/akord_setup.exe",Kat_Roboczy+"akord_setup.exe", .t.) WAIT CLEAR if !lOdpSerwera MsgBox("Błšd w połšczeniu z internetem") else WAIT CLEAR MsgBox("Zamknij program na innych stacjach roboczych i naciœnij OK aby rozpoczšć instalację") execute file Kat_Roboczy+"akord_setup.exe" okgl_akord.release endif return *------------------------ #IFDEF WYKRESY_PROGRESS_BAR function WykresAktywnosci param lZaBiezacyMiesiac local aEtykiety, sel, aAktyw, nMc if type("lZaBiezacyMiesiac") <> "L" lZaBiezacyMiesiac := .t. endif sel := select() if lZaBiezacyMiesiac select("aktywn") DBSeek(str(NrZalogowanegoPracownika,3)+dtos(bom(DATE()))) if FOUND() aWykonanaAktywnosc := { Czas201 , Czas301 , Czas401 , Czas501+Czas601 } else aWykonanaAktywnosc := {0,0,0,0} endif aMcWykonanaAktywnosc[1] := aWykonanaAktywnosc else nMc := OkGl_Akord.C_Miesiac.Value aWykonanaAktywnosc := aMcWykonanaAktywnosc[OkGl_Akord.C_Miesiac.Value] endif aAktyw := AMcZadanaAktywnosc[OKGL_Akord.C_Miesiac.Value] nZakres := 0 for i := 1 to 4 nZakres := max( nZakres, max(aWykonanaAktywnosc[i], aAktyw[i])) next i OkGL_Akord.Bar201.RangeMax := nZakres OkGL_Akord.Bar301.RangeMax := nZakres OkGL_Akord.Bar401.RangeMax := nZakres OkGL_Akord.Bar501.RangeMax := nZakres OkGL_Akord.Bar201Zad.RangeMax := nZakres OkGL_Akord.Bar301Zad.RangeMax := nZakres OkGL_Akord.Bar401Zad.RangeMax := nZakres OkGL_Akord.Bar501Zad.RangeMax := nZakres OkGL_Akord.Bar201Zad.Value := aAktyw[1] OkGL_Akord.Bar301Zad.Value := aAktyw[2] OkGL_Akord.Bar401Zad.Value := aAktyw[3] OkGL_Akord.Bar501Zad.Value := aAktyw[4] OkGL_Akord.Bar201.Value := aWykonanaAktywnosc[1] if aAktyw[1] < aWykonanaAktywnosc[1] OkGL_Akord.Bar201.ForeColor := {0,128,0} OkGl_Akord.L201.FontColor := {0,128,0} OkGl_Akord.L201Min.FontColor := {0,128,0} else OkGL_Akord.Bar201.ForeColor := {255,0,0} OkGl_Akord.L201.FontColor := {255,0,0} OkGl_Akord.L201Min.FontColor := {255,0,0} endif OkGL_Akord.Bar301.Value := aWykonanaAktywnosc[2] if aAktyw[2] < aWykonanaAktywnosc[2] OkGL_Akord.Bar301.ForeColor := {0,128,0} OkGl_Akord.L301.FontColor := {0,128,0} OkGl_Akord.L301Min.FontColor := {0,128,0} else OkGL_Akord.Bar301.ForeColor := {255,0,0} OkGl_Akord.L301.FontColor := {255,0,0} OkGl_Akord.L301Min.FontColor := {255,0,0} endif OkGL_Akord.Bar401.Value := aWykonanaAktywnosc[3] if aAktyw[3] < aWykonanaAktywnosc[3] OkGL_Akord.Bar401.ForeColor := {0,128,0} OkGl_Akord.L401.FontColor := {0,128,0} OkGl_Akord.L401Min.FontColor := {0,128,0} else OkGL_Akord.Bar401.ForeColor := {255,0,0} OkGl_Akord.L401.FontColor := {255,0,0} OkGl_Akord.L401Min.FontColor := {255,0,0} endif OkGL_Akord.Bar501.Value := aWykonanaAktywnosc[4] if aAktyw[4] < aWykonanaAktywnosc[4] OkGL_Akord.Bar501.ForeColor := {0,128,0} OkGl_Akord.L501.FontColor := {0,128,0} OkGl_Akord.L501Min.FontColor := {0,128,0} else OkGL_Akord.Bar501.ForeColor := {255,0,0} OkGl_Akord.L501.FontColor := {255,0,0} OkGl_Akord.L501Min.FontColor := {255,0,0} endif OkGL_Akord.Bar201.Refresh OkGL_Akord.Bar301.Refresh OkGL_Akord.Bar401.Refresh OkGL_Akord.Bar501.Refresh OkGL_Akord.Bar201Zad.Refresh OkGL_Akord.Bar301Zad.Refresh OkGL_Akord.Bar401Zad.Refresh OkGL_Akord.Bar501Zad.Refresh OkGl_Akord.L201Min.Value := str(aWykonanaAktywnosc[1],5) OkGl_Akord.L301Min.Value := str(aWykonanaAktywnosc[2],5) OkGl_Akord.L401Min.Value := str(aWykonanaAktywnosc[3],5) OkGl_Akord.L501Min.Value := str(aWykonanaAktywnosc[4],5) OkGl_Akord.L201.Value := str(aWykonanaAktywnosc[1]/465,5,2) OkGl_Akord.L301.Value := str(aWykonanaAktywnosc[2]/465,5,2) OkGl_Akord.L401.Value := str(aWykonanaAktywnosc[3]/465,5,2) OkGl_Akord.L501.Value := str(aWykonanaAktywnosc[4]/465,5,2) OkGl_Akord.L201Zad.VALUE := str(aAktyw[1]/465,5,2) OkGl_Akord.L301Zad.VALUE := str(aAktyw[2]/465,5,2) OkGl_Akord.L401Zad.VALUE := str(aAktyw[3]/465,5,2) OkGl_Akord.L501Zad.VALUE := str(aAktyw[4]/465,5,2) OkGl_Akord.L201ZadMin.VALUE := str(aAktyw[1],5) OkGl_Akord.L301ZadMin.VALUE := str(aAktyw[2],5) OkGl_Akord.L401ZadMin.VALUE := str(aAktyw[3],5) OkGl_Akord.L501ZadMin.VALUE := str(aAktyw[4],5) select(sel) return #ENDIF *----------------------- #IFNDEF WYKRESY_PROGRESS_BAR function WykresAktywnosci param lZaBiezacyMiesiac local aEtykiety, sel, aAktyw, nMc, aKolory altd() aKolory := array(4) if type("lZaBiezacyMiesiac") <> "L" lZaBiezacyMiesiac := .t. endif sel := select() if lZaBiezacyMiesiac select("aktywn") DBSeek(str(NrZalogowanegoPracownika,3)+dtos(bom(DATE()))) if FOUND() aWykonanaAktywnosc := { Czas201 , Czas301 , Czas401 , Czas501+Czas601 } else aWykonanaAktywnosc := {0,0,0,0} endif aMcWykonanaAktywnosc[1] := aWykonanaAktywnosc else nMc := OkGl_Akord.C_Miesiac.Value aWykonanaAktywnosc := aMcWykonanaAktywnosc[OkGl_Akord.C_Miesiac.Value] endif aAktyw := AMcZadanaAktywnosc[OKGL_Akord.C_Miesiac.Value] nZakres := 0 for i := 1 to 4 nZakres := max( nZakres, max(aWykonanaAktywnosc[i], aAktyw[i])) next i /* OkGL_Akord.Bar201.RangeMax := nZakres OkGL_Akord.Bar301.RangeMax := nZakres OkGL_Akord.Bar401.RangeMax := nZakres OkGL_Akord.Bar501.RangeMax := nZakres OkGL_Akord.Bar201Zad.RangeMax := nZakres OkGL_Akord.Bar301Zad.RangeMax := nZakres OkGL_Akord.Bar401Zad.RangeMax := nZakres OkGL_Akord.Bar501Zad.RangeMax := nZakres OkGL_Akord.Bar201Zad.Value := aAktyw[1] OkGL_Akord.Bar301Zad.Value := aAktyw[2] OkGL_Akord.Bar401Zad.Value := aAktyw[3] OkGL_Akord.Bar501Zad.Value := aAktyw[4] */ //OkGL_Akord.Bar201.Value := aWykonanaAktywnosc[1] if aAktyw[1] < aWykonanaAktywnosc[1] aKolory[1] := {0,128,0} //OkGL_Akord.Bar201.ForeColor := {0,128,0} OkGl_Akord.L201.FontColor := {0,128,0} OkGl_Akord.L201Min.FontColor := {0,128,0} else aKolory[1] := {255,0,0} //OkGL_Akord.Bar201.ForeColor := {255,0,0} OkGl_Akord.L201.FontColor := {255,0,0} OkGl_Akord.L201Min.FontColor := {255,0,0} endif //OkGL_Akord.Bar301.Value := aWykonanaAktywnosc[2] if aAktyw[2] < aWykonanaAktywnosc[2] aKolory[2] := {0,128,0} //OkGL_Akord.Bar301.ForeColor := {0,128,0} OkGl_Akord.L301.FontColor := {0,128,0} OkGl_Akord.L301Min.FontColor := {0,128,0} else aKolory[2] := {255,0,0} //OkGL_Akord.Bar301.ForeColor := {255,0,0} OkGl_Akord.L301.FontColor := {255,0,0} OkGl_Akord.L301Min.FontColor := {255,0,0} endif //OkGL_Akord.Bar401.Value := aWykonanaAktywnosc[3] if aAktyw[3] < aWykonanaAktywnosc[3] aKolory[3] := {0,128,0} //OkGL_Akord.Bar401.ForeColor := {0,128,0} OkGl_Akord.L401.FontColor := {0,128,0} OkGl_Akord.L401Min.FontColor := {0,128,0} else aKolory[3] := {255,0,0} //OkGL_Akord.Bar401.ForeColor := {255,0,0} OkGl_Akord.L401.FontColor := {255,0,0} OkGl_Akord.L401Min.FontColor := {255,0,0} endif //OkGL_Akord.Bar501.Value := aWykonanaAktywnosc[4] if aAktyw[4] < aWykonanaAktywnosc[4] aKolory[4] := {0,128,0} //OkGL_Akord.Bar501.ForeColor := {0,128,0} OkGl_Akord.L501.FontColor := {0,128,0} OkGl_Akord.L501Min.FontColor := {0,128,0} else aKolory[4] := {255,0,0} //OkGL_Akord.Bar501.ForeColor := {255,0,0} OkGl_Akord.L501.FontColor := {255,0,0} OkGl_Akord.L501Min.FontColor := {255,0,0} endif /* OkGL_Akord.Bar201.Refresh OkGL_Akord.Bar301.Refresh OkGL_Akord.Bar401.Refresh OkGL_Akord.Bar501.Refresh OkGL_Akord.Bar201Zad.Refresh OkGL_Akord.Bar301Zad.Refresh OkGL_Akord.Bar401Zad.Refresh OkGL_Akord.Bar501Zad.Refresh */ OkGl_Akord.L201Min.Value := str(aWykonanaAktywnosc[1],5) OkGl_Akord.L301Min.Value := str(aWykonanaAktywnosc[2],5) OkGl_Akord.L401Min.Value := str(aWykonanaAktywnosc[3],5) OkGl_Akord.L501Min.Value := str(aWykonanaAktywnosc[4],5) OkGl_Akord.L201.Value := str(aWykonanaAktywnosc[1]/465,5,2) OkGl_Akord.L301.Value := str(aWykonanaAktywnosc[2]/465,5,2) OkGl_Akord.L401.Value := str(aWykonanaAktywnosc[3]/465,5,2) OkGl_Akord.L501.Value := str(aWykonanaAktywnosc[4]/465,5,2) OkGl_Akord.L201Zad.VALUE := str(aAktyw[1]/465,5,2) OkGl_Akord.L301Zad.VALUE := str(aAktyw[2]/465,5,2) OkGl_Akord.L401Zad.VALUE := str(aAktyw[3]/465,5,2) OkGl_Akord.L501Zad.VALUE := str(aAktyw[4]/465,5,2) OkGl_Akord.L201ZadMin.VALUE := str(aAktyw[1],5) OkGl_Akord.L301ZadMin.VALUE := str(aAktyw[2],5) OkGl_Akord.L401ZadMin.VALUE := str(aAktyw[3],5) OkGl_Akord.L501ZadMin.VALUE := str(aAktyw[4],5) // wykresy zadanej aktywnoœci custom_progress_bar("OKGl_Akord",175,330,20,180, {0,128,255}, aAktyw[1], nZakres) custom_progress_bar("OKGl_Akord",175,420,20,180, {0,128,255}, aAktyw[2], nZakres) custom_progress_bar("OKGl_Akord",175,510,20,180, {0,128,255}, aAktyw[3], nZakres) custom_progress_bar("OKGl_Akord",175,600,20,180, {0,128,255}, aAktyw[4], nZakres) // wykresy OSIĽGNIĘTEJ aktywnoœci custom_progress_bar("OKGl_Akord",175,370,20,180, aKolory[1], aWykonanaAktywnosc[1], nZakres) custom_progress_bar("OKGl_Akord",175,460,20,180, aKolory[2], aWykonanaAktywnosc[2], nZakres) custom_progress_bar("OKGl_Akord",175,550,20,180, aKolory[3], aWykonanaAktywnosc[3], nZakres) custom_progress_bar("OKGl_Akord",175,640,20,180, aKolory[4], aWykonanaAktywnosc[4], nZakres) select(sel) return *----------------------- #ENDIF function checkgraph if OKGl_Akord.Tab_1.value == 1 WykresAktywnosci(.f.) else erase window OKGl_Akord endif return nil *------------- #IFNDEF WYKRESY_PROGRESS_BAR function custom_progress_bar(cWindowName,nRow,nCol,nWidth,nHeight,aColor,nValue,nMax) local nStartRow, nStartCol, nFinishRow, nFinishCol := 0 // borders DRAW RECTANGLE IN WINDOW &cWindowName AT nRow,nCol TO nRow+nHeight,nCol+nWidth PENCOLOR {255,255,255} FILLCOLOR {255,255,255} DRAW LINE IN WINDOW &cWindowName At nRow,nCol to nRow+nHeight,nCol PENCOLOR {80,80,80} PENWIDTH 1 DRAW LINE IN WINDOW &cWindowName At nRow,nCol to nRow,nCol+nWidth PENCOLOR {80,80,80} PENWIDTH 1 //pionowy prawy DRAW LINE IN WINDOW &cWindowName At nRow,nCol+nWidth+1 to nRow+nHeight,nCol+nWidth+1 PENCOLOR {40,40,40} PENWIDTH 1 // poziomy dolny DRAW LINE IN WINDOW &cWindowName At nRow+nHeight,nCol to nRow+nHeight,nCol+nWidth+2 PENCOLOR {40,40,40} PENWIDTH 1 // progress bar if nWidth > nHeight // Horizontal Progress Bar nStartRow := nRow + 1 nStartCol := nCol + 1 nFinishRow := nRow + nHeight - 1 nFinishCol := nCol + 1 + ((nWidth - 2) * nValue / nMax) else // Vertical Progress Bar nStartRow := nRow + nHeight - 1 nStartCol := nCol + 1 nFinishRow := nStartRow - ((nHeight - 2) * nValue / nMax) nFinishCol := nCol + nWidth - 1 endif DRAW RECTANGLE IN WINDOW &cWindowName AT nStartRow,nStartCol TO nFinishRow,nFinishCol PENCOLOR aColor FILLCOLOR aColor return nil #ENDIF #IFDEF WYKRESY_PROGRESS_BAR *#include "DefinicjeWykresow.prg" #ENDIF *--------------------------------------------------------- static function ObslBledu(ObiektBlad,StObsBledu) local wybor, NazwaKart := "", cTrescWiadomosci altd() if ObiektBlad:GenCode == 20 .or. ObiektBlad:GenCode == 21 if !empty(ObiektBlad:OsCode) if ObiektBlad:OsCode == 3 * brak kartoteki NazwaKart := ObiektBlad:FileName NazwaKart := substr(NazwaKart,1,rat(NazwaKart,"\")-1) if DirMake(NazwaKart) = 0 ObiektBlad:CanRetry := .t. ObiektBlad:CanDefault := .t. ObiektBlad:CanSubstitute := .t. return(ObiektBlad) endif endif endif endif if ObiektBlad:GenCode == 25 * problemy z drukarkĽ do while .t. wybor := Alert("Problemy z drukarkĽ - wˆĽcz ON-LINE lub zasilanie",; {"Pon˘w pr˘bŠ","Bez wydruku"}) do case case wybor == 1 if IsPrinter() * set device to print ObiektBlad:CanRetry := .t. ObiektBlad:CanDefault := .t. ObiektBlad:CanSubstitute := .t. return(ObiektBlad) endif case wybor == 2 break otherwise ObiektBlad:CanRetry := .f. ObiektBlad:description := "BˆĽd drukarki" exit endcase enddo elseif ObiektBlad:GenCode == 32 break endif cTrescWiadomosci := ZapiszBlad(.t.,ObiektBlad) SendMail("Błšd w systemie AKORD", cTrescWiadomosci) * close databases return eval(StObsBledu,ObiektBlad) *--------------------------- static function ZapiszBlad(Czyblad,ObiektBlad) local i, plik_id, cOpisBledu if CzyBlad cOpisBledu := ErrorMessage(ObiektBlad) else cOpisBledu := ObiektBlad endif cOpisBledu += EOL i := 2 while ( !Empty(ProcName(i)) ) cOpisBledu += ProcName(i) + "(" + NTRIM(ProcLine(i)) + ")"+EOL i++ end BEGIN SEQUENCE if !file(sc_dost+'ERROR.MSG') plik_id = fcreate(sc_dost+'ERROR.MSG',0) else plik_id = fopen(sc_dost+'ERROR.MSG',2) endif fseek(plik_id,0,2) fwrite(plik_id, REplicate('Ä',20)+chr(13)+chr(10)) fwrite(plik_id, dtoc(date())+" "+time()+; " ob.>"+alias()+"<"+chr(13)+chr(10)) if CzyBlad if ( !Empty(ObiektBlad:osCode) ) cOpisBledu += " (Błšd DOS'a " + NTRIM(ObiektBlad:osCode) + ") " end endif fwrite(plik_id,cOpisBledu+EOL) fclose(plik_id) RECOVER END SEQUENCE return cOpisBledu *--------------------------- static func ErrorMessage(e) local cMessage := "" //start error message cMessage := if( e:severity > ES_WARNING, "Błšd ", "Ostrzeżenie " ) //add subsystem name if available if ( ValType(e:subsystem) == "C" ) cMessage += e:subsystem() else cMessage += "???" end // add subsystem's error code if available if ( ValType(e:subCode) == "N" ) cMessage += ("/" + NTRIM(e:subCode)) else cMessage += "/???" end // add error description if available if ( ValType(e:description) == "C" ) cMessage += (" " + e:description) end // add either filename or operation if ( !Empty(e:filename) ) cMessage += (": " + e:filename) elseif ( !Empty(e:operation) ) cMessage += (": " + e:operation) end return (cMessage) *--------------------------- function ntrim param nNumber return alltrim(str(nNumber)) *------------------- function AddFont(cFontName) local nRet := AddFontResourceEx( cFontName, FR_PRIVATE + FR_NOT_ENUM, 0 ) return NIL