cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
%3CLINGO-SUB%20id%3D%22lingo-sub-433560%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%20mode%3D%22NONE%22%20mode%3D%22NONE%22%3E%E3%82%AD%E3%83%A3%E3%83%B3%E3%82%BB%E3%83%AB%E3%83%9C%E3%82%BF%E3%83%B3%E4%BB%98%E3%81%8D%E3%81%AE%E3%83%97%E3%83%AD%E3%82%B0%E3%83%AC%E3%82%B9%E3%83%90%E3%83%BC%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-433560%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%20mode%3D%22NONE%22%20mode%3D%22NONE%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2FUncharted%2FProgress-Bar%2Fm-p%2F21160%23U21160%22%20class%3D%22lia-mention-container-editor-message%20lia-img-icon-blog-thread%20lia-fa-icon%20lia-fa-blog%20lia-fa-thread%20lia-fa%22%20target%3D%22_blank%22%3E%E3%83%97%E3%83%AD%E3%82%B0%E3%83%AC%E3%82%B9%E3%83%90%E3%83%BC%3C%2FA%3E%E3%83%97%E3%83%AD%E3%82%B0%E3%83%AC%E3%82%B9%E3%83%90%E3%83%BC%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%82%92%E7%A4%BA%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%20%3CA%20href%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F12111%22%20target%3D%22_blank%22%3E%40abmayfield%3C%2FA%3E%E3%81%A7%E3%81%AE%E8%B3%AA%E5%95%8F%3CA%20href%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2FDiscussions%2Fquot-not-responding-quot-vs-quot-still-thinking-quot%2Fm-p%2F433223%23U433223%22%20class%3D%22lia-mention-container-editor-message%20lia-img-icon-forum-thread%20lia-fa-icon%20lia-fa-forum%20lia-fa-thread%20lia-fa%22%20target%3D%22_blank%22%3E%E3%80%8C%E5%8F%8D%E5%BF%9C%E3%81%97%E3%81%AA%E3%81%84%E3%80%8Dvs.%E3%80%8C%E3%81%BE%E3%81%A0%E8%80%83%E3%81%88%E3%81%A6%E3%81%84%E3%82%8B%E3%80%8D%3C%2FA%3E%E3%81%93%E3%82%8C%E3%82%92%E5%86%8D%E6%A4%9C%E8%A8%8E%E3%81%99%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E4%BF%83%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%20%E3%81%93%E3%81%A1%E3%82%89%E3%81%AF%E3%82%AD%E3%83%A3%E3%83%B3%E3%82%BB%E3%83%AB%E3%83%9C%E3%82%BF%E3%83%B3%E3%82%92%E5%90%AB%E3%82%80%E5%88%A5%E3%81%AE%E4%BE%8B%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22not%20canceled%22%20style%3D%22width%3A%20635px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22not%20canceled%22%20style%3D%22width%3A%20635px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22not%20canceled%22%20style%3D%22width%3A%20635px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22not%20canceled%22%20style%3D%22width%3A%20635px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22not%20canceled%22%20style%3D%22width%3A%20635px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F37317iF99EF892110A06D9%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22progressbar.png%22%20alt%3D%22not%20canceled%22%20%2F%3E%3Cspan%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3Enot%20canceled%3C%2Fspan%3E%3C%2Fspan%3E%3CSPAN%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3Enot%20canceled%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3Enot%20canceled%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3Enot%20canceled%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3E%E3%82%AD%E3%83%A3%E3%83%B3%E3%82%BB%E3%83%AB%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Cancel%20button%20pressed.%22%20style%3D%22width%3A%20563px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Cancel%20button%20pressed.%22%20style%3D%22width%3A%20563px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Cancel%20button%20pressed.%22%20style%3D%22width%3A%20563px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Cancel%20button%20pressed.%22%20style%3D%22width%3A%20563px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Cancel%20button%20pressed.%22%20style%3D%22width%3A%20563px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F37318iCFFD202EECBE39CE%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22Capture.PNG%22%20alt%3D%22Cancel%20button%20pressed.%22%20%2F%3E%3Cspan%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3ECancel%20button%20pressed.%3C%2Fspan%3E%3C%2Fspan%3E%3CSPAN%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3ECancel%20button%20pressed.%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3ECancel%20button%20pressed.%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3ECancel%20button%20pressed.%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3E%E3%82%AD%E3%83%A3%E3%83%B3%E3%82%BB%E3%83%AB%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%8C%E6%8A%BC%E3%81%95%E3%82%8C%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CPRE%3E%3CCODE%20class%3D%22%20language-jsl%22%3EprogressBarWidth%20%3D%20500%3B%0AprogressUpdatesSeconds%20%3D%201%20%2F%204%3B%20%2F%2F%201%2F2%20sec%20updates%20-%26gt%3B%201300ips%2C%20%201%2F30%20-%26gt%3B%201000ips%20(1%2F4%20compromise%20speed%20vs%20appearance)%0Acancel%20%3D%200%3B%20%2F%2F%20clear%20the%20cancel%20flag%0ANew%20Window(%20%22Progressbar%20demo%22%2C%20%2F%2F%0A%20V%20List%20Box(%20%2F%2F%0A%20%20cats%20%3D%20Text%20Box(%20%22%22%20)%2C%20%2F%2F%20output%20from%20the%20work%20function%0A%20%20t%20%3D%20Text%20Box(%20%22%22%2C%20%26lt%3B%3CSETWRAP%3E%20%5EworkCalls%2FrunSeconds%5E%20ips%22%20)%20)%3B%0A%20t%20%26lt%3B%26lt%3B%20updatewindow%3B%20%2F%2F%20this%20works%20without%20the%20wait%20%0A)%3B%0A%0AtotalCats%20%3D%200%3B%0Adowork%20%3D%20Function(%20%7B%7D%2C%0A%20x%20%3D%20%22%22%3B%0A%20For(%20i%20%3D%201%2C%20i%20%26lt%3B%3D%201000%2C%20i%20%2B%3D%201%2C%20x%20%3D%20x%20%7C%7C%20%22.%22%20)%3B%0A%20totalCats%20%2B%3D%201000%3B%0A%20cats%20%26lt%3B%26lt%3B%20settext(%20Eval%20Insert(%20%22total%20concatenations%3D%5EtotalCats%5E%22%20)%20)%3B%0A)%3B%0A%0AWhile(%20runSeconds%20%26lt%3B%20limitSeconds%20%26amp%3B%20!cancel%2C%20%2F%2F%20change%20this%20to%20represent%20the%20work%20you%20are%20doing%0A%20%0A%20%2F%2F%20do%20some%20work%2C%20simulated%20by%20concatenating%20strings...%0A%20dowork()%3B%0A%20%0A%20%2F%2F%20update%20the%20progressbar%0A%20workCalls%20%2B%3D%201%3B%0A%20nowMicroSeconds%20%3D%20HP%20Time()%3B%0A%20%2F%2F%20how%20often%20does%20it%20need%20to%20update%20on%20the%20screen%3F%0A%20If(%20(nowMicroSeconds%20-%20recentUpdateMicroSeconds)%20%2F%201e6%20%26gt%3B%20progressUpdatesSeconds%2C%20%0A%20%20%2F%2F%20in%20this%20example%20I'm%20using%20a%20fixed%20time%20duration%20of%20%22limitSeconds%22%20to%20represent%20the%0A%20%20%2F%2F%20amount%20of%20work%20to%20be%20done.%20And%20%22runSeconds%22%20to%20represent%20the%20amount%20of%20work%20done%20so%20far.%0A%20%20%2F%2F%20Usually%20you'll%20have%20something%20other%20than%20time%3A%20number%20of%20rows%20in%20a%20table%20perhaps%2C%20or%0A%20%20%2F%2F%20number%20of%20categories%20to%20make%20reports%20for.%20As%20long%20as%20you%20know%20how%20many%20total%20and%20how%0A%20%20%2F%2F%20many%20completed%2C%20you%20can%20compute%20this%20fraction...%0A%20%20updateProgress(%20runSeconds%20%2F%20limitSeconds%20)%3B%20%20%2F%2F%20change%20this%20to%20represent%20the%20fraction%20of%20work%20finished%0A%20%20recentUpdateMicroSeconds%20%3D%20nowMicroSeconds%3B%0A%20%20Wait(%200%20)%3B%20%2F%2F%20this%20wait%20is%20needed%20to%20let%20the%20cancel%20button%20work%0A%20)%3B%0A%20runSeconds%20%3D%20(nowMicroSeconds%20-%20startMicroSeconds)%20%2F%201e6%3B%0A)%3B%0A%0AIf(%20cancel%2C%20%2F%2F%20test%20the%20cancel%20flag%0A%20Beep()%3B%20%2F%2F%20audio%20flag%0A%20left%20%26lt%3B%26lt%3B%20color(%20%22dark%20red%22%20)%3B%20%2F%2F%20visual%20flag%20something%20is%20awry%0A%20right%20%26lt%3B%26lt%3B%20color(%20%22red%22%20)%3B%0A%2C%20%2F%2F%0A%20updateProgress(%201.0%20)%3B%20%2F%2F%20people%20like%20to%20see%20the%20bar%20go%20to%20100%25%0A)%3B%0AcancelButton%20%26lt%3B%26lt%3B%20setbuttonname(%20%22Close%22%20)%3B%20%2F%2F%20visual%20flag%20the%20button%20function%20is%20changed%0AcancelButton%20%26lt%3B%26lt%3B%20setscript(%20(cancelButton%20%26lt%3B%26lt%3B%20closewindow)%20)%3B%20%2F%2F%20and%20what%20to%20do%20if%20the%20button%20is%20pressed%0A%3C%2FSETWRAP%3E%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EJMP%2015%20%E3%81%A8%2016%20%E3%81%AE%E9%96%93%E3%81%A7%E3%83%86%E3%82%B9%E3%83%88%E3%81%97%E3%81%9F%E3%81%A8%E3%81%93%E3%82%8D%E3%80%8116%20%E3%81%AF%3CEM%3E%3CSTRONG%3E%E5%A4%9A%E3%81%8F%3C%2FSTRONG%3E%3C%2FEM%3E%E3%81%93%E3%81%AE%E6%96%87%E5%AD%97%E5%88%97%E9%80%A3%E7%B5%90%E3%81%AE%E4%BD%9C%E6%A5%AD%E8%B2%A0%E8%8D%B7%E3%81%8C%E3%82%88%E3%82%8A%E9%AB%98%E9%80%9F%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%20%E3%82%88%E3%81%8F%E3%82%84%E3%81%A3%E3%81%9F%EF%BC%81%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%E7%B7%A8%E9%9B%86%3A%20JMP%20%E3%81%8C%E7%8B%AC%E8%87%AA%E3%81%AE%E3%82%AD%E3%83%A3%E3%83%B3%E3%82%BB%E3%83%AB%E5%8F%AF%E8%83%BD%E3%81%AA%E9%80%B2%E8%A1%8C%E7%8A%B6%E6%B3%81%E3%83%90%E3%83%BC%E3%82%92%E6%8C%81%E3%81%9F%E3%81%AA%E3%81%84%E3%83%97%E3%83%A9%E3%83%83%E3%83%88%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%A6%E3%81%84%E3%81%A6%E3%80%81%E9%95%B7%E6%99%82%E9%96%93%E5%AE%9F%E8%A1%8C%E3%81%95%E3%82%8C%E3%82%8B%E5%A0%B4%E5%90%88%E3%80%81%E3%81%93%E3%82%8C%E3%81%AF%E5%BD%B9%E3%81%AB%E7%AB%8B%E3%81%A1%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%20%E3%83%97%E3%83%AD%E3%82%B0%E3%83%AC%E3%82%B9%20%E3%83%90%E3%83%BC%E3%81%AE%E3%83%97%E3%83%A9%E3%83%83%E3%83%88%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%20%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%82%92%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%80%81%E3%83%86%E3%82%AF%E3%83%8B%E3%82%AB%E3%83%AB%20%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%8C%E9%81%A9%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%20%E3%81%93%E3%82%8C%E3%81%8C%E3%81%AA%E3%81%84%E3%81%A8%E3%80%81%E5%AE%8C%E4%BA%86%E3%81%99%E3%82%8B%E3%81%BE%E3%81%A7%20JMP%20%E3%82%92%E5%81%9C%E6%AD%A2%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%20(%E5%BC%B7%E5%88%B6%E7%9A%84%E3%81%AB%E7%B5%82%E4%BA%86%E3%81%99%E3%82%8B%E4%BB%A5%E5%A4%96)%20%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-TEASER%20id%3D%22lingo-teaser-433560%22%20slang%3D%22en-US%22%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22progressbar.png%22%20style%3D%22width%3A%20635px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22progressbar.png%22%20style%3D%22width%3A%20635px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22progressbar.png%22%20style%3D%22width%3A%20635px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22progressbar.png%22%20style%3D%22width%3A%20635px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22progressbar.png%22%20style%3D%22width%3A%20635px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F37316iD8F14E701A29BA57%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22progressbar.png%22%20alt%3D%22progressbar.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%E7%8B%AC%E8%87%AA%E3%81%AE%E9%80%B2%E8%A1%8C%E7%8A%B6%E6%B3%81%E3%83%90%E3%83%BC%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLINGO-TEASER%3E%3CLINGO-SUB%20id%3D%22lingo-sub-436516%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%20mode%3D%22NONE%22%20mode%3D%22NONE%22%3ERe%3A%20%E3%82%AD%E3%83%A3%E3%83%B3%E3%82%BB%E3%83%AB%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%AE%E3%81%82%E3%82%8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%AC%E3%82%B9%E3%83%90%E3%83%BC%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-436516%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%20mode%3D%22NONE%22%20mode%3D%22NONE%22%3E%3CP%3E%E6%A2%B1%E5%8C%85%E5%B8%8C%E6%9C%9B%E3%81%A7%E3%81%99%E3%80%81%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%97%E3%81%BE%E3%81%99%EF%BC%81%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%E3%81%82%E3%81%AA%E3%81%9F%E3%81%AE%E4%BE%8B%E3%81%A7%E3%81%AF%E3%80%81%20pb%26lt%3B%3CDELETE%20class%3D%22%22%20%E3%81%AF%E5%BF%85%E8%A6%81%E3%81%AA%E3%82%82%E3%81%AE%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%84%E5%8F%AF%E8%83%BD%E6%80%A7%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%3D%22%22%3E%0A%3C%2FDELETE%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%E7%A7%81%E3%81%8C%E8%A6%8B%E8%90%BD%E3%81%A8%E3%81%97%E3%81%A6%E3%81%84%E3%81%9F%E7%82%B9%E3%82%82%E6%8C%87%E6%91%98%E3%81%97%E3%81%A6%E3%81%84%E3%81%9F%E3%81%A0%E3%81%8D%E3%81%BE%E3%81%97%E3%81%9F%3CA%20href%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2FUncharted%2FHow-to-use-Define-Class%2Fm-p%2F274410%23U274410%22%20class%3D%22lia-mention-container-editor-message%20lia-img-icon-blog-thread%20lia-fa-icon%20lia-fa-blog%20lia-fa-thread%20lia-fa%22%20target%3D%22_blank%22%3E%E3%82%AF%E3%83%A9%E3%82%B9%E5%AE%9A%E7%BE%A9%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9%3C%2FA%3E%3A%20%E3%82%AF%E3%83%A9%E3%82%B9%E3%83%97%E3%83%AD%E3%83%88%E3%82%BF%E3%82%A4%E3%83%97%E3%81%AE%E5%AE%9A%E7%BE%A9%E3%81%A7%E6%98%8E%E7%A4%BA%E7%9A%84%E3%81%AB%E3%82%AF%E3%83%A9%E3%82%B9%E3%83%A1%E3%83%B3%E3%83%90%E3%83%BC%E3%82%92%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8B%E3%81%A8%E6%80%9D%E3%81%A3%E3%81%9F%E3%81%AE%E3%81%A7%E3%81%99%E3%81%8C%E3%80%81%3CEM%3E%E3%81%93%E3%82%8C%EF%BC%9A%3C%2FEM%3E%E3%81%9D%E3%82%8C%E3%82%89%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%82%82%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%3E%3CCODE%20class%3D%22%20language-jsl%22%3EDefine%20Class(%22bubble%22%2C%0A%2F%2Fnot%20needed%3A%20m_xpos%20%3D%20.%3B%20%0A%20_init_%20%3D%20Method(%20%7Bx%7D%2C%20%3CBR%20%2F%3E%2F%2Fbecause%20using%20explicit%20this%3A%20...%0A%20%20this%3Am_xpos%20%3D%20x%3B%20%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-436471%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%20mode%3D%22NONE%22%20mode%3D%22NONE%22%3ERe%3A%20%E3%82%AD%E3%83%A3%E3%83%B3%E3%82%BB%E3%83%AB%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%AE%E3%81%82%E3%82%8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%AC%E3%82%B9%E3%83%90%E3%83%BC%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-436471%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%20mode%3D%22NONE%22%20mode%3D%22NONE%22%3E%3CP%3E%E3%81%82%E3%82%8A%E3%81%8C%E3%81%A8%E3%81%86%3CA%20href%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F982%22%20target%3D%22_blank%22%3E%40Craige_Hales%3C%2FA%3E%20%EF%BC%81%20%E3%81%9F%E3%81%BE%E3%81%9F%E3%81%BE%E8%87%AA%E5%88%86%E3%81%AE%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%AE%201%20%E3%81%A4%E3%81%AB%E9%80%B2%E8%A1%8C%E7%8A%B6%E6%B3%81%E3%83%90%E3%83%BC%20(%E3%81%BE%E3%81%9F%E3%81%AF%E3%81%9D%E3%82%8C%E3%81%AB%E9%A1%9E%E4%BC%BC%E3%81%97%E3%81%9F%E3%82%82%E3%81%AE)%20%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%A0%E3%81%A3%E3%81%9F%E3%81%AE%E3%81%A7%E3%80%81%E3%81%93%E3%82%8C%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%80%81%E3%83%8B%E3%83%BC%E3%82%BA%E3%81%AB%E5%90%88%E3%82%8F%E3%81%9B%E3%81%A6%E5%B0%91%E3%81%97%E4%BF%AE%E6%AD%A3%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%20%E7%A7%81%E3%81%AF%E3%81%9D%E3%82%8C%E3%82%92%E3%82%AF%E3%83%A9%E3%82%B9%E3%81%AB%E5%A4%89%E3%81%88%E3%81%BE%E3%81%97%E3%81%9F%EF%BC%88JMP%E3%81%AE%E3%82%AF%E3%83%A9%E3%82%B9%E3%81%A8%E3%82%AF%E3%83%A9%E3%82%B9%E5%85%A8%E8%88%AC%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%AF%E9%9D%9E%E5%B8%B8%E3%81%AB%E5%88%9D%E5%BF%83%E8%80%85%E3%81%A7%E3%81%99%EF%BC%89%E3%80%82%3CSPAN%3E%E7%B7%B4%E7%BF%92%E3%81%99%E3%82%8B%3C%2FSPAN%3E%E3%81%9D%E3%82%8C%E3%81%AF%E4%B8%80%E3%81%A4%E3%81%AB%E5%8F%8E%E3%81%BE%E3%82%8B%E6%B0%97%E3%81%8C%E3%81%97%E3%81%9F%E3%81%8B%E3%82%89%E3%81%A7%E3%81%99%E3%80%82%20%E3%81%BE%E3%81%9F%E3%80%81Natural%20Docs%20%E3%81%A7%E8%A7%A3%E6%9E%90%E3%81%A7%E3%81%8D%E3%82%8B%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%82%92%E3%81%84%E3%81%8F%E3%81%A4%E3%81%8B%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3C%2FP%3E%0A%3CP%3E%E3%82%B3%E3%83%BC%E3%83%89%EF%BC%9A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CDIV%20class%3D%22lia-spoiler-container%22%3E%3CA%20class%3D%22lia-spoiler-link%22%20href%3D%22%23%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%20target%3D%22_blank%22%3E%E3%82%82%E3%81%A3%E3%81%A8%E8%A6%8B%E3%82%8B...%3C%2FA%3E%3CNOSCRIPT%3ENames%20Default%20To%20Here(1)%3B%0A%2F%2FModified%20from%20%3CA%20href%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2FUncharted%2FProgress-Bar-with-Cancel-Button%2Fba-p%2F433560%22%20target%3D%22_blank%22%3Ehttps%3A%2F%2Fcommunity.jmp.com%2Ft5%2FUncharted%2FProgress-Bar-with-Cancel-Button%2Fba-p%2F433560%3C%2FA%3E%0ADefine%20Class(%0A%2F************************************************************************************************%0A%20Class%3A%20ProgressBar%0A%20%20---Prototype---%0A%20%20ProgressBar(int%20max_iteration%20%3D%201%2C%20int%20ith_iter_to_print%20%3D%205)%0A%20%20---------------%0A%20%20Creates%20brogress%20bar%20with%20cancel%20button.%20Pressing%20cancel%20will%20return%201%20from%20%0A%20%20update(current_iteration)%20method%20this%20can%20be%20used%20to%20break%20out%20of%20loop.%0A%20%0A%20Prototype%3A%0A%20%20%26gt%3B%20pb%20%3D%20New%20Object(ProgressBar(%26lt%3Bmax_iteration%20%3D%201%26gt%3B%2C%20%26lt%3Bith_iter_to_print%20%3D%205%26gt%3B)%0A%20%20%26gt%3B%20pb%20%26lt%3B%26lt%3B%20update(current_iteration)%0A%20%20%26gt%3B%20pb%20%26lt%3B%26lt%3B%20close()%0A%0A%20Parameters%3A%0A%20%20max_iteration%20-%20Maximum%20iterations%20for%20the%20progress%0A%20%20ith_iter_to_print%20-%20ith%20values%20to%20print.%20Modulo(current_iteration%2C%20ith_iter_to_print)%0A%20%0A%20Examples%3A%0A%20%20----------JSL-----------%0A%20%20pb%20%3D%20New%20Object(ProgressBar(10%2C%201))%3B%0A%20%20For(i%20%3D%201%2C%20i%20%26lt%3B%3D%2010%2C%20i%2B%2B%2C%0A%20%20%20cancel_pressed%20%3D%20pb%20%26lt%3B%26lt%3B%20update(i)%3B%0A%20%20%20If(cancel_pressed%20%3D%3D%201%2C%0A%20%20%20%20break()%3B%0A%20%20%20)%3B%0A%20%20%20wait(1)%3B%0A%20%20)%3B%0A%20%20pb%20%26lt%3B%26lt%3B%20Close%3B%0A%20%20pb%20%26lt%3B%26lt%3B%20Delete%20Class%3B%0A%20%20------------------------%0A************************************************************************************************%2F%0A%20%22ProgressBar%22%2C%0A%20progressBarWidth%20%3D%20500%3B%0A%20cancel%20%3D%200%3B%0A%20%0A%20_init_%20%3D%20Method(%7Bmax_iteration%20%3D%201%2C%20ith_iter_to_print%20%3D%205%7D%2C%0A%20%20this%3Acancel%20%3D%200%3B%0A%20%20this%3Amax_iteration%20%3D%20max_iteration%3B%0A%20%20this%3Awindow_ref%20%3D%20this%3Acreate()%3B%0A%20%20this%3Ai_to_print%20%3D%20ith_iter_to_print%3B%0A%20%20this%3Astart_time%20%3D%20HP%20Time()%3B%0A%20)%3B%0A%20%0A%20create%20%3D%20Method(%7B%7D%2C%0A%20%20aa_nw%20%3D%20Associative%20Array()%3B%0A%20%20nw%20%3D%20New%20Window(%22Progress%20Bar%22%2C%20%2F%2F%0A%20%20%20V%20List%20Box(%0A%20%20%20%20Align(%22center%22)%2C%20%0A%20%20%2F%2F%20%20cats%20%3D%20Text%20Box(%22%22)%2C%20%2F%2F%20output%20from%20the%20work%20function%0A%20%20%20%20t%20%3D%20Text%20Box(%22%22%2C%20%26lt%3B%26lt%3Bsetwrap(500))%2C%20%2F%2F%20status%20of%20the%20progressbar%0A%20%20%20%20H%20List%20Box(%20%2F%2F%20Duct%20tape%20has%20a%20light%20side%20and%20a%20dark%20side.%20So%20does%20the%20progressbar.%0A%20%20%20%20%20left%20%3D%20Spacer%20Box(size(0%2C%2010)%2C%20color(%22light%20green%22))%2C%20%2F%2F%0A%20%20%20%20%20right%20%3D%20Spacer%20Box(size(progressBarWidth%2C%2010)%2C%20color(%22dark%20green%22))%2C%20%2F%2F%0A%20%20%20%20%20%26lt%3B%26lt%3Bpadding(5%2C%205%2C%205%2C%205)%2C%20%2F%2F%20gray%20wrapper%0A%20%20%20%20%20%26lt%3B%26lt%3Bbackgroundcolor(%22dark%20gray%22)%20%2F%2F%0A%20%20%20%20)%2C%20%2F%2F%0A%20%20%20%20cancelButton%20%3D%20Button%20Box(%22Cancel%22%2C%20%26lt%3B%26lt%3BStyle(%22Toggle%22))%20%2F%2F%20sets%20the%20cancel%20flag%0A%20%20%20)%0A%20%20)%3B%0A%20%20aa_nw%5B%22nw%22%5D%20%3D%20nw%3B%0A%20%20aa_nw%5B%22t%22%5D%20%3D%20t%3B%0A%20%20aa_nw%5B%22left%22%5D%20%3D%20left%3B%0A%20%20aa_nw%5B%22right%22%5D%20%3D%20right%3B%0A%20%20aa_nw%5B%22cancelButton%22%5D%20%3D%20cancelButton%3B%0A%20%20Return(aa_nw)%3B%0A%20)%3B%0A%20%0A%20get_cancel_status%20%3D%20Method(%7B%7D%2C%0A%20%20Return(this%3Awindow_ref%5B%22cancelButton%22%5D%20%26lt%3B%26lt%3B%20get)%0A%20)%3B%0A%20%0A%20update%20%3D%20Method(%7Bcurrent_iteration%7D%2C%0A%20%20If(Modulo(current_iteration%2C%20this%3Ai_to_print)%20%3D%3D%200%20%7C%20current_iteration%20%3D%3D%201%2C%0A%20%20%20Try(%0A%20%20%20%20leftsize%20%3D%20Round(progressBarWidth%20*%20(current_iteration%20%2F%20this%3Amax_iteration))%3B%0A%20%20%20%20rightsize%20%3D%20progressBarWidth%20-%20leftsize%3B%0A%20%20%20%20this%3Awindow_ref%5B%22left%22%5D%20%26lt%3B%26lt%3B%20width(leftsize)%3B%0A%20%20%20%20this%3Awindow_ref%5B%22right%22%5D%20%26lt%3B%26lt%3B%20width(rightsize)%3B%0A%20%20%20%20cur_time%20%3D%20Round((HP%20Time()%20-%20this%3Astart_time)%20%2F%2010%5E6%2C%203)%3B%20%2F%2Fcould%20use%20formatting%20to%20keep%20same%20length%0A%20%20%20%20this%3Awindow_ref%5B%22t%22%5D%20%26lt%3B%26lt%3B%20settext(Eval%20Insert(%22Iteration%20%5Ecurrent_iteration%5E%20of%20%5Ethis%3Amax_iteration%5E.%20Total%20runtime%3A%20%5Ecur_time%5Es%22))%3B%0A%20%20%2F%2F%20%20this%3Awindow_ref%5B%22t%22%5D%20%26lt%3B%26lt%3B%20settext(Eval%20Insert(%22%5Ecurrent_iteration%5E%20iterations%20in%20%5Echar(runSeconds%2C6%2C3)%5E%20seconds%20-%26gt%3B%20%5EworkCalls%2FrunSeconds%5E%20ips%22))%3B%0A%20%20%20%20this%3Awindow_ref%5B%22t%22%5D%20%26lt%3B%26lt%3B%20updatewindow%3B%20%2F%2F%20this%20works%20without%20the%20wait%0A%20%20%20%20cancel_status%20%3D%20this%3Aget_cancel_status()%3B%0A%20%20%20%2C%20%2F%2Flazy%20handling%20with%20catch%0A%20%20%20%20cancel_status%20%3D%201%3B%0A%20%20%20%20show(exception_msg)%3B%0A%20%20%20)%3B%0A%20%20)%3B%0A%2F*%20%20If(cancel_status%20%3D%3D%201%2C%0A%20%20%20this%3Awindow_ref%5B%22left%22%5D%20%26lt%3B%26lt%3B%20color(%22dark%20red%22)%3B%0A%20%20%20this%3Awindow_ref%5B%22right%22%5D%20%26lt%3B%26lt%3B%20color(%22red%22)%3B%0A%20%20)%3B%0A*%2F%0A%20%20Return(cancel_status)%3B%0A%20)%3B%0A%20%0A%20close%20%3D%20Method(%7B%7D%2C%0A%20%20Try(%0A%20%20%20this%3Awindow_ref%5B%22nw%22%5D%20%26lt%3B%26lt%3B%20Close%20Window%0A%20%20)%0A%20)%3B%0A)%3B%0A%0Apb%20%3D%20New%20Object(ProgressBar(10%2C%201))%3B%0AFor(i%20%3D%201%2C%20i%20%26lt%3B%3D%2010%2C%20i%2B%2B%2C%0A%20cancel_pressed%20%3D%20pb%20%26lt%3B%26lt%3B%20update(i)%3B%0A%20If(cancel_pressed%20%3D%3D%201%2C%0A%20%20break()%3B%0A%20)%3B%0A%20wait(1)%3B%0A)%3B%0Apb%20%26lt%3B%26lt%3B%20Close%3B%0Apb%20%26lt%3B%26lt%3B%20Delete%20Class%3B%0A%0AWrite()%3B%0A%3C%2FNOSCRIPT%3E%3CNOSCRIPT%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2FUncharted%2FProgress-Bar-with-Cancel-Button%2Fba-p%2F433560%22%20target%3D%22_blank%22%3Ehttps%3A%2F%2Fcommunity.jmp.com%2Ft5%2FUncharted%2FProgress-Bar-with-Cancel-Button%2Fba-p%2F433560%3C%2FA%3E%20%E3%81%8B%E3%82%89%E5%A4%89%E6%9B%B4%20%E3%82%AF%E3%83%A9%E3%82%B9%E3%81%AE%E5%AE%9A%E7%BE%A9(%20%2F*************%20*************************************************%20**********************************%20%E3%82%AF%E3%83%A9%E3%82%B9%3A%20ProgressBar%20---%E3%83%97%E3%83%AD%E3%83%88%E3%82%BF%E3%82%A4%E3%83%97---%20ProgressBar(int%20max_iteration%20%3D%201%2C%20int%20ith_iter_to_print%20%3D%205)%20---------------%20%E3%82%AD%E3%83%A3%E3%83%B3%E3%82%BB%E3%83%AB%E3%83%9C%E3%82%BF%E3%83%B3%E4%BB%98%E3%81%8D%E3%81%AE%E3%83%96%E3%83%AD%E3%83%BC%E3%82%B0%E3%83%AC%E3%82%B9%E3%83%90%E3%83%BC%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%20%E3%82%AD%E3%83%A3%E3%83%B3%E3%82%BB%E3%83%AB%E3%82%92%E6%8A%BC%E3%81%99%E3%81%A8%E3%80%81update(current_iteration)%20%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%81%8B%E3%82%89%201%20%E3%81%8C%E8%BF%94%E3%81%95%E3%82%8C%E3%80%81%E3%81%93%E3%82%8C%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%83%AB%E3%83%BC%E3%83%97%E3%82%92%E6%8A%9C%E3%81%91%E5%87%BA%E3%81%99%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%20%E3%83%97%E3%83%AD%E3%83%88%E3%82%BF%E3%82%A4%E3%83%97%3A%20%26gt%3B%20pb%20%3D%20New%20Object(ProgressBar(%3CMAX_ITERATION%3E%2C%20%3CITH_ITER_TO_PRINT%3E)%20%26gt%3B%20pb%20%26lt%3B%26lt%3B%20update(current_iteration)%20%26gt%3B%20pb%20%26lt%3B%26lt%3B%20close()%20%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%3A%20max_iteration%20-%20%E9%80%B2%E8%A1%8C%E7%8A%B6%E6%B3%81%E3%81%AE%E6%9C%80%E5%A4%A7%E5%8F%8D%E5%BE%A9%E5%9B%9E%E6%95%B0%20ith_iter_to_print%20-%20i%20%E7%95%AA%E7%9B%AE%E3%81%AE%E5%80%A4%E5%8D%B0%E5%88%B7%E3%81%99%E3%82%8B%E3%80%82%20Modulo(current_iteration%2C%20ith_iter_to_print)%20%E4%BE%8B%3A%20----------JSL-----------%20pb%20%3D%20New%20Object(ProgressBar(10%2C%201))%3B%20For(i%20%3D%201%2C%20i%20%26lt%3B%3D%2010%2C%20i%2B%2B%2C%20cancel_pressed%20%3D%20pb%20%26lt%3B%26lt%3B%20update(i)%3B%20If(cancel_pressed%20%3D%3D%201%2C%20Break()%3B%20)%3B%20wait(1)%3B%20)%3B%20pb%20%26lt%3B%26lt%3B%20%E9%96%89%E3%81%98%E3%82%8B%3B%20pb%20%26lt%3B%26lt%3B%20%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%92%E5%89%8A%E9%99%A4%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%20------------------------%20**************************%20*************************************************%20********************%2F%20%22ProgressBar%22%E3%80%81progressBarWidth%20%3D%20500%3B%E3%82%AD%E3%83%A3%E3%83%B3%E3%82%BB%E3%83%AB%20%3D%200%3B%20_init_%20%3D%20Method(%7Bmax_iteration%20%3D%201%2C%20ith_iter_to_print%20%3D%205%7D%2C%20this%3Acancel%20%3D%200%3B%20this%3Amax_iteration%20%3D%20max_iteration%3B%20this%3Awindow_ref%20%3D%20this%3Acreate()%3B%20this%3Ai_to_print%20%3D%20ith_iter_to_print%3B%20this%3Astart_time%20%3D%20HP%20Time()%20%3B%20)%3B%20create%20%3D%20Method(%7B%7D%2C%20aa_nw%20%3D%20Associative%20Array()%3B%20nw%20%3D%20New%20Window(%22Progress%20Bar%22%2C%20%2F%2F%20V%20List%20Box(%20Align(%22center%22)%2C%20%2F%2F%20cat%20%3D%20Text%20Box(%22%22)%2C%20%2F%2F%20work%20%E9%96%A2%E6%95%B0%E3%81%8B%E3%82%89%E3%81%AE%E5%87%BA%E5%8A%9B%20t%20%3D%20Text%20Box(%22%22%2C%20%26lt%3B%3CSETWRAP%3E%20%5EworkCalls%2F)%20runSeconds%5E%20ips%22))%3B%20this%3Awindow_ref%5B%22t%22%5D%20%26lt%3B%26lt%3B%20updatewindow%3B%20%2F%2F%20%E3%81%93%E3%82%8C%E3%81%AF%E5%BE%85%E6%A9%9F%E3%81%AA%E3%81%97%E3%81%A7%E5%8B%95%E4%BD%9C%E3%81%97%E3%81%BE%E3%81%99%20cancel_status%20%3D%20this%3Aget_cancel_status()%3B%20%E3%80%81%20%2F%2F%20catch%20%E3%81%AB%E3%82%88%E3%82%8B%E9%81%85%E5%BB%B6%E5%87%A6%E7%90%86%20cancel_status%20%3D%201%3B%20show(Exception_msg)%3B%20)%3B%20)%3B%20%2F*%20If(cancel_status%20%3D%3D%201%2C%20this%3Awindow_ref%5B%22left%22%5D%20%26lt%3B%26lt%3B%20color(%22dark%20red%22)%3B%20this%3Awindow_ref%5B%22right%22%5D%20%26lt%3B%26lt%3B%20color(%22red%22)%3B%20)%3B%20*%2F%20Return(cancel_status)%3B%20)%3B%20close%20%3D%20Method(%7B%7D%2C%20Try(%20this%3Awindow_ref%5B%22nw%22%5D%20%26lt%3B%26lt%3B%20%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%82%92%E9%96%89%E3%81%98%E3%82%8B%20)%20)%3B%20)%3B%20pb%20%3D%20New%20Object(ProgressBar(10%2C%201))%3B%20For(%20i%20%3D%201%E3%80%81i%20%26lt%3B%3D%2010%E3%80%81i%2B%2B%E3%80%81cancel_pressed%20%3D%20pb%20%26lt%3B%26lt%3B%20update(i)%3B%20If(cancel_pressed%20%3D%3D%201%2C%20Break()%3B%20)%3B%20wait(1)%3B%20)%3B%20pb%20%26lt%3B%26lt%3B%20%E9%96%89%E3%81%98%E3%82%8B%3B%20pb%20%26lt%3B%26lt%3B%20%E5%89%8A%E9%99%A4%E3%82%AF%E3%83%A9%E3%82%B9%3B%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%81%BF()%3B%3C%2FSETWRAP%3E%3C%2FITH_ITER_TO_PRINT%3E%3C%2FMAX_ITERATION%3E%3C%2FNOSCRIPT%3ENatural%20%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%81%AF%E6%AC%A1%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3CP%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22jthi_0-1636986289331.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_0-1636986289331.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_0-1636986289331.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_0-1636986289331.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_0-1636986289331.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F37594i4239F409B716437F%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22jthi_0-1636986289331.png%22%20alt%3D%22jthi_0-1636986289331.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3C%2FDIV%3E%3C%2FLINGO-BODY%3E
Choose Language Hide Translation Bar
Craige_Hales
Super User
Progress Bar with Cancel Button

Progress Bar  showed how to make a progress bar. @abmayfield  question in "not responding" vs. "still thinking"  prompted me to revisit this. Here's another take, including a cancel button.

not cancelednot canceled

Cancel button pressed.Cancel button pressed.

progressBarWidth = 500;
progressUpdatesSeconds = 1 / 4; // 1/2 sec updates -> 1300ips,  1/30 -> 1000ips (1/4 compromise speed vs appearance)
cancel = 0; // clear the cancel flag
New Window( "Progressbar demo", //
	V List Box( //
		cats = Text Box( "" ), // output from the work function
		t = Text Box( "", <<setwrap( 500 ) ), // status of the progressbar
		H List Box( // Duct tape has a light side and a dark side. So does the progressbar.
			left = Spacer Box( size( 0, 10 ), color( "light green" ) ), //
			right = Spacer Box( size( progressBarWidth, 10 ), color( "dark green" ) ), //
			<<padding( 5, 5, 5, 5 ), // gray wrapper
			<<backgroundcolor( "dark gray" ) //
		), //
		cancelButton = Button Box( "Cancel", cancel = 1 ) // sets the cancel flag
	)
);
Wait( 0 ); // allow the window to open, otherwise the updates are not visible

// progressbar variables
startMicroSeconds = HP Time();
workCalls = 0;
recentUpdateMicroSeconds = HP Time();
runSeconds = (recentUpdateMicroSeconds - startMicroSeconds) / 1e6; // so the loop can start
limitSeconds = 10; // time to run the demo

updateProgress = Function( {fractionComplete},
	leftsize = Round( progressBarWidth * fractionComplete );
	rightsize = progressBarWidth - leftsize;
	left << width( leftsize );
	right << width( rightsize );
	t << settext( Eval Insert( "^workCalls^ iterations in ^char(runSeconds,6,3)^ seconds -> ^workCalls/runSeconds^ ips" ) );
	t << updatewindow; // this works without the wait	
);

totalCats = 0;
dowork = Function( {},
	x = "";
	For( i = 1, i <= 1000, i += 1, x = x || "." );
	totalCats += 1000;
	cats << settext( Eval Insert( "total concatenations=^totalCats^" ) );
);

While( runSeconds < limitSeconds & !cancel, // change this to represent the work you are doing
	
	// do some work, simulated by concatenating strings...
	dowork();
	
	// update the progressbar
	workCalls += 1;
	nowMicroSeconds = HP Time();
	// how often does it need to update on the screen?
	If( (nowMicroSeconds - recentUpdateMicroSeconds) / 1e6 > progressUpdatesSeconds, 
		// in this example I'm using a fixed time duration of "limitSeconds" to represent the
		// amount of work to be done. And "runSeconds" to represent the amount of work done so far.
		// Usually you'll have something other than time: number of rows in a table perhaps, or
		// number of categories to make reports for. As long as you know how many total and how
		// many completed, you can compute this fraction...
		updateProgress( runSeconds / limitSeconds );  // change this to represent the fraction of work finished
		recentUpdateMicroSeconds = nowMicroSeconds;
		Wait( 0 ); // this wait is needed to let the cancel button work
	);
	runSeconds = (nowMicroSeconds - startMicroSeconds) / 1e6;
);

If( cancel, // test the cancel flag
	Beep(); // audio flag
	left << color( "dark red" ); // visual flag something is awry
	right << color( "red" );
, //
	updateProgress( 1.0 ); // people like to see the bar go to 100%
);
cancelButton << setbuttonname( "Close" ); // visual flag the button function is changed
cancelButton << setscript( (cancelButton << closewindow) ); // and what to do if the button is pressed

 

Testing between JMP 15 and 16, I noticed 16 is a lot faster on this string concatenation work load! Nice work!

 

Edit: if JMP is running a platform that does not have its own cancelable progress bar, and it runs for a long time, this is not going to help. Tech Support would be a good place to request the platform support for a progress bar. Without it, there is no way (short of forcibly closing JMP) to stop it until it is done.

Last Modified: Nov 5, 2021 11:04 AM
Comments