Loading ...
Sorry, an error occurred while loading the content.

47004Re: [libertybasic] printdialog clone

Expand Messages
  • Mike -
    Sep 16 11:33 PM
    • 0 Attachment
      This post not from me,
      Mike Green.


      From: "mmdorn@..." <mmdorn@...>
      To: libertybasic@yahoogroups.com
      Sent: Tuesday, September 17, 2013 4:48 AM
      Subject: [libertybasic] printdialog clone

       
      Hi,
       
      I am running a racing program, in which I am trying to use the printdialog clone code to select a printer to print my reports. Everytime I click ok I receive a message that lists my handles, and say they were closed by Liberty Basic, please add the appropriate close commands. Before I add the clone code everything was fine. Below is part of my code with the clone code.
       
      Any help would be appreciated.
       
      Thanks,
      Mike
       
       
      [print2race]
      'PRINTERDIALOG
      DefaultPrinterName$=DefaultPrinterName$()
          gosub [SelectPrinter]
          end
      racenum = 1
      goto [select]
      [printrace2]
      racenum = 2
      goto [select]
      [printrace3]
      racenum = 3
      goto [select]
      [printrace4]
      racenum = 4
      goto [select]
      [printrace5]
      racenum = 5
      goto [select]
      [printrace6]
      racenum = 6
      goto [select]
      [printrace7]
      racenum = 7
      goto [select]
      [printrace8]
      racenum = 8
      goto [select]
      [printrace9]
      racenum = 9
      goto [select]
      [printrace10]
      racenum = 10
      goto [select]
      [printrace11]
      racenum = 11
      goto [select]
      [printrace12]
      racenum = 12
      goto [select]
      [printrace13]
      racenum = 13
      goto [select]
      [printrace14]
      racenum = 14
      goto [select]

      [select]
      didcsv=0 'flag so only create csv one time per race
           Select Case racenum
                  case 1
                  numb = Rone
                  marker = 1
                  case 2
                  numb = Rtwo
                  marker = Rone + 1
                  case 3
                  numb = Rthree
                  marker =  Rtwo + Rone + 1
                  case 4
                  numb = Rfour
                   marker = Rthree + Rtwo + Rone + 1
                  case 5
                  numb = Rfive
                  marker = Rfour + Rthree + Rtwo + Rone + 1
                  case 6
                  numb = Rsix
                  marker = Rfive + Rfour + Rthree + Rtwo + Rone + 1
                  case 7
                  numb = Rseven
                  marker = Rsix + Rfive + Rfour + Rthree + Rtwo + Rone + 1
                  case 8
                  numb = Reight
                   marker = Rseven + Rsix + Rfive + Rfour + Rthree + Rtwo + Rone + 1
                  case 9
                  numb = Rnine
                  marker = Reight + Rseven + Rsix + Rfive + Rfour + Rthree + Rtwo + Rone + 1
                  case 10
                  numb = Rten
                  marker = Rnine + Reight + Rseven + Rsix + Rfive + Rfour + Rthree + Rtwo + Rone + 1
                  case 11
                  numb = Releven
                  marker = Rten + Rnine + Reight + Rseven + Rsix + Rfive + Rfour + Rthree + Rtwo + Rone + 1
                  case 12
                  numb = Rtwelve
                  marker = Releven + Rten + Rnine + Reight + Rseven + Rsix + Rfive + Rfour + Rthree + Rtwo + Rone + 1
                  case 13
                  numb = r13
                  marker = Rtwelve + Releven + Rten + Rnine + Reight + Rseven + Rsix + Rfive + Rfour + Rthree + Rtwo + Rone + 1
                  case 14
                  numb = r14
                  marker = r13 + Rtwelve + Releven + Rten + Rnine + Reight + Rseven + Rsix + Rfive + Rfour + Rthree + Rtwo + Rone + 1
                  end select
      if numb = 0 then goto [main.inputLoop]
      GETTRIM #race1, racenum 'have to grab data again when switching races
      Dim Classtest(25,3) ' an array for new class rating
      mount = marker
      for f = 0 to numb-1
      GETTRIM #horse1, mount
      'print "Race distance: ";todaysdistance
      name$(f) = HorseName$
      saddle$(f) = space$(2-len(Saddlecloth$))+Saddlecloth$
      styles$(f) = runstyle1$
      lmh$(f) = quirinstyle$
      firstimer(f) = firster
      surface(f) =  surfind
      surface1(f) =  surfind1
      surface2(f) =  surfind2
      lenindicator(f) = lenind
      lenindicator1(f) = lenind1
      lenindicator2(f) = lenind2
      postpos$(f) = post$
      firster$(f) = firster$
      holder(f,0) = f
      holder(f,1) = programnum
      holder(f,2) = daysaway
      holder(f,3) = class
      holder(f,4) = distspd
      holder(f,5) = earlypace
      holder(f,6) = latepace
      holder(f,7) = form
      holder(f,8) = pcr
      holder(f,9) = allweath
      holder(f,10) = turf
      holder(f,11) = muddy
      holder(f,12) = dirt
      holder(f,13) = fastnum
      holder(f,14) = trainer
      holder(f,15) = jockey
      holder(f,16) = mornlineodds
      holder(f,17) = 0 ' points total
      holder(f,18) = 0 ' fair odds
      holder(f,19) = bigfig2
      holder(f,20) = bigfig1
      holder(f,21) = bigfig
      holder(f,22) = rank
      holder(f,23) = works
      holder(f,27) = weight

          Classtest(f,1) = DMeps ' store class ratings into array as read from horse.dat file
          Classtest(f,2) = DMwinpct
          Classtest(f,3) = DMitmpct
      'for i = 1 to 3
      '    print Classtest(f,i),holder(f,3),holder(f,5)
      'next
      ' print
          If f = 0 then  'initialize Hi/Lo values with the first horse
              HIeps = Classtest(f,1):HIwinpct = Classtest(f,2):HIitmpct = Classtest(f,3)
              LOeps = Classtest(f,1):LOwinpct = Classtest(f,2):LOitmpct = Classtest(f,3)
              HIepace = holder(f,5):LOepace = holder(f,5)
              HIspd = holder(f,3):LOspd = holder(f,3)
          Else
          'now compare to get highest and lowest values
              If Classtest(f,1) > HIeps then HIeps = Classtest(f,1)
              If Classtest(f,2) > HIwinpct then HIwinpct = Classtest(f,2)
              If Classtest(f,3) > HIitmpct then HIitmpct = Classtest(f,3)
              If Classtest(f,1) < LOeps then LOeps = Classtest(f,1)
              If Classtest(f,2) < LOwinpct then LOwinpct = Classtest(f,2)
              If Classtest(f,3) < LOitmpct then LOitmpct = Classtest(f,3)
              If holder(f,5) > HIepace then HIepace = holder(f,5)
              If holder(f,3) > HIspd then HIspd = holder(f,3)
              If holder(f,5)  < LOepace then LOepace = holder(f,5)
              If holder(f,3)  < LOspd then LOspd = holder(f,3)
          end if
      'test$ = STR$ (Classtest(f,1)) + " " + STR$ (Classtest(f,2)) + " " + STR$ (Classtest(f,3))
      '
      'if f = 0 or f = 1 or f= 2 then
      '    Notice test$
      'end if
      'end if
      mount = mount + 1
      next f

          epsRange = HIeps - LOeps:winpctRange = HIwinpct - LOwinpct:itmpctRange = HIitmpct - LOitmpct
          '  if first time starters with no ITM finishes, then set ranges to 1 so no division by 0 errors
          if epsRange = 0 then epsRange = 1
          if winpctRange = 0 then winpctRange = 1
          if itmpctRange = 0 then itmpctRange = 1
          'print epsRange,winpctRange,itmpctRange:input a$
          for cntr = 0 to numb - 1
              If firstimer(cntr) = 0 then '  only run when not a firster
                  eps = 60 + 40*((Classtest(cntr,1) - LOeps) / epsRange)
                  winpct = 60 + 40*((Classtest(cntr,2) - LOwinpct) / winpctRange)
                  itmpct = 60 + 40*((Classtest(cntr,3) - LOitmpct) / itmpctRange)
                  DMclassScore = (.4 * eps) + (.3 * winpct) + (.3 * itmpct)
                  ' round the score if remainder > .5
                  if DMclassScore MOD 1 > .5 then
                      DMclassScore = INT (DMclassScore) + 1
                  Else
                      DMclassScore = INT (DMclassScore)
                  end if
              Else
                  if firstimer(cntr) = 1 then DMclassScore = 0
              end if
              holder(cntr,24) = DMclassScore
              'print holder(cntr,24)
          next
      '--------Modified pace/speed figs from WTS
          epaceRange = HIepace - LOepace:spdRange = HIspd - LOspd
          If epaceRange = 0 then epaceRange = 1
          If spdRange = 0 then spdRange = 1
          for cntr = 0 to numb - 1
              if firstimer(cntr) = 0 then
                  ep = 60 + 40*((holder(cntr,5) - LOepace) / epaceRange)
                  spd = 60 + 40*((holder(cntr,3) - LOspd) / spdRange)
                  if todaysdistance < 7.5 then
                      spdfig = INT ((.6 * ep) + (.4 * spd))
                     ' print "Todays distance is < 7.5"
                  Else
                      spdfig = INT ((.5 * ep) + (.5 * spd))
                      ' print "Todays distance is > 7.5"
                  end if
              Else
                  if firstimer(cntr) = 1 then spdfig = 0
              end if
              holder(cntr,25) = spdfig
          next
      'print:print todaysdistance:print
      '-------calculate modifed Mitchell power number
          for cntr = 0 to numb - 1
              if todaysdistance < 7.5 then
                  pwr = INT ((.6 * holder(cntr,25)) + (.4 * holder(cntr,24)))
                  holder(cntr,26) = pwr
              else
                  pwr = INT ((.5 * holder(cntr,25)) + (.5 * holder(cntr,24)))
                  holder(cntr,26) = pwr
              end if
          next
      'fastnum = (int(((fig + ccc1 + hy + avlp + avsp + ds) / 6)*10)) *.1
      'experimental fast number
          for cntr = 0 to numb - 1
              holder(cntr,13) = holder(cntr,13) + int((.15 * holder(cntr,24)))
          next

      sort holder(), numb-1,0,3
      holder(0,17) = Val (CL$)
      holder(1,17) = INT (.5 * Val (CL$))
      holder(2,17) = INT (.5 * Val (CL$))
      holder(3,17) = INT (.5 * Val (CL$))
      sort holder(), numb-1,0,4
      holder(0,17) = Val (DS$) + holder(0,17)
      holder(1,17) = INT (.5 * Val (DS$)) + holder(1,17)
      holder(2,17) = INT (.5 * Val (DS$)) + holder(2,17)
      holder(3,17) = INT (.5 * Val (DS$)) + holder(3,17)
      sort holder(), numb-1,0,5
      holder(0,17) = Val (EP$) + holder(0,17)
      holder(1,17) = INT (.5 * Val (EP$)) + holder(1,17)
      holder(2,17) = INT (.5 * Val (EP$)) + holder(2,17)
      holder(3,17) = INT (.5 * Val (EP$)) + holder(3,17)
      sort holder(), numb-1,0,6
      holder(0,17) = Val (LP$) + holder(0,17)
      holder(1,17) = INT (.5 * Val (LP$)) + holder(1,17)
      holder(2,17) = INT (.5 * Val (LP$)) + holder(2,17)
      holder(3,17) = INT (.5 * Val (LP$)) + holder(3,17)
      sort holder(), numb-1,0,7
      holder(0,17) = Val (FM$) + holder(0,17)
      holder(1,17) = INT (.5 * Val (FM$)) + holder(1,17)
      holder(2,17) = INT (.5 * Val (FM$)) + holder(2,17)
      holder(3,17) = INT (.5 * Val (FM$)) + holder(3,17)
      sort holder(), numb-1,0,8
      holder(0,17) = Val (PCR$) + holder(0,17)
      holder(1,17) = INT (.5 * Val (PCR$)) + holder(1,17)
      holder(2,17) = INT (.5 * Val (PCR$)) + holder(2,17)
      holder(3,17) = INT (.5 * Val (PCR$)) + holder(3,17)
      sort holder(), numb-1,0,9
      holder(0,17) = Val (AW$) + holder(0,17)
      holder(1,17) = INT (.5 * Val (AW$)) + holder(1,17)
      holder(2,17) = INT (.5 * Val (AW$)) + holder(2,17)
      holder(3,17) = INT (.5 * Val (AW$)) + holder(3,17)
      sort holder(), numb-1,0,10
      holder(0,17) = Val (TF$) + holder(0,17)
      holder(1,17) = INT (.5 * Val (TF$)) + holder(1,17)
      holder(2,17) = INT (.5 * Val (TF$)) + holder(2,17)
      holder(3,17) = INT (.5 * Val (TF$)) + holder(3,17)
      sort holder(), numb-1,0,11
      holder(0,17) = Val (MY$) + holder(0,17)
      holder(1,17) = INT (.5 * Val (MY$)) + holder(1,17)
      holder(2,17) = INT (.5 * Val (MY$)) + holder(2,17)
      holder(3,17) = INT (.5 * Val (MY$)) + holder(3,17)
      sort holder(), numb-1,0,12
      holder(0,17) = Val (DT$) + holder(0,17)
      holder(1,17) = INT (.5 * Val (DT$)) + holder(1,17)
      holder(2,17) = INT (.5 * Val (DT$)) + holder(2,17)
      holder(3,17) = INT (.5 * Val (DT$)) + holder(3,17)
      sort holder(), numb-1,0,13
      holder(0,17) = Val (FAST$) + holder(0,17)
      holder(1,17) = INT (.5 * Val (FAST$)) + holder(1,17)
      holder(2,17) = INT (.5 * Val (FAST$)) + holder(2,17)
      holder(3,17) = INT (.5 * Val (FAST$)) + holder(3,17)
      sort holder(), numb-1,0,14
      holder(0,17) = Val (TR$) + holder(0,17)
      holder(1,17) = INT (.5 * Val (TR$)) + holder(1,17)
      holder(2,17) = INT (.5 * Val (TR$)) + holder(2,17)
      holder(3,17) = INT (.5 * Val (TR$)) + holder(3,17)
      sort holder(), numb-1,0,15
      holder(0,17) = Val (JK$) + holder(0,17)
      holder(1,17) = INT (.5 * Val (JK$)) + holder(1,17)
      holder(2,17) = INT (.5 * Val (JK$)) + holder(2,17)
      holder(3,17) = INT (.5 * Val (JK$)) + holder(3,17)
      sort holder(), 0,numb-1,16
      holder(0,17) = Val (ML$) + holder(0,17)
      holder(1,17) = INT (.5 * Val (ML$)) + holder(1,17)
      holder(2,17) = INT (.5 * Val (ML$)) + holder(2,17)
      holder(3,17) = INT (.5 * Val (ML$)) + holder(3,17)
      sort holder(),0,numb-1,0
      for f = 0 to numb-1
      totpoints = totpoints + holder(f,17)
      next f
      for ff = 0 to numb-1
      if holder(ff,17) < 1 then
      holder(ff,18) = 0 '99
      else
      holder(ff,18) = (totpoints-holder(ff,17))/holder(ff,17)
      end if
      next ff

      for pts = 0 to numb-1
      srts(pts,0) =  pts
      srts(pts,1) = holder(pts,17)
      srts(pts,2) = holder(pts,18)
      next pts
      sort srts(),numb-1,0,1
      y = 210
      [cleanodds2]
      for cl = 0 to numb
      srts(cl,0) = 0  'changed the 2nd index # as they were all "0" before
      srts(cl,1) = 0
      srts(cl,2) = 0
      next cl
      totpoints = 0
       
          '-----Begin code for #main.race
          nomainwin
          WindowWidth = 1240
          WindowHeight = 900
          UpperLeftX=int((DisplayWidth-WindowWidth)/2)
          UpperLeftY=int((DisplayHeight-WindowHeight)/2)

          '-----Begin GUI objects code
          'If DisplayWidth < 1025 then
             ' button #mainrace.button1,"Close",[closedisplay], UL, 535, 646, 150,  25
          'Else
          '    button #mainrace.button1,"Close",[closedisplay], UL, 535, 712, 150,  25
          'End if
          '-----End GUI objects code
          open "F.A.S.T. HHX Ver 2.2" for graphics_nf_nsb as #mainrace2
          print #mainrace2, "down;fill white"
          print #mainrace2, "color black; backcolor white"
          print #mainrace2, "font ms_sans_serif 10"
          'print #mainrace2.button1, "!font rockwell_extra_bold 12"
          print #mainrace2,"Horizscrollbar Off" 'n 0 200"
          print #mainrace2,"Vertscrollbar Off" 'n 0 800"
          print #mainrace2, "trapclose [quit.mainrace]"
      ' --- adjust window if 1024 x 768 rez
      'If DisplayWidth < 1025 then
      '    hMain = HWND(#mainrace)
      '    hparent = GetParent (hMain)
      '    calldll #user32, "MoveWindow",_
      '    hparent as ulong, _       'window handle
      '    1 as long,_            'x location of window
      '    1 as long,_            'y location of window
      '    1024 as long,_           'desired width of window
      '    734 as long,_           'desired height of window
      '    1 as boolean,_          'repaint flag,0=false,1=true
      '    ret as long             'nonzero=success
      'End if

      y = 130
      for pt = 0 to numb-1
      srt(pt,0) =  pt
      srt(pt,1) = holder(pt,17)
      next pt
      sort srt(),numb-1,0,1 ' sort function
       
       
       
       
      print #mainrace2,"down;fill white"
      print #mainrace2,"color black;backcolor white"
      print #mainrace2, "font arial 12 bold"
      GETTRIM #race1, racenum
      print #mainrace2, "place 12 22"
      print #mainrace2, "\";Track$;"   ";racemonth;"/";racedate;"/";raceyr;"                                                                                         ";"Form Adjusted Speed Totals"
      print #mainrace2, "color black"
      print #mainrace2, "place 12 42"
      print #mainrace2, "\Race # ";racenum;"  ";posttime$;"  ";distance$;"  ";surf$;"  ";statebred$;RaceClassification$;"  ";hurdles$;"  ";"Purse ";"$";Purse;"  ";cond$;"  ";cond22$;"  ";cond33$;" ";text$
      print #mainrace2, "place 12 62"
      print #mainrace2, "\";wage$;wage2$
      'print #mainrace2, "place 440 84 "; y
      'print #mainrace2, "\(Double-click in any column with numbers to sort)";
      print #mainrace2, "color  black"
      print #mainrace2, "size 2"
      print #mainrace2, "line 01 68 1190 68"
      'print #mainrace2, "size 2"
      'print #mainrace2, "line 55 100  55 800"
      print #mainrace2, "place 8 106"
      print #mainrace2, "\Pr#";
      print #mainrace2, "place 44 106"
      print #mainrace2, "\Horse Name";
      print #mainrace2, "place 44 86"
      print #mainrace2, "font arial 12 bold" 'italic"
      print #mainrace2, "\Weights assigned =>";
      print #mainrace2, "font arial 10 bold" 'italic"
      print #mainrace2, "place 248 86"
      print #mainrace2, "\"+CL$;
      print #mainrace2, "place 284 86"
      print #mainrace2, "\"+DS$;
      print #mainrace2, "place 320 86"
      print #mainrace2, "\"+EP$;
      print #mainrace2, "place 392 86"
      print #mainrace2, "\"+LP$;
      print #mainrace2, "place 464 86"
      print #mainrace2, "\"+FM$;
      print #mainrace2, "place 500 86"
      print #mainrace2, "\"+PCR$;
      print #mainrace2, "place 538 86"
      print #mainrace2, "\"+AW$;
      print #mainrace2, "place 574 86"
      print #mainrace2, "\"+TF$;
      print #mainrace2, "place 608 86"
      print #mainrace2, "\"+MY$;
      print #mainrace2, "place 646 86"
      print #mainrace2, "\"+DT$;
      print #mainrace2, "place 682 86"
      print #mainrace2, "\"+FAST$;
      print #mainrace2, "place 716 86"
      print #mainrace2, "\"+TR$;
      print #mainrace2, "place 752 86"
      print #mainrace2, "\"+JK$;
      print #mainrace2, "place 1004 86"
      print #mainrace2, "\"+ML$;
      print #mainrace2, "color  black"
      print #mainrace2, "size 2"
      print #mainrace2, "line 01 112 1190 112"
      print #mainrace2, "color  black"
      'print #mainrace2, "size 2"
      'print #mainrace2, "line 220 100  220 800"
      '----------- These headings added to replace buttons for sort
      print #mainrace2, "font arial 10 bold" '"font rockwell_extra_bold 9 "
      'print #mainrace2, "color  blue"
      print #mainrace2, "place 212 106"
      print #mainrace2, "\LR";
      print #mainrace2, "place 248 106"
      print #mainrace2, "\CL";
      print #mainrace2, "place 284 106"
      print #mainrace2, "\DS";
      print #mainrace2, "place 320 106"
      print #mainrace2, "\EP";
      print #mainrace2, "place 356 106"
      print #mainrace2, "\RT";
      print #mainrace2, "place 392 106"
      print #mainrace2, "\LP";
      print #mainrace2, "place 428 106"
      print #mainrace2, "\RS";
      print #mainrace2, "place 464 106"
      print #mainrace2, "\FM";
      print #mainrace2, "place 500 106"
      print #mainrace2, "\PC";
      print #mainrace2, "place 536 106"
      print #mainrace2, "\AW";
      print #mainrace2, "place 574 106"
      print #mainrace2, "\TF";
      print #mainrace2, "place 608 106"
      print #mainrace2, "\MY";
      print #mainrace2, "place 646 106"
      print #mainrace2, "\DT";
      print #mainrace2, "place 673 106"
      print #mainrace2, "\FAST";
      print #mainrace2, "place 716 106"
      print #mainrace2, "\TR";
      print #mainrace2, "place 752 106"
      print #mainrace2, "\JK";
      print #mainrace2, "place 790 106"
      print #mainrace2, "\S3";
      print #mainrace2, "place 824 106"
      print #mainrace2, "\S2";
      print #mainrace2, "place 862 106"
      print #mainrace2, "\S1";
      print #mainrace2, "place 894 106"
      print #mainrace2, "\C-C";
      print #mainrace2, "place 930 106"
      print #mainrace2, "\P-S";
      print #mainrace2, "place 963 106"
      print #mainrace2, "\PWR";
      print #mainrace2, "place 1004 106"
      print #mainrace2, "\ML";
      print #mainrace2, "place 1038 86"
      print #mainrace2, "\FAIR";
      print #mainrace2, "place 1034 106"
      print #mainrace2, "\ODDS";
      print #mainrace2, "place 1076 86"
      print #mainrace2, "\TOT";
      print #mainrace2, "place 1078 106"
      print #mainrace2, "\PTS";
      print #mainrace2, "font arial 9 "
      for t = 0 to numb-1
      'if firstimer(srt(t,0)) = 1 then
      'print #mainrace2, "color  red"
      'else
      print #mainrace2, "color  black"
      'end if
      'if name$(srt(t,0)) = "" then goto [print2looped]
      print #mainrace2, "place 12  "; y
      print #mainrace2, "\"; saddle$(srt(t,0))
      x=42:z=68
      '#main, "place ";x;" ";y;  line down
      print #mainrace2, "down"
      print #mainrace2, "line ";x;" ";y+8;" ";x;" ";z
      print #mainrace2, "place 45  "; y
      print #mainrace2, "\"; name$(srt(t,0))
      x=204:z=68
      '#main, "place ";x;" ";y;  line down
      print #mainrace2, "down"
      print #mainrace2, "line ";x;" ";y+8;" ";x;" ";z
      print #mainrace2, "place 210 "; y
      print #mainrace2, "\"; using("###", holder(srt(t,0),2)) ' days away
      x=240:z=68
      '#main, "place ";x;" ";y;  line down
      print #mainrace2, "down"
      print #mainrace2, "line ";x;" ";y+8;" ";x;" ";z
      print #mainrace2, "place 246 "; y
      print #mainrace2, "\"; using("###", holder(srt(t,0),3)) ' class
      x=276:z=68
      '#main, "place ";x;" ";y;  line down
      print #mainrace2, "down"
      print #mainrace2, "line ";x;" ";y+8;" ";x;" ";z
      print #mainrace2, "place 282 "; y
      print #mainrace2, "\"; using("###", holder(srt(t,0),4)) ' dist speed
      x=312:z=68
      '#main, "place ";x;" ";y;  line down
      print #mainrace2, "down"
      print #mainrace2, "line ";x;" ";y+8;" ";x;" ";z
      print #mainrace2, "place 318 "; y
      print #mainrace2, "\"; using("###", holder(srt(t,0),5)) ' early speed
      x=348:z=68
      '#main, "place ";x;" ";y;  line down
      print #mainrace2, "down"
      print #mainrace2, "line ";x;" ";y+8;" ";x;" ";z
      print #mainrace2, "place 358 "; y
      print #mainrace2, "\"; styles$(srt(t,0))
      x=384:z=68
      '#main, "place ";x;" ";y;  line down
      print #mainrace2, "down"
      print #mainrace2, "line ";x;" ";y+8;" ";x;" ";z
      print #mainrace2, "place 390 "; y
      print #mainrace2, "\"; using("###", holder(srt(t,0),6)) ' late pace
      x=420:z=68
      '#main, "place ";x;" ";y;  line down
      print #mainrace2, "down"
      print #mainrace2, "line ";x;" ";y+8;" ";x;" ";z
      print #mainrace2, "place 430 "; y
      print #mainrace2, "\"; lmh$(srt(t,0))
      x=456:z=68
      '#main, "place ";x;" ";y;  line down
      print #mainrace2, "down"
      print #mainrace2, "line ";x;" ";y+8;" ";x;" ";z
      print #mainrace2, "place 462 "; y
      print #mainrace2, "\"; using("###", holder(srt(t,0),7)) ' form
      x=492:z=68
      '#main, "place ";x;" ";y;  line down
      print #mainrace2, "down"
      print #mainrace2, "line ";x;" ";y+8;" ";x;" ";z
      print #mainrace2, "place 498 "; y
      print #mainrace2, "\"; using("###", holder(srt(t,0),8)) ' pcr
      x=528:z=68
      '#main, "place ";x;" ";y;  line down
      print #mainrace2, "down"
      print #mainrace2, "line ";x;" ";y+8;" ";x;" ";z
      print #mainrace2, "place 534 "; y
      print #mainrace2, "\"; using("###", holder(srt(t,0),9)) ' aw
      x=564:z=68
      '#main, "place ";x;" ";y;  line down
      print #mainrace2, "down"
      print #mainrace2, "line ";x;" ";y+8;" ";x;" ";z
      print #mainrace2, "place 570 "; y
      print #mainrace2, "\"; using("###", holder(srt(t,0),10)) ' turf
      x=600:z=68
      '#main, "place ";x;" ";y;  line down
      print #mainrace2, "down"
      print #mainrace2, "line ";x;" ";y+8;" ";x;" ";z
      print #mainrace2, "place 606 "; y
      print #mainrace2, "\"; using("###", holder(srt(t,0),11)) ' mud
      x=636:z=68
      '#main, "place ";x;" ";y;  line down
      print #mainrace2, "down"
      print #mainrace2, "line ";x;" ";y+8;" ";x;" ";z
      print #mainrace2, "place 642 "; y
      print #mainrace2, "\"; using("###", holder(srt(t,0),12)) ' dirt
      x=672:z=68
      '#main, "place ";x;" ";y;  line down
      print #mainrace2, "down"
      print #mainrace2, "line ";x;" ";y+8;" ";x;" ";z
      print #mainrace2, "font arial 9 bold"
      print #mainrace2, "color  blue"
      print #mainrace2, "place 678 "; y
      print #mainrace2, "\"; using("###", holder(srt(t,0),13)) ' fast
      print #mainrace2, "font arial 9"
      print #mainrace2, "color  black"
      x=708:z=68
      '#main, "place ";x;" ";y;  line down
      print #mainrace2, "down"
      print #mainrace2, "line ";x;" ";y+8;" ";x;" ";z
      print #mainrace2, "place 714 "; y
      print #mainrace2, "\"; using("###", holder(srt(t,0),14)) ' tnwpct
      x=744:z=68
      '#main, "place ";x;" ";y;  line down
      print #mainrace2, "down"
      print #mainrace2, "line ";x;" ";y+8;" ";x;" ";z
      print #mainrace2, "place 750 "; y
      print #mainrace2, "\"; using("###", holder(srt(t,0),15)) ' jkwpct
      x=780:z=68
      '#main, "place ";x;" ";y;  line down
      print #mainrace2, "down"
      print #mainrace2, "line ";x;" ";y+8;" ";x;" ";z
      print #mainrace2, "place 786 "; y
      gosub [print2getcolor2]
      gosub [print2getdist2]
      print #mainrace2, "\"; using("###", holder(srt(t,0),19)) ' 3rsr
      print #mainrace2, "font arial 9"
      print #mainrace2, "color  black"
      x=816:z=68
      '#main, "place ";x;" ";y;  line down
      print #mainrace2, "down"
      print #mainrace2, "line ";x;" ";y+8;" ";x;" ";z
      print #mainrace2, "place 822 "; y
      gosub [print2getcolor1]
      gosub [print2getdist1]
      print #mainrace2, "\"; using("###", holder(srt(t,0),20)) ' 2rsr
      print #mainrace2, "font arial 9"
      print #mainrace2, "color  black"
      x=852:z=68
      '#main, "place ";x;" ";y;  line down
      print #mainrace2, "down"
      print #mainrace2, "line ";x;" ";y+8;" ";x;" ";z
      print #mainrace2, "place 858 "; y
      gosub [print2getcolor]
      gosub [print2getdist]
      print #mainrace2, "\"; using("###", holder(srt(t,0),21)) ' lrsr
      print #mainrace2, "font arial 9 "
      print #mainrace2, "color  black"
      x=888:z=68
      '#main, "place ";x;" ";y;  line down
      print #mainrace2, "down"
      print #mainrace2, "line ";x;" ";y+8;" ";x;" ";z
      'change display to eliminate WK and RK score;  replace with C-C and P-S
      print #mainrace2, "place 894 "; y
      print #mainrace2, "\"; using("###", holder(srt(t,0),24)) ' c-c
      x=924:z=68
      '#main, "place ";x;" ";y;  line down
      print #mainrace2, "down"
      print #mainrace2, "line ";x;" ";y+8;" ";x;" ";z
      print #mainrace2, "place 930 "; y
      print #mainrace2, "\"; using("###", holder(srt(t,0),25)) ' p-s
      x=960:z=68
      '#main, "place ";x;" ";y;  line down
      print #mainrace2, "down"
      print #mainrace2, "line ";x;" ";y+8;" ";x;" ";z
      print #mainrace2, "place 966 "; y
      print #mainrace2, "\"; using("###", holder(srt(t,0),26)) ' pwr
      x=996:z=68
      '#main, "place ";x;" ";y;  line down
      print #mainrace2, "down"
      print #mainrace2, "line ";x;" ";y+8;" ";x;" ";z
      print #mainrace2, "place 1004 "; y
      print #mainrace2, "\"; using("###", holder(srt(t,0),16)) ' ml
      x=1032:z=68
      '#main, "place ";x;" ";y;  line down
      print #mainrace2, "down"
      print #mainrace2, "line ";x;" ";y+8;" ";x;" ";z
      print #mainrace2, "place 1038 "; y
      print #mainrace2, "\"; using ("###.#", holder(srt(t,0),18)) ' fair odds
      x=1072:z=68
      '#main, "place ";x;" ";y;  line down
      print #mainrace2, "down"
      print #mainrace2, "line ";x;" ";y+8;" ";x;" ";z
      print #mainrace2, "font arial 9 bold"
      print #mainrace2, "color  blue"
      print #mainrace2, "place 1078 "; y
      print #mainrace2, "\"; using("###", holder(srt(t,0),17)) ' point total
      print #mainrace2, "font arial 9"
      print #mainrace2, "color  black"
      x=1108:z=68
      '#main, "place ";x;" ";y;  line down
      print #mainrace2, "down"
      print #mainrace2, "line ";x;" ";y+8;" ";x;" ";z
      print #mainrace2, "font arial 9 bold"
      print #mainrace2, "color  red"
      print #mainrace2, "place 1114 "; y
      print #mainrace2, "\"; firster$(srt(t,0))
      print #mainrace2, "font arial 9 "
      print #mainrace2, "color  black"

      'y = y + 4:x=5:b=1230
      x=1:b=1190
      '#main, "place ";x;" ";y;
      print #mainrace2, "down"
      print #mainrace2, "line ";x;" ";y+8;" ";b;" ";y+8;

      '--------
      lasty = y ' the last y position for MouseY double-click test
      y = y + 25
      '[print2looped]
      next t
      Dim mline(25),fodds(25),tpoints(25)
      for a = 0 to numb-1
      'if name$(srt(a,0)) = "" then goto [parlooped1]
      'print #mainrace, "place 25 "; y+20
      'print #mainrace, "\"; saddle$(srts(a,0))
      'print #mainrace, "place 60  "; y+20
      'print #mainrace, "\"; name$(srts(a,0))
      'print #mainrace, "place 233 "; y+20
      'print #mainrace, "\"; holder(srts(a,0),16)
      mline(a)=holder(srts(a,0),16)'for use in csv
      'print #mainrace, "place 273 "; y+20
      'print #mainrace, "\";  int((holder(srts(a,0),18)-1)*10)*.1
      fodds(a) = int((holder(srts(a,0),18)-1)*10)*.1 'for use in csv
      'print #mainrace, "place 328 "; y+20
      'print #mainrace, "\";  holder(srts(a,0),17)
      tpoints(a) = holder(srts(a,0),17)'for use in csv
      y = y+25
      '[parlooped1]
      next a
      Dim Top4$(25)
      for count = 0 to 3
          Top4$(count) = saddle$(srts(count,0))+","+name$(srts(count,0))+","+STR$(mline(count))+","+STR$(fodds(count))+","+STR$(tpoints(count))
      next
      print #mainrace2, "flush"
      '***  CSV code
      If didcsv = 0 then
          Dim Ratings$(20)
          Dim Copied(numb-1,26)
          Dim Converted$(numb-1,26)
          crlf$ = CHR$(13) + CHR$(10)
          RaceDate$= Str$(racemonth) + "/" + STR$(racedate) + "/" + STR$(raceyr)+ ","  + "Race# " + str$(racenum)
          commas24$ =  "," + "," + "," + "," + ","+ "," + "," + "," + "," + "," + "," + "," + "," + "," + "," + "," + "," + "," + "," + "," + "," + "," + "," + ","
          RaceInfo1$=Track$ + " " + RaceDate$+commas24$+","+Track$ + " " + RaceDate$+crlf$
          RaceInfo2$=RaceClassification$ + "," + cond$ + " " + cond22$ + " "+ str$(todaysdistance) +"F " + surf$ + "," +commas24$+_
          RaceClassification$ + "," + cond$ + " " + cond22$ + " "+ str$(todaysdistance) +"F " + surf$ +crlf$
          Heading$ = "Program #"+","+"Horse Name"+","+"LR"+"," +"CL"+","+"DS"+","+"EP" + ","+"RT"+","+"LP"+","+"RS"+","+"FM"+","+"PC"+","+_
          "AW"+","+"TF"+","+"MY"+","+"DT"+","+"FAST"+","+"TR"+","+"JK"+","+"ML"+","+"S3"+","+"S2"+","+"S1"+","+"C-C"+","+"P-S"+","+"PWR"+_
          ","+","+"Program #"+","+"Horse"+","+"M/L"+","+"Fair Odds"+","+"Points"+crlf$
          for count = 0 to numb-1
              'Can't use STR$ function on array with srt so have to copy to another array and then use STR$
              For count2 = 2 to 26
                  If (count2 =17) or (count2 =18) or (count2 =22) or (count2 =23) then 'skip missing values
                      'print "skipped count2 ";count2
                  else
                      Copied(count,count2) = holder(srt(count,0),count2)
                      Converted$(count,count2)=STR$(Copied(count,count2))
                  end if
              next count2
          next count
          Dim NewCSV$(20),NewRating$(20)
          For count = 0 to numb - 1
              NewRating$(count)=""
              NewCSV$(count) = Track$ + "," + Date$ + "," + STR$(racenum)+ "," + distyards$ + ","+ Surface$ + "," + RaceType$+"," +_
              RaceClassification$ + "," + Purse$ + "," +saddle$(srt(count,0))+","+ name$(srt(count,0))+","+ STR$(holder(count,27)) +"," + postpos$(count)+","
              'print NewCSV$(count)
              For count2 = 2 to 26
                  If (count2 =17) or (count2 =18) or (count2 =22) or (count2 =23) then 'skip missing values
                      'print "skipped count2 ";count2
                  else
                      if count2 <> 26 then
                          If count2 = 6 then Ratings$(count) = Ratings$(count) +  styles$(srt(count,0))+","
                          If count2 = 7 then Ratings$(count) = Ratings$(count) + lmh$(srt(count,0))+","
                          Ratings$(count) = Ratings$(count) + Converted$(count,count2) + ","
                          NewRating$(count) =  Ratings$(count)
                      Else
                          NewRating$(count) = Ratings$(count) + Converted$(count,count2)
                          if count = 0 or count = 1 or count = 2 or count = 3 then 'add Top 4 output to the rows of the 1st 4 horses
                              Ratings$(count) = Ratings$(count) + Converted$(count,count2) +","+","+Top4$(count)
                          else'don't add comma after last item
                              Ratings$(count) = Ratings$(count) + Converted$(count,count2)
                          end if
                      end if
                  end if
              next
              roundedValue = val(using("###.#", holder(count,18))) - 1
              If roundedValue >90 then roundedValue = 99
              Fodds$ = STR$(roundedValue)
              NewCSV$(count)=NewCSV$(count) + NewRating$(count) + "," + STR$(holder(count,17))+ "," + Fodds$ + crlf$
              Ratings$(count)=saddle$(srt(count,0))+","+ name$(srt(count,0))+","+Ratings$(count)+crlf$
              'print NewCSV$(count)
          next

      RaceCSV$=RaceInfo1$+RaceInfo2$+Heading$
      For count = 0 to numb-1
          RaceCSV$= RaceCSV$+Ratings$(count)
      next
      For count = 0 to numb-1
          NewTrackCSV$= NewTrackCSV$+NewCSV$(count)
      next
      'print RaceCSV$
      TrackCSV$=TrackCSV$+RaceCSV$
      didcsv=1 ' flag so that if summary screen sorted do not repeat the csv save
      end if
       

      print #mainrace2, "print 1180"
      'if R > 17 then print #mainrace2, "print 1140"
      'if R < 18 then print #mainrace2, "print xga"
      print #mainrace2, "Discard"
          close #mainrace2

      if racenum = 1 then goto [printrace2]
      if racenum = 2 then goto [printrace3]
      if racenum = 3 then goto [printrace4]
      if racenum = 4 then goto [printrace5]
      if racenum = 5 then goto [printrace6]
      if racenum = 6 then goto [printrace7]
      if racenum = 7 then goto [printrace8]
      if racenum = 8 then goto [printrace9]
      if racenum = 9 then goto [printrace10]
      if racenum = 10 then goto [printrace11]
      if racenum = 11 then goto [printrace12]
      if racenum = 12 then goto [printrace13]
      if racenum = 13 then goto [printrace14]

      goto [main.inputLoop]
       
      [print2getcolor2]
      SELECT CASE surface2(srt(t,0))
       CASE 1
       print #mainrace2, "color  40 160 37"
       CASE 2
      print #mainrace2, "color  147 105 87"
       CASE else
      print #mainrace2, "color  Black"
      end select
      return
      '***********
      [print2getcolor1]
      SELECT CASE surface1(srt(t,0))
       CASE 1
       print #mainrace2, "color  40 160 37"
       CASE 2
      print #mainrace2, "color  147 105 87"
      CASE else
      print #mainrace2, "color  Black"
      end select
      return
      '***********
      [print2getcolor]
      SELECT CASE surface(srt(t,0))
       CASE 1
       print #mainrace2, "color  40 160 37"
       CASE 2
      print #mainrace2, "color  147 105 87"
      CASE else
      print #mainrace2, "color  Black"
      end select
      return
      '**********************
      [print2getdist]
      SELECT CASE lenindicator(srt(t,0))
      case 1
      print #mainrace2, "font arial 9 "
      CASE else
      print #mainrace2, "font arial 11 italic bold"
      end select
      return
      [print2getdist2]
      SELECT CASE lenindicator2(srt(t,0))
      case 1
      print #mainrace2, "font arial 9 "
      CASE else
      print #mainrace2, "font arial 11 italic bold"
      end select
      return

      [print2getdist1]
      SELECT CASE lenindicator1(srt(t,0))
      case 1
      print #mainrace2, "font arial 9 "
      CASE else
      print #mainrace2, "font arial 11 italic bold"
      end select
      return
       
       
       
       
      [SelectPrinter]
          WinVersion=WinVersion()
          if WinVersion>=5 then gosub [Find2000xpvistaprinters]'find installed printers
          if WinVersion<=4 then notice "Incompatible OS"+chr$(13)+_
                      "This function will only work on Windows 2000,"+chr$(13)+_
                      "Windows XP or Windows Vista":wait
          TEMPSelectedPrinter$=SelectedPrinter$
          ScrnScl=GetScaleFactor()
          WindowWidth=int(440/ScrnScl):WindowHeight=int(270/ScrnScl)
          UpperLeftX=int(((DisplayWidth-WindowWidth)/2)/ScrnScl)
          UpperLeftY=int(((DisplayHeight-WindowHeight)/2)/ScrnScl)
          BackgroundColor$ = "buttonface"
          groupbox #pselect.one, "Printer",     int(13/ScrnScl),  int(6/ScrnScl),   int(410/ScrnScl),  int(80/ScrnScl)
          groupbox #pselect.two, "Print range", int(13/ScrnScl),  int(92/ScrnScl), int(217/ScrnScl),  int(105/ScrnScl)
          groupbox #pselect.thr, "Copies",      int(240/ScrnScl), int(92/ScrnScl), int(183/ScrnScl),  int(105/ScrnScl)
          statictext #pselect.1, "Name:",       int(25/ScrnScl),  int(33/ScrnScl),  int(55/ScrnScl),   int(26/ScrnScl)
          statictext #pselect.6, "from:",       int(89/ScrnScl),  int(145/ScrnScl),  int(26/ScrnScl),  int(23/ScrnScl)
          statictext #pselect.7, "to:",         int(165/ScrnScl),  int(145/ScrnScl), int(12/ScrnScl),  int(23/ScrnScl)
          statictext #pselect.8, "Number of copies:",   int(251/ScrnScl),  int(115/ScrnScl), int(112/ScrnScl), int(23/ScrnScl)
          combobox #pselect.list1, prnt$(),[pSelected1], int(80/ScrnScl), int(29/ScrnScl), int(227/ScrnScl),  100
          button #pselect.default,"OK",[pSelected2], UL,           int(270/ScrnScl), int(207/ScrnScl),  int(75/ScrnScl),  int(24/ScrnScl)
          button #pselect.Cancel,"Cancel",[quit.pselect], UL,      int(351/ScrnScl), int(207/ScrnScl),  int(75/ScrnScl),  int(24/ScrnScl)
          button #pselect.Cancel,"Properties...",[pProperties], UL,int(319/ScrnScl), int(26/ScrnScl),   int(92/ScrnScl),  int(24/ScrnScl)
          checkbox #pselect.checkbox1, "Print to file", [pyes], [pno],int(319/ScrnScl), int(57/ScrnScl),  int(80/ScrnScl),  int(25/ScrnScl)
          radiobutton #pselect.one, "All", [pyes], [pno], int(25/ScrnScl), int(115/ScrnScl), int(60/ScrnScl), int(20/ScrnScl)
          radiobutton #pselect.two, "Pages", [pyes], [pno], int(25/ScrnScl), int(140/ScrnScl), int(60/ScrnScl), int(20/ScrnScl)
          radiobutton #pselect.thr, "Selection", [pyes], [pno], int(25/ScrnScl), int(165/ScrnScl), int(85/ScrnScl), int(20/ScrnScl)
          textbox #pselect.textbox1, int(116/ScrnScl), int(140/ScrnScl),int(38/ScrnScl),int(20/ScrnScl)
          textbox #pselect.textbox2, int(180/ScrnScl), int(140/ScrnScl),int(38/ScrnScl),int(20/ScrnScl)
          textbox #pselect.textbox3, int(363/ScrnScl), int(110/ScrnScl),int(48/ScrnScl),int(20/ScrnScl)
          stylebits #pselect.g1, 0, _WS_BORDER, 0, 0
          stylebits #pselect.g2, 0, _WS_BORDER, 0, 0
          stylebits #pselect.g3, 0, _WS_BORDER, 0, 0
          stylebits #pselect.g4, 0, _WS_BORDER, 0, 0
          stylebits #pselect.g5, 0, _WS_BORDER, 0, 0
          stylebits #pselect.g6, 0, _WS_BORDER, 0, 0
          graphicbox #pselect.g4, int(252/ScrnScl),int(155/ScrnScl) , int(20/ScrnScl), int(26/ScrnScl)
          graphicbox #pselect.g5, int(289/ScrnScl),int(155/ScrnScl) , int(20/ScrnScl), int(26/ScrnScl)
          graphicbox #pselect.g6, int(326/ScrnScl),int(155/ScrnScl) , int(20/ScrnScl), int(26/ScrnScl)
          graphicbox #pselect.g1, int(264/ScrnScl),int(148/ScrnScl) , int(20/ScrnScl), int(26/ScrnScl)
          graphicbox #pselect.g2, int(302/ScrnScl),int(148/ScrnScl) , int(20/ScrnScl), int(26/ScrnScl)
          graphicbox #pselect.g3, int(338/ScrnScl),int(148/ScrnScl) , int(20/ScrnScl), int(26/ScrnScl)
          open "Select Printer" for dialog_modal as #pselect
          #pselect "trapclose [quit.pselect]"
          #pselect.list1 "select ";TEMPSelectedPrinter$
          'create spinner control:http://libertybasic.conforums.com/index.cgi?board=LB3&action=display&num=1217524188
          UpperLimit = 200
          LowerLimit = 1
          CurrentPosition = 1
          hWnd = hWnd(#pselect)
          hText = hWnd(#pselect.textbox3)
          UDS.ARROWKEYS = hexdec("20")
          UDS.WRAP = hexdec("1")
          UDS.SETBUDDYINT = hexdec("2")
          UDS.ALIGNRIGHT = hexdec("4")
          dwStyle = _WS_CHILD or _WS_BORDER or _WS_VISIBLE or UDS.ARROWKEYS or UDS.WRAP or UDS.SETBUDDYINT or UDS.ALIGNRIGHT
          hSpinner = CreateSpinner(hWnd, dwStyle, hText, UpperLimit, LowerLimit, CurrentPosition)
          #pselect.checkbox1 "disable"
          #pselect.two "disable"
          #pselect.6 "!disable"
          #pselect.7 "!disable"
          #pselect.textbox1 "0"
          #pselect.textbox2 "0"
          #pselect.textbox1 "!disable"
          #pselect.textbox2 "!disable"
          #pselect.one "set"
          #pselect.default "!setfocus"
          for x=1 to NumberOfPrinters
            if prnt$(x)=DefaultPrinterName$ then #pselect.list1, "selectindex ";x
          next x
          for x=1 to 6
            c=c+1:var$ = "#pselect.g";x
            #var$, "font Times_New_Roman 7"
            #var$, "down;color darkgray"
            #var$, "line 0 0 30 0"
            #var$, "line 0 0 0 25"
            #var$, "color black"
            #var$, "line 19 0 19 25"
            #var$, "line 0 24 20 24"
            #var$, "place 10 21"
            #var$, "\";c
            #var$, "flush"
            if c=3 then c=0
          next x
          wait
      [pProperties]
          notice "This feature is not available."
          wait
      [pyes]
          wait
      [pno]
          wait
      [quit.pselect]
          SelectedPrinter$=TEMPSelectedPrinter$
          calldll #user32, "DestroyWindow",_
            hSpinner as ulong, ret as long
          close #pselect
          end
      [pSelected1]
          #pselect.list1 "selection? sel$"
          SelectedPrinter$=sel$
          wait
      [pSelected2]
          #pselect.list1 "selection? sel$"
          SelectedPrinter$=sel$
          if sel$="" then notice "Please select a printer"
          calldll #user32, "DestroyWindow",_
            hSpinner as ulong, ret as long
          print "Selected printer...";SelectedPrinter$
          #pselect.textbox3 "!contents? copies"
          print "Number of copies...";copies
          close #pselect
          end
      [setdefaultprinter]
          open "winspool.drv" for dll as #winspool
          calldll #winspool, "SetDefaultPrinterA",_
            Printer$ as ptr,_
            SetDefaultPrinter as long
          close #winspool
          if SetDefaultPrinter=0 then call DisplayError
          return
      [Find2000xpvistaprinters]
          'find printers
          PRINTER.ENUM.LOCAL = hexdec("2")
          PRINTER.ENUM.CONNECTIONS = hexdec("4")
          nLocalPrinters = EnumPrinters(PrinterInfo$, PRINTER.ENUM.LOCAL)
          LocalPrintersInfo$ = PrinterInfo$
          PrinterInfo$ = ""
          nNetworkPrinters = EnumPrinters(PrinterInfo$, PRINTER.ENUM.CONNECTIONS)
          NetworkPrintersInfo$ = PrinterInfo$
          PrinterInfo$ = ""
          NumberOfPrinters = nLocalPrinters + nNetworkPrinters
          PrinterInfo$ = LocalPrintersInfo$;";";NetworkPrintersInfo$
          dim prnt$(NumberOfPrinters)
          if NumberOfPrinters then 'remove faxes from list
            prnt=0
            for x1=1 to NumberOfPrinters'remove "faxes", "Quicken pdf creator" and "Intuit pdf creator" from list
              if instr(lower$(word$(PrinterInfo$,x1,";")),"fax")=0 _
                  and instr(lower$(word$(PrinterInfo$,x1,";")),"quick")=0 _
                  and instr(lower$(word$(PrinterInfo$,x1,";")),"intuit")=0 _
                  then prnt=prnt+1:prnt$(prnt)=word$(PrinterInfo$,x1,";")
            next x1
          end if
          return
      function EnumPrinters(byref PrinterInfo$, pLocale)
          'returns the number of printers found
          'fills the submitted variable with the printer names
          'separated by semicolons (;)
          open "winspool.drv" for dll as #winspool
          struct pcbNeeded, value as ulong
          struct pcReturned, value as ulong
          struct PrinterInfo4,_
            pPrinterName$ as ptr,_
            pServerName$ as ptr,_
            Attributes as ulong
          PrinterInfo4Len = len(PrinterInfo4.struct)
          nFlags = pLocale
          Level = 4
          cbBuf = PrinterInfo4Len
          uFlags = _LMEM_MOVEABLE or _LMEM_ZEROINIT
          calldll #kernel32, "LocalAlloc", _
            uFlags as ulong, _
            cbBuf as ulong, _
            hMem as ulong
          calldll #kernel32, "LocalLock", _
            hMem as ulong, _
            pBuffer as ulong
      [retryEnumPrinters]
          calldll #winspool, "EnumPrintersA",_
            nFlags as ulong,_
            PrinterName as ulong,_
            Level as ulong,_
            pBuffer as ulong,_
            cbBuf as ulong,_
            pcbNeeded as struct,_
            pcReturned as struct,_
            result as long
          if result = 0 then
            if GetLastError() = 122 then
              cbBuf = pcbNeeded.value.struct
              hOldMem = hMem
              calldll #kernel32, "LocalReAlloc", _
                hOldMem as ulong, _
                cbBuf as ulong, _
                uFlags as ulong, _
                hMem as ulong
              calldll #kernel32, "LocalLock", _
                hMem as ulong, _
                pBuffer as ulong
              goto [retryEnumPrinters]
              else
                call DisplayError
            end if
            else
            EnumPrinters = pcReturned.value.struct
            EnumPrinters$(1)=str$(EnumPrinters)
            BufferPointer = pBuffer
            for count = 0 to EnumPrinters - 1
              calldll #kernel32, "RtlMoveMemory", _
                PrinterInfo4 as struct,_
                BufferPointer as ulong, _
                PrinterInfo4Len as ulong, _
                result as void
              BufferPointer = BufferPointer + PrinterInfo4Len
              pointer = PrinterInfo4.pPrinterName$.struct
              PrinterInfo$ = winstring(pointer); ";"; PrinterInfo$
            next
            PrinterInfo$ = left$(PrinterInfo$, len(PrinterInfo$)-1)
          end if
          calldll #kernel32, "LocalFree", _
          hMem as ulong, _
          result as ulong
          close #winspool
          end function
      function GetLastError()
          calldll #kernel32, "GetLastError", _
          GetLastError as ulong
      end function
      sub DisplayError
          dwFlags = _FORMAT_MESSAGE_FROM_SYSTEM
          nSize = 1024
          lpBuffer$ = space$(nSize); chr$(0)
          dwMessageID = GetLastError()
          calldll #kernel32, "FormatMessageA", _
            dwFlags as ulong, _
            lpSource as ulong, _
            dwMessageID as ulong, _
            dwLanguageID as ulong, _
            lpBuffer$ as ptr, _
            nSize as ulong, _
            Arguments as ulong, _
            result as ulong
          if trim$(lpBuffer$)<> "The operation completed successfully."  then notice "Error "; dwMessageID; chr$(13); left$(lpBuffer$, result)
      end sub
      function DefaultPrinterName$()
          struct pcchBuffer, value as ulong
          pszBuffer$ = space$(500)
          pcchBuffer.value.struct = 500
          open "winspool.drv" for dll as #winspool
          calldll #winspool, "GetDefaultPrinterA",_
            pszBuffer$ as ptr,_
            pcchBuffer as struct, _
            GetDefaultPrinter as long
          close #winspool
          DefaultPrinterName$ = left$(pszBuffer$, pcchBuffer.value.struct - 1)
      end function
      function WinVersion()
          struct OSVERSIONINFO,_
          dwOSVersionInfoSize as ulong,_
          dwMajorVersion as ulong,_
          dwMinorVersion as ulong,_
          dwBuildNumber as ulong,_
          dwPlatformId as ulong,_
          szCSDVersion as char[128]
          L=len(OSVERSIONINFO.struct)
          OSVERSIONINFO.dwOSVersionInfoSize.struct=L
          calldll #kernel32, "GetVersionExA",_
            OSVERSIONINFO as struct,_
            result as long
          WinVersion=OSVERSIONINFO.dwMajorVersion.struct
          'dwMajorVersion
          'Identifies the major version number of the operating
          'system as follows.
          'Windows 95             4
          'Windows 98             4
          'Windows Me             4
          'Windows NT 3.51        3
          'Windows NT 4.0         4
          'Windows 2000           5
          'Windows XP             5
          'Windows .NET Server    5
          'Windows Vista          6
          'Windows 7              6
      end function
      function GetScaleFactor()
          LOGPIXELSX = 88
          nIndex = LOGPIXELSX
          calldll #user32, "GetDC",_
            0   as ulong,_    ' entire screen
            hDC as ulong
          calldll #gdi32, "GetDeviceCaps",_
            hDC    as ulong,_
            nIndex as ulong,_
            dpi    as ulong
          calldll #user32, "ReleaseDC",_
            0      as ulong,_ ' entire screen
            hDC    as ulong,_
            result as long    ' 1 = success
          GetScaleFactor = dpi / 96
      end function
      Function CreateSpinner(hWnd, style, hTxt, upr, lwr, pos)
          CallDLL #comctl32, "InitCommonControlsEx",_
            re as void
          CallDLL #user32, "GetWindowLongA",_
            hWnd as ulong,_
          &n

      (Message over 64 KB, truncated)
    • Show all 5 messages in this topic