Program pre spravu objednávok žalúzií.

Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
Category: Source in Pascal
zaluzie.pngProgram: Zaluzie.pasArchiv.pasDealer.pasFarba.pasFax.pasFilter.pasFormul.pasFyzic.pasHelp.pasKniznic.pasMiesto.pasMzdy.pasOption.pasPr_zal.pasRead_dbf.pasRedef.pasSdv.pasTlac.pasTrsek.pasZaluz.pasZostavy.pas
File exe: Zaluzie.exe
need: Zaluzie.zipHelp.datDealerDealer.$$$Fax.datKumuly.$$$Kumuly.frmKumuly.kumMeracMontazOption.dbfOption.frmOption.indPoradie.datVystup.txtZaluzie.dbfZaluzie.datZaluzie.frmZaluzie.indZaluzie.txtZostava.frm

Program bol vytvorený pre vnutorné potreby firmy KOMA pre spravu objednávok žalúzií.

Bližší popis jednotlivých funkcií:
F2 - Zalúzia
Slúži ako nosná časť celého tohto programu dajú sa v ňom zadávať informácie o objednávateľovi ako jeho MENO, ADRESA, PODLAŽIE.
Kvôli neskorším rozpisom je možné vyplniť (ŠTVRŤ) program sa potom bude týmto riadiť.
Ďalej informácie o tom kto bol dohadzovač (DEALER), kto odmeriaval žalúziu (MERAČ) a nakoniec mená až troch (MONTÁŽNIKOV).
Je možné ďalej vyplniť DATUM OBJEDNAVKY, s tým, že program okamžite prepočíta kedy uplyie doba 14 dní na vykonanie montáže (LEHOTA).
Ak je nám známa CENA žalúzie po je vyplnení okamžite vypočítava DOPLATOK. Po vyplnení ZALOHY je vypočítaný doplatok znova.
Pri vyplňovaní mzdových nákladov máme približný mzdový charakter pre jednotlivých zainteresovaných.
Žalúzie sa vypĺňajú intuitívne pričom ak nie je zadaná farba nie je možné vyplniť žalúziu ďalšiu.

Číselníky pre STVRT, DEALER, MERAC, MONTAZNIK, FARBA sú aktivované okamžite po stlačení klávesy ENTER. Potom si stačí vybrať potrebné a znova stlačiť ENTER. Ak však má užívateľ čísla v krvi stačí napísať priamo číslo program si už neako poradí sám.

F3 - DEALER, F5 - MERAC, F6 - MONTAZ, F4 - FARBA
Okno pre doplnenie číselníka dealerov (meračov, montážnikov farieb). Pohyb šipkami, ESC - koniec práce, DEL - označ dealera na zmazanie.

F4 - ULICA
Okno pre doplnenie číselníka ulíc. Ostatné ako u DEALER. Ak však stlacíte ENTER na položke vpravo objaví sa vám okno MESTO, kde si vyberiete do akého mesta potrí ulica. Aj v meste je ešte možné vybrať KRAJ. ( Upozorňujem, že názvy sú pracovné. Znamená, že ich použitie môže byť iné).
{ ZALUZIE.PAS               Copyright (c) TrSek alias Zdeno Sekerak }
{ Unit pre tlac textovej zostavy na tlaciaren LPT1 alebo FAX.       }
{                                                                   }
{ Datum:19.06.1995                            http://www.trsek.com  }
 
unit tlac;
interface
uses printer,dos,crt,kniznic,trsek;
type tzoz = record
     pred:pointer;
     text:string[140];
     zani:pointer;
     end;
 
function zarad(var zoz:tzoz;s:string):pointer;
function vyrad(var zoz:tzoz):pointer;
procedure view_text(subor_txt:string;lav_kraj,pismo,podkl:integer;prin:string);
 
implementation
 
 
function zarad(var zoz:tzoz;s:string):pointer;
var zoz2:^tzoz;
    jed,dva:pointer;
    size,size2:longint;
begin
 size:=MaxAvail;
 size2:=SizeOf(tzoz);
 if MaxAvail<2*SizeOf(tzoz) then begin
    hlaska('M lo pam"te tak sa ne>uduj, ze nevidĄç celŁ zostavu. ',-1);
    z_sound:=false;exit;end;
 getmem(zoz2,SizeOf(tzoz));
 if @zoz<>NIL then begin
    dva:=zoz.zani; jed:=@zoz; zoz.zani:=zoz2;
    zoz2^.pred:=@zoz; zoz2^.zani:=dva;
 
    if zoz2^.zani<>NIL then begin
       dva:=zoz2;
       zoz2:=zoz.zani;
       zoz2^.pred:=dva;
      end;
    end
    else begin
       zoz2^.pred:=NIL;
       zoz2^.zani:=NIL;
       end;
 zoz2^.text:=copy(s,1,80);
 zarad:=zoz2;
end;
 
function vyrad(var zoz:tzoz):pointer;
var jed,dva:pointer;
    zoz2:^tzoz;
    size2:longint;
begin
 jed:=zoz.pred;dva:=zoz.zani;
 if jed<>NIL then begin zoz2:=jed;zoz2^.zani:=dva;end;
 if dva<>NIL then begin zoz2:=dva;zoz2^.pred:=jed;end;
 size2:=MaxAvail;
 FreeMem(@zoz,SizeOf(zoz));
 size2:=MaxAvail;
 if jed<>NIL then vyrad:=jed
             else vyrad:=dva;
end;
 
procedure view_text(subor_txt:string;lav_kraj,pismo,podkl:integer;prin:string);
 
var f:text;
    lst:text;
    zoz:^tzoz;
    prvy,pom:pointer;
    s:string;
    y,i,err:integer;
    ch:char;
begin
 farba(podkl,pismo);
 okno(1,1,80,24,' Prezera> sŁboru '+subor_txt,' Pohyb-çĄpkami,PgDn,PgUp ESC-Koniec ENTER-Tla>',podkl);
 assign(f,subor_txt);
 {$I-}
 reset(f);
 {$I+}
 if IoResult<>0 then begin
    hlaska('SŁbor pre fax pr zdny resp. nexistuje.',0);
    exit;
    end;
                                      { Nacita subor FAX.TXT }
 GetMem(zoz,SizeOf(zoz^));
 prvy:=NIL;zoz^.pred:=NIL;zoz^.zani:=NIL;zoz^.text:='';
 repeat
  readln(f,s);
  zoz:=zarad(zoz^,copy(s,1,77));
  if prvy=NIL then prvy:=zoz;
 until (eof(f));
 close(f);
 
 zoz:=prvy;i:=1;                        { Vykresli ho na obrazovku }
 while ( (zoz<>NIL) and (i<23) ) do begin
     writeln;
     write(zoz^.text);
     i:=i+1;zoz:=zoz^.zani;
     end;
                                        { No a hybe sipkami }
 zoz:=prvy;
 repeat
  twindow(2,2,78,23);
  KurzorZap(false);
  ch:=readkey;
  if ch=#0 then begin
     ch:=readkey;
 
     if ch=#73 then                         { PgUp }
        for y:=1 to 23 do begin
        if zoz^.pred<>NIL then begin
           zoz:=zoz^.pred;
           gotoxy(1,1);insline;
           write(zoz^.text);
          end;
        end;
 
     if ch=#81 then                         { PgDn }
        for y:=1 to 23 do begin
        i:=1;pom:=zoz;
        while (( zoz^.zani<>NIL) and (i<23)) do begin
                 i:=i+1;zoz:=zoz^.zani;
                 end;
        if (i=23) then begin
           gotoxy(1,1);delline;
           gotoxy(1,22);write(copy(zoz^.text,1,76));
           zoz:=pom;zoz:=zoz^.zani;
         end;
        end;
 
     if ch=#72 then begin                   { sipka hore }
        if zoz^.pred<>NIL then begin
           zoz:=zoz^.pred;
           gotoxy(1,1);insline;
           write(zoz^.text);
        end;
       end;
 
     if ch=#80 then begin                    { sipka dole }
        i:=1;pom:=zoz;
        while (( zoz^.zani<>NIL) and (i<23)) do begin
                 i:=i+1;zoz:=zoz^.zani;
                 end;
        if (i=23) then begin
           gotoxy(1,1);delline;
           gotoxy(1,22);write(copy(zoz^.text,1,76));
           zoz:=pom;zoz:=zoz^.zani;
        end
       else zoz:=pom;
      end;
 
     end;
 
   if ch=#13 then begin                 { Vytlaci ho na printer }
      hlaska('Tla>Ąm sŁbor '+subor_txt+' . ChvĄ-u po>kaj .',-1);
      assign(f,subor_txt);
      reset(f);
      assign(lst,prin);
      rewrite(lst);
      repeat
       readln(f,s);
       repeat
        {$I-}
        writeln(lst,nothing(lav_kraj)+s);
        err:=IoResult;
        {$I+}
        if err<>0 then begin
           hlaska('Chyba tla>iarne, alebo tla>iaren nepripraven . ENTER-znova ESC-koniec',0);
           ch:=readkey;
           end;
       until ( (err=0) or (ch=#27) )
      until ( eof(f) or (ch=#27) );
      ch:=#13;
      close(f);close(lst);
      hlaska('',-2);
      end;
 until (ch=#27);                        { Uz ho to prestalo bavit }
 
 zoz:=prvy;                             { Vycisti po sebe pamat }
 repeat
  zoz:=vyrad(zoz^);
 until (zoz=NIL);
 hlaska('',-2);
end;
 
end.