unit spr_t;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Spin, ExtCtrls,
  SPR_DELPH;

type
  TOknoTextow = class(TForm)
    GrupaTeksty: TGroupBox;
    CzyEfekty: TCheckBox;
    WyborTypuTextu: TRadioGroup;
    WyborKierunku: TRadioGroup;
    WyborKasuj: TRadioGroup;
    LiniaTextu1: TComboBox;
    LiniaTextu2: TComboBox;
    LiniaTextu3: TComboBox;
    LiniaTextu4: TComboBox;
    LiniaTextu5: TComboBox;
    LiniaTextu6: TComboBox;
    LiniaTextu7: TComboBox;
    LiniaTextu8: TComboBox;
    LiniaTextu9: TComboBox;
    LiniaTextu10: TComboBox;
    IleSekund2: TSpinEdit;
    IleSekund3: TSpinEdit;
    IleSekund4: TSpinEdit;
    IleSekund5: TSpinEdit;
    IleSekund1: TSpinEdit;
    StaticText1: TStaticText;
    StaticText2: TStaticText;
    OpisLinii1: TLabel;
    OpisLinii2: TLabel;
    OpisLinii3: TLabel;
    OpisLinii4: TLabel;
    OpisLinii5: TLabel;
    OpisLinii6: TLabel;
    OpisLinii7: TLabel;
    OpisLinii8: TLabel;
    OpisLinii9: TLabel;
    OpisLinii10: TLabel;
    KlawiszZapisz: TButton;
    ZaznaczZapisz1: TCheckBox;
    ZaznaczZapisz2: TCheckBox;
    ZaznaczZapisz3: TCheckBox;
    ZaznaczZapisz4: TCheckBox;
    ZaznaczZapisz5: TCheckBox;
    StaticText3: TStaticText;
    ZaznaczZapisz6: TCheckBox;
    ZaznaczZapisz7: TCheckBox;
    ZaznaczZapisz8: TCheckBox;
    ZaznaczZapisz9: TCheckBox;
    ZaznaczZapisz10: TCheckBox;
    IleSekund6: TSpinEdit;
    IleSekund7: TSpinEdit;
    IleSekund8: TSpinEdit;
    IleSekund9: TSpinEdit;
    IleSekund10: TSpinEdit;
    procedure WlaczAtrybuty(Sender: TObject);
    procedure ZapiszTexty(Sender: TObject);
    procedure WyborTypuTextuClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

function StringNaLatin2(Napis : string) : string;

var
  OknoTextow: TOknoTextow;

implementation

{$R *.DFM}

uses spr_spr;

{******************************************************************************}

function NaLatin2(Znak : byte) : byte;
begin
  case Znak of
//male polskie litery
    185 : NaLatin2:=165;
    230 : NaLatin2:=134;
    234 : NaLatin2:=169;
    179 : NaLatin2:=136;
    241 : NaLatin2:=228;
    243 : NaLatin2:=162;
    156 : NaLatin2:=152;
    159 : NaLatin2:=171;
    191 : NaLatin2:=190;
//duze polskie litery
    165 : NaLatin2:=164;
    198 : NaLatin2:=143;
    202 : NaLatin2:=168;
    163 : NaLatin2:=157;
    209 : NaLatin2:=227;
    211 : NaLatin2:=224;
    140 : NaLatin2:=151;
    143 : NaLatin2:=141;
    175 : NaLatin2:=189
  else
    NaLatin2 := Znak;
  end;
end;
{******************************************************************************}
function ZLatin2(Znak : byte) : byte;
begin
   case Znak of
//male polskie litery
    165 : ZLatin2:=185;
    134 : ZLatin2:=230;
    169 : ZLatin2:=234;
    136 : ZLatin2:=179;
    228 : ZLatin2:=241;
    162 : ZLatin2:=243;
    152 : ZLatin2:=156;
    171 : ZLatin2:=159;
    190 : ZLatin2:=191;
//duze polskie litery
    164 : ZLatin2:=165;
    143 : ZLatin2:=198;
    168 : ZLatin2:=202;
    157 : ZLatin2:=163;
    227 : ZLatin2:=209;
    224 : ZLatin2:=211;
    151 : ZLatin2:=140;
    141 : ZLatin2:=143;
    189 : ZLatin2:=175
   else
    ZLatin2 := Znak;
   end;
end;
{******************************************************************************}
function StringNaLatin2(Napis : string) : string;
var
 Tmp : string;
 Licznik : byte;
begin
 Tmp:='';
 for Licznik:=1 to length(Napis) do
  Tmp:=Tmp+chr(NaLatin2(ord(Napis[Licznik])));
 StringNaLatin2:=Tmp;
end;
{******************************************************************************}
function StringZLatin2(Napis : string) : string;
var
 Tmp : string;
 Licznik : byte;
begin
 Tmp:='';
 for Licznik:=1 to length(Napis) do
  Tmp:=Tmp+chr(ZLatin2(ord(Napis[Licznik])));
 StringZLatin2:=Tmp;
end;

{******************************************************************************}

procedure TOknoTextow.WlaczAtrybuty(Sender: TObject);
begin
  if (CzyEfekty.Checked) then
    begin
      WyborKierunku.Enabled := True;
      WyborKasuj.Enabled := True;
    end
  else
    begin
      WyborKierunku.ItemIndex := -1;
      WyborKasuj.ItemIndex := -1;
      WyborKierunku.Enabled := False;
      WyborKasuj.Enabled := False;
    end;
end;

{******************************************************************************}

procedure TOknoTextow.ZapiszTexty(Sender: TObject);
type
  TypTekstNaWyswietlacz   = record
                              Tekst              : string;
                              CzasWyswietlania   : byte;
                              SposobWyswietlania : byte;
                            end;
const
  AlokowacZwalniacPamiec  = true;

var
  NapisPomocniczy : string;
  TekstyNaWyswietlacz     : array [0..9] of TypTekstNaWyswietlacz;
  KtoreTekstyZapisac      : array [0..9] of boolean;
  PCharAdresIP            : PChar;
  PCharTekstNaWyswietlacz : PChar;
  NrTekstu                : byte;
  BajtPomocniczy          : byte;

begin
  NapisPomocniczy := '';
  if (WyborTypuTextu.ItemIndex = 0) then
    NapisPomocniczy := 'reklamowe'
  else
    NapisPomocniczy := 'stałe';

  with (OknoGlowne.EkranMemo) do
    begin
      Lines.Delete(Lines.Count-1);
      Lines.Add('Zapisuję teksty '+NapisPomocniczy+' do sprawdzarki nr '+OknoGlowne.LiniaAdresuSprawdzarki.Text+'...');
    end;

  for NrTekstu := 0 to 9 do
    begin
      TekstyNaWyswietlacz[NrTekstu].Tekst              := '';
      TekstyNaWyswietlacz[NrTekstu].CzasWyswietlania   := 0;
      TekstyNaWyswietlacz[NrTekstu].SposobWyswietlania := 0;
      KtoreTekstyZapisac[NrTekstu] := False;
    end;
  BajtPomocniczy := 0;

  if (WyborTypuTextu.ItemIndex <> 1) then
    begin
      for NrTekstu := 0 to 9 do
        begin
        case NrTekstu of
          0: begin
              if (WyborKierunku.ItemIndex = 0) and (WyborKasuj.ItemIndex = 0) then
                BajtPomocniczy := 1
              else
                if (WyborKierunku.ItemIndex = 1) and (WyborKasuj.ItemIndex = 0) then
                  BajtPomocniczy := 4
                else
                  if (WyborKierunku.ItemIndex = 0) and (WyborKasuj.ItemIndex = 1) then
                    BajtPomocniczy := 3
                  else
                    if (WyborKierunku.ItemIndex = 1) and (WyborKasuj.ItemIndex = 1) then
                      BajtPomocniczy := 2;

              if (ZaznaczZapisz1.Checked) then
                begin
                  KtoreTekstyZapisac[NrTekstu] := True;
                  TekstyNaWyswietlacz[NrTekstu].Tekst := LiniaTextu1.Text;
                  TekstyNaWyswietlacz[NrTekstu].CzasWyswietlania   := IleSekund1.Value;
                  if (CzyEfekty.Checked) then
                    begin
                      TekstyNaWyswietlacz[NrTekstu].SposobWyswietlania := BajtPomocniczy;
                    end;
                end;
             end;
          1: begin
              if (ZaznaczZapisz2.Checked) then
                begin
                  KtoreTekstyZapisac[NrTekstu] := True;
                  TekstyNaWyswietlacz[NrTekstu].Tekst := LiniaTextu2.Text;
                  TekstyNaWyswietlacz[NrTekstu].CzasWyswietlania   := IleSekund2.Value;
                  if (CzyEfekty.Checked) then
                    begin
                      TekstyNaWyswietlacz[NrTekstu].SposobWyswietlania := BajtPomocniczy;
                    end;
                end;
             end;
          2: begin
              if (ZaznaczZapisz3.Checked) then
                begin
                  KtoreTekstyZapisac[NrTekstu] := True;
                  TekstyNaWyswietlacz[NrTekstu].Tekst := LiniaTextu3.Text;
                  TekstyNaWyswietlacz[NrTekstu].CzasWyswietlania   := IleSekund3.Value;
                  if (CzyEfekty.Checked) then
                    begin
                      TekstyNaWyswietlacz[NrTekstu].SposobWyswietlania := BajtPomocniczy;
                    end;
                end;
             end;
          3: begin
              if (ZaznaczZapisz4.Checked) then
                begin
                  KtoreTekstyZapisac[NrTekstu] := True;
                  TekstyNaWyswietlacz[NrTekstu].Tekst := LiniaTextu4.Text;
                  TekstyNaWyswietlacz[NrTekstu].CzasWyswietlania   := IleSekund4.Value;
                  if (CzyEfekty.Checked) then
                    begin
                      TekstyNaWyswietlacz[NrTekstu].SposobWyswietlania := BajtPomocniczy;
                    end;
                end;
             end;
          4: begin
              if (ZaznaczZapisz5.Checked) then
                begin
                  KtoreTekstyZapisac[NrTekstu] := True;
                  TekstyNaWyswietlacz[NrTekstu].Tekst := LiniaTextu5.Text;
                  TekstyNaWyswietlacz[NrTekstu].CzasWyswietlania   := IleSekund5.Value;
                  if (CzyEfekty.Checked) then
                    begin
                      TekstyNaWyswietlacz[NrTekstu].SposobWyswietlania := BajtPomocniczy;
                    end;
                end;
             end;
          5: begin
              if (ZaznaczZapisz6.Checked) then
                begin
                  KtoreTekstyZapisac[NrTekstu] := True;
                  TekstyNaWyswietlacz[NrTekstu].Tekst := LiniaTextu6.Text;
                  TekstyNaWyswietlacz[NrTekstu].CzasWyswietlania   := IleSekund6.Value;
                  if (CzyEfekty.Checked) then
                    begin
                      TekstyNaWyswietlacz[NrTekstu].SposobWyswietlania := BajtPomocniczy;
                    end;
                end;
             end;
          6: begin
              if (ZaznaczZapisz7.Checked) then
                begin
                  KtoreTekstyZapisac[NrTekstu] := True;
                  TekstyNaWyswietlacz[NrTekstu].Tekst := LiniaTextu7.Text;
                  TekstyNaWyswietlacz[NrTekstu].CzasWyswietlania   := IleSekund7.Value;
                  if (CzyEfekty.Checked) then
                    begin
                      TekstyNaWyswietlacz[NrTekstu].SposobWyswietlania := BajtPomocniczy;
                    end;
                end;
             end;
          7: begin
              if (ZaznaczZapisz8.Checked) then
                begin
                  KtoreTekstyZapisac[NrTekstu] := True;
                  TekstyNaWyswietlacz[NrTekstu].Tekst := LiniaTextu8.Text;
                  TekstyNaWyswietlacz[NrTekstu].CzasWyswietlania   := IleSekund8.Value;
                  if (CzyEfekty.Checked) then
                    begin
                      TekstyNaWyswietlacz[NrTekstu].SposobWyswietlania := BajtPomocniczy;
                    end;
                end;
             end;
          8: begin
              if (ZaznaczZapisz9.Checked) then
                begin
                  KtoreTekstyZapisac[NrTekstu] := True;
                  TekstyNaWyswietlacz[NrTekstu].Tekst := LiniaTextu9.Text;
                  TekstyNaWyswietlacz[NrTekstu].CzasWyswietlania   := IleSekund9.Value;
                  if (CzyEfekty.Checked) then
                    begin
                      TekstyNaWyswietlacz[NrTekstu].SposobWyswietlania := BajtPomocniczy;
                    end;
                end;
             end;
          9: begin
              if (ZaznaczZapisz10.Checked) then
                begin
                  KtoreTekstyZapisac[NrTekstu] := True;
                  TekstyNaWyswietlacz[NrTekstu].Tekst := LiniaTextu10.Text;
                  TekstyNaWyswietlacz[NrTekstu].CzasWyswietlania   := IleSekund10.Value;
                  if (CzyEfekty.Checked) then
                    begin
                      TekstyNaWyswietlacz[NrTekstu].SposobWyswietlania := BajtPomocniczy;
                    end;
                end;
             end;
        end;
        TekstyNaWyswietlacz[NrTekstu].Tekst := StringNaLatin2(TekstyNaWyswietlacz[NrTekstu].Tekst);
        OknoGlowne.CentrowanieNapisu(TekstyNaWyswietlacz[NrTekstu].Tekst, 40);
      end;

      for NrTekstu := 0 to 9 do
        begin
          if (KtoreTekstyZapisac[NrTekstu]) then
            begin
              PCharZeStringa(OknoGlowne.LiniaAdresuSprawdzarki.Text   ,PCharAdresIP   ,AlokowacZwalniacPamiec);
              PCharZeStringa(TekstyNaWyswietlacz[NrTekstu].Tekst, PCharTekstNaWyswietlacz, AlokowacZwalniacPamiec);

              WpiszTekstReklamowy(PCharAdresIP, NrTekstu, PCharTekstNaWyswietlacz, TekstyNaWyswietlacz[NrTekstu].CzasWyswietlania, TekstyNaWyswietlacz[NrTekstu].SposobWyswietlania);
              Sleep(50);
              StringZPChara(PCharAdresIP           , NapisPomocniczy, AlokowacZwalniacPamiec);
              StringZPChara(PCharTekstNaWyswietlacz, NapisPomocniczy, AlokowacZwalniacPamiec);
            end;
        end;
    end
  else
    begin
      for NrTekstu := 0 to 6 do
        begin
          case NrTekstu of
            0: begin
                 KtoreTekstyZapisac[NrTekstu] := False;
               end;
            1: begin
                 KtoreTekstyZapisac[NrTekstu] := False;
               end;
            2: begin
                if (ZaznaczZapisz3.Checked) then
                  begin
                    KtoreTekstyZapisac[NrTekstu] := True;
                    TekstyNaWyswietlacz[NrTekstu].Tekst := LiniaTextu3.Text;
                    TekstyNaWyswietlacz[NrTekstu].CzasWyswietlania   := 10;
                  end;
               end;
            3: begin
                if (ZaznaczZapisz5.Checked) then
                  begin
                    KtoreTekstyZapisac[NrTekstu] := True;
                    TekstyNaWyswietlacz[NrTekstu].Tekst := LiniaTextu5.Text;
                    TekstyNaWyswietlacz[NrTekstu].CzasWyswietlania   := 3;
                  end;
               end;
            4: begin
                if (ZaznaczZapisz6.Checked) then
                  begin
                    KtoreTekstyZapisac[NrTekstu] := True;
                    TekstyNaWyswietlacz[NrTekstu].Tekst := LiniaTextu6.Text;
                    TekstyNaWyswietlacz[NrTekstu].CzasWyswietlania   := 3;
                  end;
               end;
            5: begin
                if (ZaznaczZapisz7.Checked) then
                  begin
                    KtoreTekstyZapisac[NrTekstu] := True;
                    TekstyNaWyswietlacz[NrTekstu].Tekst := LiniaTextu7.Text;
                    TekstyNaWyswietlacz[NrTekstu].CzasWyswietlania   := 3;
                  end;
               end;
            6: begin
                if (ZaznaczZapisz8.Checked) then
                  begin
                    KtoreTekstyZapisac[NrTekstu] := True;
                    TekstyNaWyswietlacz[NrTekstu].Tekst := LiniaTextu8.Text;
                    TekstyNaWyswietlacz[NrTekstu].CzasWyswietlania   := 3;
                  end;
              end;
          end;
          TekstyNaWyswietlacz[NrTekstu].Tekst := StringNaLatin2(TekstyNaWyswietlacz[NrTekstu].Tekst);
          OknoGlowne.CentrowanieNapisu(TekstyNaWyswietlacz[NrTekstu].Tekst, 20);
        end;

      for NrTekstu := 0 to 6 do
        begin
          if (KtoreTekstyZapisac[NrTekstu]) then
            begin
              PCharZeStringa(OknoGlowne.LiniaAdresuSprawdzarki.Text                       , PCharAdresIP           , AlokowacZwalniacPamiec);
              PCharZeStringa(TekstyNaWyswietlacz[NrTekstu].Tekst, PCharTekstNaWyswietlacz, AlokowacZwalniacPamiec);

              WpiszTekstStaly(PCharAdresIP, NrTekstu, PCharTekstNaWyswietlacz, TekstyNaWyswietlacz[NrTekstu].CzasWyswietlania);
              Sleep(50);
              StringZPChara(PCharAdresIP           , NapisPomocniczy, AlokowacZwalniacPamiec);
              StringZPChara(PCharTekstNaWyswietlacz, NapisPomocniczy, AlokowacZwalniacPamiec);
            end;
        end;
    end;
end;

{******************************************************************************}

procedure TOknoTextow.WyborTypuTextuClick(Sender: TObject);
begin
  if (WyborTypuTextu.ItemIndex = 1) then
    begin
      CzyEfekty.Checked := False;
      CzyEfekty.Enabled := False;
      LiniaTextu1.Text := 'SPRAWDZARKA CEN';
      LiniaTextu2.Text := 'WERSJA PROGR. SPRx.xx';
      LiniaTextu3.Text := 'SZUKAM W BAZIE KODU';
      LiniaTextu4.Text := '';
      LiniaTextu5.Text := 'PRZYŁÓŻ KOD KRESKOWY';
      LiniaTextu6.Text := 'TOWARU POD CZYTNIK';
      LiniaTextu7.Text := 'SERWER USZKODZONY';
      LiniaTextu8.Text := '';
      LiniaTextu9.Text := '';
      LiniaTextu10.Text:= '';
      LiniaTextu1.Enabled  := False;
      LiniaTextu2.Enabled  := False;
      LiniaTextu4.Enabled  := False;
      LiniaTextu9.Enabled  := False;
      LiniaTextu10.Enabled  := False;
      OpisLinii1.Enabled := False;
      OpisLinii2.Enabled := False;
      OpisLinii4.Enabled := False;
      OpisLinii9.Enabled := False;
      OpisLinii10.Enabled := False;
      IleSekund1.Visible := False;
      IleSekund2.Visible := False;
      IleSekund3.Visible := False;
      IleSekund4.Visible := False;
      IleSekund5.Visible := False;
      IleSekund6.Visible := False;
      IleSekund7.Visible := False;
      IleSekund8.Visible := False;
      IleSekund9.Visible := False;
      IleSekund10.Visible := False;
      StaticText1.Visible := False;
      ZaznaczZapisz1.Checked := False;
      ZaznaczZapisz2.Checked := False;
      ZaznaczZapisz1.Enabled := False;
      ZaznaczZapisz2.Enabled := False;
      ZaznaczZapisz4.Enabled := False;
      ZaznaczZapisz9.Enabled := False;
      ZaznaczZapisz10.Enabled := False;
      LiniaTextu1.MaxLength := 20;
      LiniaTextu2.MaxLength := 20;
      LiniaTextu3.MaxLength := 20;
      LiniaTextu5.MaxLength := 20;
      LiniaTextu6.MaxLength := 20;
      LiniaTextu7.MaxLength := 20;
      LiniaTextu8.MaxLength := 20;
      OpisLinii1.Caption := 'Linia 1';
      OpisLinii2.Caption := 'Linia 2';
      OpisLinii3.Caption := 'Linia 1';
      OpisLinii4.Caption := 'Linia 2';
      OpisLinii5.Caption := 'Linia 1';
      OpisLinii6.Caption := 'Linia 2';
      OpisLinii7.Caption := 'Linia 1';
      OpisLinii8.Caption := 'Linia 2';
      OpisLinii9.Caption := 'Linia 1';
      OpisLinii10.Caption := 'Linia 2';

    end
  else
    begin
      CzyEfekty.Enabled := True;
      LiniaTextu1.Text := '';
      LiniaTextu2.Text := '';
      LiniaTextu3.Text := '';
      LiniaTextu5.Text := '';
      LiniaTextu6.Text := '';
      LiniaTextu7.Text := '';
      LiniaTextu8.Text := '';
      LiniaTextu1.Enabled  := True;
      LiniaTextu2.Enabled  := True;
      LiniaTextu4.Enabled  := True;
      LiniaTextu9.Enabled  := True;
      LiniaTextu10.Enabled  := True;
      OpisLinii1.Enabled := True;
      OpisLinii2.Enabled := True;
      OpisLinii4.Enabled := True;
      OpisLinii9.Enabled := True;
      OpisLinii10.Enabled := True;
      IleSekund1.Visible := True;
      IleSekund2.Visible := True;
      IleSekund3.Visible := True;
      IleSekund4.Visible := True;
      IleSekund5.Visible := True;
      IleSekund6.Visible := True;
      IleSekund7.Visible := True;
      IleSekund8.Visible := True;
      IleSekund9.Visible := True;
      IleSekund10.Visible := True;
      StaticText1.Visible := True;
      IleSekund1.Value := 0;
      IleSekund2.Value := 0;
      IleSekund3.Value := 0;
      IleSekund4.Value := 0;
      IleSekund5.Value := 0;
      IleSekund6.Value := 0;
      IleSekund7.Value := 0;
      IleSekund8.Value := 0;
      IleSekund9.Value := 0;
      IleSekund10.Value := 0;
      ZaznaczZapisz1.Checked := True;
      ZaznaczZapisz2.Checked := True;
      ZaznaczZapisz1.Enabled := True;
      ZaznaczZapisz2.Enabled := True;
      ZaznaczZapisz4.Enabled := True;
      ZaznaczZapisz9.Enabled := True;
      ZaznaczZapisz10.Enabled := True;
      LiniaTextu1.MaxLength := 40;
      LiniaTextu2.MaxLength := 40;
      LiniaTextu3.MaxLength := 40;
      LiniaTextu5.MaxLength := 40;
      LiniaTextu6.MaxLength := 40;
      LiniaTextu7.MaxLength := 40;
      LiniaTextu8.MaxLength := 40;
      OpisLinii1.Caption := 'Tekst 1';
      OpisLinii2.Caption := 'Tekst 2';
      OpisLinii3.Caption := 'Tekst 3';
      OpisLinii4.Caption := 'Tekst 4';
      OpisLinii5.Caption := 'Tekst 5';
      OpisLinii6.Caption := 'Tekst 6';
      OpisLinii7.Caption := 'Tekst 7';
      OpisLinii8.Caption := 'Tekst 8';
      OpisLinii9.Caption := 'Tekst 9';
      OpisLinii10.Caption := 'Tekst 10';

    end;
end;

{******************************************************************************}

end.
