Name('Vyhledání textu ve faktuře');
Designed('PohlMan#1')
WnsType(1);

Znova:

DefDialog('Vyhledání řetězce ve faktuře',404,158,True);

Material:String[14]
Hledej:String[32]
Trideni:Byte

DlgStatic(-1,'Číslo skladové karty',12,14,146);
DlgEdit(101,Material,180,10,146,24,14,es_Left);
DlgStatic(-1,'Počátek hledaného textu',12,42,164);
DlgEdit(102,Hledej,180,38,212,24,14,es_Left);
DlgStatic(-1,'Třídění výpisu dle',12,70,164);
DlgCombo(103,Trideni,180,66,212,92,32,cbs_DropDownList,'Čísla dokladu','IČ odběratele');
DlgDivider(8,106,388,0);
DlgButton(id_OK,'OK',256,112);
DlgButton(id_Cancel,'Zpět',324,112);

if(DlgExecute(True)<>id_OK)
  Halt;

DeclareRec('Sklad');

ClearRec(Sklad);

VetaS:LongInt;

if(Length(Material)<>0)
  begin
    DeclareRec('KeySklad1');
    KeySklad1.Length=SizeOf(KeySklad1)-1
    KeySklad1.Material=Material
    if(FindKey(KeySklad1,VetaS))
      begin
        ReadRec(Sklad,VetaS);
      end else
      begin
        Message('Ve skladě nebyla nalezena skladová položka číslo '+Material,mb_IconStop);
        GoTo Znova;
      end;
  end;

DeclareRec('Pohledavka');

if(Trideni=0) then
  begin
    DeclareRec('KeyPohledavka1');
    Klic:KeyPohledavka1
  end else
  begin
    DeclareRec('KeyPohledavka3');
    Klic:KeyPohledavka3
  end;

DeclareRec('Faktura');
DeclareRec('KeyFaktura1');

NewWNS('hledtext.wns');

WorkStr:String;

WorkStr='Vyhledání textu: '+Hledej;

if(Sklad.Cislo<>0)
  begin
    WorkStr=' pro skladovou kartu '+Material+' '+Sklad.Nazev;
  end;

SetDescr(0,0,ta_Left|descr_Date,'Datum')
SetDescr(1,0,ta_Right|descr_PageNum,'Strana')
SetDescr(2,1,ta_Center,WorkStr)
SetDescr(3,2,ta_Left|descr_UserDescr,'')

SetColumn(0,ta_Left,10);
SetColumn(1,ta_Left,10);
SetColumn(2,ta_Left,8);
SetColumn(3,ta_Left,32);
SetHead('Doklad\tz data\tpro IČ\tHledaný výraz');

VetaP:LongInt;
VetaF:LongInt;
LocBo:Boolean;
Shoda:Boolean;
Pozice:Word;
Progress:LongInt;

ClearKey(Klic);

InitStatus(UsedKeys(Klic));

Prohledavat:Array[1..3] of Byte=0,1,2
SkladoveTypy:Array[1..2] of Byte=3,5

While(NextKey(Klic,VetaP))
  begin
    ReadRec(Pohledavka,VetaP)
    if(InFilter(Pohledavka))
      begin
        Shoda=False
        if(Sklad.Cislo<>0)
          begin
            KeyFaktura1.Length=6
            KeyFaktura1.Cislo=SwapL(Pohledavka.Cislo)
            KeyFaktura1.Radek=Swap(1)
            LocBo=SearchKey(KeyFaktura1,VetaF);
            While(LocBo)
              begin
                if(KeyFaktura1.Cislo=SwapL(Pohledavka.Cislo))
                  begin
                    if(KeyFaktura1.Radek<>0)
                      begin
                        ReadRec(Faktura,VetaF);
                        if(InArray(SkladoveType,Faktura.Rectype))
                          begin
                            Shoda=Faktura.CisMat=Sklad.Cislo
                          end;
                      end;
                    LocBo=NextKey(KeyFaktura1,VetaF);
                  end else
                  begin
                    LocBo=False;
                  end;
                if(Shoda)
                  LocBo=False
              end;
          end else
          begin
            Shoda=True
          end;
        if(Shoda)
          begin
            KeyFaktura1.Length=6
            KeyFaktura1.Cislo=SwapL(Pohledavka.Cislo)
            KeyFaktura1.Radek=Swap(1)
            LocBo=SearchKey(KeyFaktura1,VetaF);
            While(LocBo)
              begin
                if(KeyFaktura1.Cislo=SwapL(Pohledavka.Cislo))
                  begin
                    if(KeyFaktura1.Radek<>0)
                      begin
                        ReadRec(Faktura,VetaF);
                        if(InArray(Prohledavat,Faktura.Rectype))
                          begin
                            Pozice=StrPos(Hledej,Faktura.Text);
                            if(Pozice<>0)
                              begin
                                WorkStr=Copy(Faktura.Text,Pozice,255);
                                WorkStr=ToChar(' ',WorkStr);
                                AddLine(Pohledavka.Doklad,StrDate(Pohledavka.DatVyst),Str(Pohledavka.ICO),WorkStr);
                              end;
                          end;
                      end;
                    LocBo=NextKey(KeyFaktura1,VetaF);
                  end else
                  begin
                    LocBo=False;
                  end;
              end;
          end;
      end;
    Inc(Progress);
    SetStatus(Progress);
  end;

END