home *** CD-ROM | disk | FTP | other *** search
- <includeonce;
- // dbs Database Scroll Library
- //
- // (C) 1996-97 H.E.I. GmbH and suppliers all rights reseved
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions
- // are met:
- // 1. Redistributions of source code must retain the above copyright
- // notice, this list of conditions and the following disclaimer.
- // 2. Redistributions in binary form must reproduce the above copyright
- // notice, this list of conditions and the following disclaimer in the
- // documentation and/or other materials provided with the distribution.
- // 3. Neither the name of H.E.I. GmbH nor the names of its contributors
- // may be used to endorse or promote products derived from this software
- // without specific prior written permission.
- // 4. The complete licensing conditions of heitml apply also to this file,
- // be sure to have read and accepted these conditions before using this
- // file. This file may be used and modified freely in conjunction with
- // a valid heitml license.
- //
- // THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
- // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- // IN NO EVENT SHALL THE H.E.I. OR CONTRIBUTORS BE LIABLE FOR ANY
- // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- // GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- // IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- // IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- include ses.hei><
-
- defenv dbsQuery *s max=200 pagesize=5;
- s = emptytuple;
- assign qt; defbody; /assign;
- s.max = max;
- s.rel = array(0);
- s.overflow=false;
- i=1; SrvMax=max;
- dbquery q; ? qt;
- dbrow ArAppend (s.rel,clone(q));
- i=i+1;
- if max<i; s.overflow=true; break; /if;
- /dbquery;
- s.pos = 0;
- s.pagesize = pagesize;
- s.extname = FormExtName("Scrl");
- /defenv;
-
- def dbsSize s;
- return len(s.rel);
- /def;
-
-
- defenv dbsScroller s pagesize=null;
- if isempty(s); return; /if;
- if isempty(s.rel); return; /if;
- if len(s.rel)==0; return; /if;
-
- if !isnull(pagesize); s.pagesize=pagesize; /if;
- p = ff[s.extname];
- if (!isempty(p));
- if (!isempty(p.goto)); s.pos=integer(p.goto); /if
- if (!isempty(p.first)); s.pos=0; /if
- if (!isempty(p.last)); s.pos=len(s.rel)+1; /if
- if (!isempty(p.next)); s.pos=s.pos+s.pagesize; /if
- if (!isempty(p.prev)); s.pos=s.pos-s.pagesize; /if
- if (len(s.rel)<=s.pos); s.pos= ( (len(s.rel)-1)/s.pagesize )*s.pagesize; /if;
- if (s.pos<0); s.pos=0; /if;
- /if;
- defbody;
- /defenv;
-
-
- defenv dbsLine s *r;
- i=s.pos; l=0;
- while (i<len(s.rel) && l<s.pagesize);
- r = s.rel[i];
- defbody;
- i=i+1; l=l+1;
- /while;
- r=null;
- /defenv
-
-
- def dbsTableHeadLine s;
- i=0; h=s.rel[0];
- while (i<len(h));
- > <th> <? fname(h[i])> </th> < let
- i=i+1;
- /while;
- /def
-
-
- def dbsTableHead s;
- ><tr><
- dbsTableHeadLine s;
- ></tr><
- /def;
-
-
- def dbsTableLine s r;
- i=0;
- while (i<len(r));
- if isempty(r[i])
- > <td> </td> <
- else if isinteger(r[i])||isreal(r[i])
- > <td align="right"><? r[i]></td> <
- else
- > <td><? r[i]></td> <
- /if; /if;
- i=i+1;
- /while;
- /def
-
-
- def dbsTableBody s;
- dbsLine s r;
- > <tr> <
- dbsTableLine s r;
- > </tr> <
- /dbsLine;
- /def;
-
-
- defenv dbsScrollBarNum s;
- cur = s.pos/s.pagesize;
- i=0;
- while i*s.pagesize<len(s.rel);
- ><sa urlpar=s.extname+".goto="+i*s.pagesize;
- if cur==i><b><? i+1></b><else><? i+1></if></sa><
- let i=i+1;
- if i*s.pagesize<len(s.rel); defbody; /if;
- /while;
- /defenv;
-
-
- defenv dbsANext s;
- if s.pos+s.pagesize<len(s.rel); sa urlpar=s.extname+".next=t"; defbody;/sa;
- else defbody; /if; /defenv;
- defenv dbsAPrev s;
- if s.pagesize<=s.pos; sa urlpar=s.extname+".prev=t"; defbody; /sa;
- else defbody; /if; /defenv;
- defenv dbsAFirst s; sa urlpar=s.extname+".first=t"; defbody; /sa; /defenv;
- defenv dbsALast s;
- if s.pagesize<len(s.rel); sa urlpar=s.extname+".last=t"; defbody; /sa;
- else defbody; /if; /defenv;
-
-
- def dbsControls s;
- > <dbsAFirst s>First</dbsAFirst> | <dbsAprev s>Prev</dbsAprev> |
- <dbsAnext s>Next</dbsAnext> | <dbsALast s>Last</dbsALast>
- </def;
-
-
- def dbsControlLine s;
- if s.pagesize<len(s.rel)>
- <center> <dbsControls s>
- <dbsScrollBarNum s> </dbsScrollBarNum></center>
- </if
- /def;
- >
-
-
-
-
-