<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:g-custom="http://base.google.com/cns/1.0" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
  <channel>
    <title>TriSys Business Software</title>
    <link>https://www.trisys.co.uk</link>
    <description>The latest blog engine supercedes our blog engine at support.trisys.co.uk</description>
    <atom:link href="https://www.trisys.co.uk/feed/rss2" type="application/rss+xml" rel="self" />
    <image>
      <title>TriSys Business Software</title>
      <url>https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/t-300x300-d80a762c.png</url>
      <link>https://www.trisys.co.uk</link>
    </image>
    <item>
      <title>Annual Roadmap for 2026</title>
      <link>https://www.trisys.co.uk/annual-roadmap-for-2026</link>
      <description>TriSys 2026 will be a unified recruitment software client application built on Flexiva</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         We are planning some very exciting innovations and enhancements to the products and services of Business Software Group in 2026:
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;b&gt;&#xD;
        
            TriSys 2026
           &#xD;
      &lt;/b&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           We will be releasing the unified TriSys this year. This will be a single code base for all client-side software applications for PC's, servers and mobile devices such as recruitment CRM, browser extensions, office add-ins and all utilities. This unification is possible because of the work put in during 2025 to bring our technical stack up to the very latest modern standards, resulting in Flexiva. The smart-client temps booking sheet will be ported and we will be including AI CV/Resume searching for our on-demand cloud platform customers.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;b&gt;&#xD;
        
            Flexiva
           &#xD;
      &lt;/b&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Flexiva, hosted at
           &#xD;
      &lt;a href="https://www.flexiva.co.uk" target="_blank"&gt;&#xD;
        
            flexiva.co.uk
           &#xD;
      &lt;/a&gt;&#xD;
      
           , is a flexible and sophisticated framework for building enterprise cloud business software, utilising the latest development tools, components and AI.  The Flexiva code base is a private GitHub repository [repo]which can be licensed by partners to construct powerful line-of-business applications which connect to any ReST API, including the TriSys Web API. TriSys 2026 will become a Flexiva application.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;b&gt;&#xD;
        
            AI Search
           &#xD;
      &lt;/b&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We are designing artificial intelligence (AI) CV/Resume searching as well as searching historic tasks, documents, e-mail using the same AI technology. This brings AI centre stage for recruiters utilising our on-demand cloud platform.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           Partner Ecosystems
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We will be increasingly adopting industry standard services into TriSys to leverage things like mailing list outreach, SEO, blogging, financial services, payment gateways, accounting and payroll. The goal is to ensure that TriSys remains the top process hub for best-of-breed products and services, offering customers choice and no vendor lock-in.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           SMTP Legacy
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Microsoft will deprecate their simple mail transfer protocol in Q2 2026. We will be utilising our
          &#xD;
    &lt;a href="https://www.cloud-sync.email" target="_blank"&gt;&#xD;
      
           Cloud-Sync
          &#xD;
    &lt;/a&gt;&#xD;
    
          technology to start sending Microsoft e-mails for customers to replace SMTP.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Should you wish to discuss your plans for implementing any of the above products and services, or indeed if you have ideas or recommendations about recruitment technology you would like us to develop, then please
          &#xD;
    &lt;a href="/contact"&gt;&#xD;
      
           contact us
          &#xD;
    &lt;/a&gt;&#xD;
    
          .
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1486673748761-a8d18475c757.jpg" length="452211" type="image/jpeg" />
      <pubDate>Mon, 26 Jan 2026 11:59:58 GMT</pubDate>
      <guid>https://www.trisys.co.uk/annual-roadmap-for-2026</guid>
      <g-custom:tags type="string">flexiva,trisys cloud,trisys,.net,roadmap,business software group</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1486673748761-a8d18475c757.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1486673748761-a8d18475c757.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Cloud Platform Reliability</title>
      <link>https://www.trisys.co.uk/cloud-platform-reliability</link>
      <description>AWS Outage yesterday took down Bullhorn, our USA competitor.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Global Cloud Platform Failure
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Yesterday, 20 October 2025, Amazon Web Services (AWS) in the East Coast of the USA went offline due to technical issues. This took down a host of global web sites and services.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Within the recruitment software &amp;amp; services industry, all 'international' suppliers for example, Bullhorn, went down and were unavailable. This was entirely due to their lack of a robust cloud architecture in which they are built upon a single point of failure. If that 'point' fails, i.e. AWS US East, then their entire service fails also.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys' cloud platform utilises multiple cloud suppliers, and indeed multiple geographical 'zones', such that there is no single point of failure. Even if a specific service fails, we have built-in fault-tolerance to prevent any downtime for our customers.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Yesterday, when AWS US-East went off-line, 100% of our customers' products and services remained 100% operational.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           We built our cloud platform to provide global resilience for the benefit of our customers. Our competitors have obviously built their platform for their convenience and not for those of their customers. This clearly leaves customers in doubt that their interests are not being fully considered.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           It is not the first time that the global technology industry has seen major problems caused by the reliance on USA technology giants, and it won't be the last. The three largest cloud platforms, Google, Microsoft and Amazon have all had outages. In the worst case scenarios, the local problem is pushed out globally resulting in a complete outage of all services.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            If you were affected by yesterdays AWS outage, and do not want to risk further jeopardy of your services and your data, then please
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/contact"&gt;&#xD;
      
           contact us
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            to help you migrate back from your USA supplier to the UK.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Our
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="https://www.business-software.group/network" target="_blank"&gt;&#xD;
      
           server status page
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            is shown to the right and is always available to customers to see the status of our global cloud platform, built without a single point of failure on multiple fault-tolerant platforms.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/TriSys+Cloud+Platform+Oct+2025.png"/&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/pexels-photo-314726.jpeg" length="243092" type="image/jpeg" />
      <pubDate>Tue, 21 Oct 2025 08:28:09 GMT</pubDate>
      <guid>https://www.trisys.co.uk/cloud-platform-reliability</guid>
      <g-custom:tags type="string">Bullhorn,AWS</g-custom:tags>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/pexels-photo-314726.jpeg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/pexels-photo-314726.jpeg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys Aida - Artificial Intelligence Digital Assistant</title>
      <link>https://www.trisys.co.uk/trisys-aida-artificial-intelligence-digital-assistant</link>
      <description />
      <content:encoded>&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/trisys-aida-grey-border-1024x432-b531eeff.png" alt="TriSys Aida - Artificial Intelligence Digital Assistant"/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Welcome to TriSys Aida - Your Artificial Intelligence Digital Assistant
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys Aida is the revolutionary AI recruitment technology designed by TriSys allowing your recruitment business teams to query your TriSys database using natural language.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys Aida offers Human-level understanding of real-world data coupled with unlimited data processing capabilities resulting in levels of productivity never before experienced.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Example use cases include the following:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            All candidate CV's stored in your TriSys database can be queried, summarised, compared, matched, presented and discussed with AIDA
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Candidate suitability for a specific role can be discussed with new levels of understanding thanks to AIDA
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            All your business process documentation can be indexed, queried and presented by AIDA
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Your Clients and candidates can engage with your organisation via your website equipped with TriSys AIDA
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Anything is possible using AIDA thanks to it's flexible architecture
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys Aida learns from your data, learns with you and from you and works with you.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In the digital economy, nothing comes close to TriSys Aida - the future of recruitment business technology.
           &#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/AI+in+Recruitment.png" alt="A person is touching a robot 's hand with their finger."/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys Aida is developed specifically for your recruitment business and can process millions of documents, creating billions of interconnected data points thanks to the power of advanced neural network technology.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Learn more about Aida
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/aida---recruitment-ai"&gt;&#xD;
      
           today
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            or
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/contact"&gt;&#xD;
      
           contact
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            TriSys to request a solution demonstration. You may also directly contact your TriSys account manager to request additional information including a personalised demonstration.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/trisys-artificial-intelligence-grey-border-1024x432.png" alt="TriSys Aida - Artificial Intelligence Digital Assistant for Recruitment"/&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/AI+in+Recruitment.png" length="428758" type="image/png" />
      <pubDate>Tue, 25 Jun 2024 16:13:03 GMT</pubDate>
      <author>francisco@trisys.co.uk (Francisco Janes)</author>
      <guid>https://www.trisys.co.uk/trisys-aida-artificial-intelligence-digital-assistant</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/AI+in+Recruitment.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/AI+in+Recruitment.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys Mobile App 2024</title>
      <link>https://www.trisys.co.uk/mobile-2024</link>
      <description>The newest version of TriSys Mobile is now available for Apple and Android users</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys Mobile 2024
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/TriSys+Mobile+2024+Devices+Only.png" alt="A bunch of cell phones are lined up on a white background."/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In Q1 this year, we re-factored our mobile app for the popular stores.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           We have introduced a more colourful experience based on the user-interface styles adopted by most iPhone apps.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Customers are able to consume all of their recruitment data on the move and make phone calls, send SMS/WhatsApp messages and e-mail messages, and much more.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Our mobile app utilises the full
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/apex-cloud-suite"&gt;&#xD;
      
           TriSys Platform
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            via
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/web-api"&gt;&#xD;
      
           Web API
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            allowing custom functionality to be added cost effectively. Customer are invited to
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/contact"&gt;&#xD;
      
           commission us
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            to build custom mobile apps.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            You can learn more about this app by
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/mobile-apps"&gt;&#xD;
      
           clicking here
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-920382.jpeg" length="196672" type="image/jpeg" />
      <pubDate>Tue, 02 Apr 2024 11:09:12 GMT</pubDate>
      <author>garry@trisys.co.uk (Garry Lowther)</author>
      <guid>https://www.trisys.co.uk/mobile-2024</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-920382.jpeg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-920382.jpeg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Top and Bottom Grid Paging</title>
      <link>https://www.trisys.co.uk/top-and-bottom-grid-paging</link>
      <description>Top and Bottom Grid Paging now also available in TriSys Apex</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Introducing New Grid Paging Options
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys Apex users are now able to see grid paging controls located both at the top and bottom of grids, enabling faster and more convenient grid paging:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Top+and+Bottom+Grid+Paging+Actual+Grid+Controls.png" alt="A screenshot of a website showing the top and bottom grid paging controls"/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The new grid pager position options can be found under User Options:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Top+and+Bottom+Grid+Paging.png" alt="A screenshot of a user options page with arrows pointing to different sections."/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The original grid pager position ("Bottom") is still available and users are also able to select a further new option ("Top") in addition to "Top and Bottom" as shown above.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Top+and+Bottom+Grid+Paging+All+Options-2fb9d3a9.png" alt="A diagram showing the top and bottom of a page"/&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-1181263.jpeg" length="293936" type="image/jpeg" />
      <pubDate>Mon, 18 Mar 2024 13:40:35 GMT</pubDate>
      <author>francisco@trisys.co.uk (Francisco Janes)</author>
      <guid>https://www.trisys.co.uk/top-and-bottom-grid-paging</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-1181263.jpeg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-1181263.jpeg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Editable Contact Previews</title>
      <link>https://www.trisys.co.uk/editable-contact-previews</link>
      <description>TriSys Apex now features editable contact previews designed to streamline your cloud recruitment database experience.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Introducing Editable Contact Previews in TriSys Apex
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           A key productivity update has been rolled out for TriSys Apex enabling the editing of contact fields directly from within contact grids.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This new functionality reduces the time required to complete key contact field updates whilst streamlining the end user experience, resulting in an optimised workflow where users can simply open the quick contact preview window, make required edits to the contact fields and save the changes, all on the same page and repeating the process for any contacts shown in contact grids.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The process is explained below:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ol&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Open contact preview
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Edit any required contact fields (Comments, Personal and/or Work contact fields)
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Save/update the contact record and repeat for the next contact in the contacts grid
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ol&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Quick+Contact+Preview+Explainer.png" alt="A screenshot of a web page with a green save edit button"/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This functionality is available across TriSys Apex as follows:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            All contact grids (as shown in above image) such as search results, longlists, shortlists, saved searches, company contacts and more
            &#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Contact records (although not strictly required in this scenario as a contact record which is already open can be edited directly)
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           As always we welcome your feedback and look forward to helping with any questions relating to TriSys Apex as well as our comprehensive product and services portfolio.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            ﻿
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Video Overview
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Betsy+Palmer+Quick+Preview-a6143049.png" length="311414" type="image/png" />
      <pubDate>Wed, 13 Mar 2024 17:03:55 GMT</pubDate>
      <author>francisco@trisys.co.uk (Francisco Janes)</author>
      <guid>https://www.trisys.co.uk/editable-contact-previews</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Contact+Preview.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Betsy+Palmer+Quick+Preview-a6143049.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Cloud Remote Desktop - Latest News</title>
      <link>https://www.trisys.co.uk/remote-desktop-in-the-cloud</link>
      <description>TriSys Cloud Remote desktop for recruitment professionals. Cloud hosted recruitment software.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Cloud Remote Desktop - Latest News
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;div&gt;&#xD;
    
          An upgrade has been rolled out to the TriSys Cloud Remote Desktop service re-enabling TriSys Customers to securely connect to their remote desktop service directly from the latest version of their Google Chrome or Microsoft Edge web browsers.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys Customers using the TriSys Cloud Remote Desktop service can therefore resume their connectionsfrom any device running a modern web browser and also from within computers networks with highly restrictive security controls such as for example those found in Hotels or Airports which typically only allow web browsing and not protocols such as for example the Microsoft Remote Desktop (MS RDP protocol).
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Simply visit the TriSys customer
          &#xD;
    &lt;a href="https://support.trisys.co.uk" target="_blank"&gt;&#xD;
      
           support portal
          &#xD;
    &lt;/a&gt;&#xD;
    
           where you will login and then click "Remote Desktop" where you will be able to connect to your remote desktop directly from your web browser.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Should you wish to learn more about the TriSys Cloud Remote Desktop please contact us or visit our Remote Desktop page.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a href="/remote-desktop" target="_blank"&gt;&#xD;
    &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/trisys-remote-desktop-2020-1-1920w.png" alt="A computer screen with a bunch of windows open"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/RDS+Remote+Desktop.png" length="110391" type="image/png" />
      <pubDate>Tue, 12 Mar 2024 16:36:18 GMT</pubDate>
      <author>francisco@trisys.co.uk (Francisco Janes)</author>
      <guid>https://www.trisys.co.uk/remote-desktop-in-the-cloud</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/RDS+Remote+Desktop.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/RDS+Remote+Desktop.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Annual Roadmap for 2024</title>
      <link>https://www.trisys.co.uk/annual-roadmap-for-2024</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         We are planning some very exciting innovations and enhancements to the products and services of TriSys Business Software in 2024:
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;b&gt;&#xD;
        
            TriSys Apex  2024
           &#xD;
      &lt;/b&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Our
           &#xD;
      &lt;a href="/apex-cloud-suite"&gt;&#xD;
        
            cross-platform web browser recruitment CRM
           &#xD;
      &lt;/a&gt;&#xD;
      
           was released in 2014 and uses the TriSys cloud platform to process all its data and functionality. Customers with any type of computer, tablet or phone can access their recruitment data and conduct sophisticated workflows to drive their business forward, wherever they are and at any time. We plan a number of innovations this year, including the port of the temps booking sheet, and integration of AI.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys 2024
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The latest version of our premiere
          &#xD;
    &lt;a href="/recruitment-crm"&gt;&#xD;
      
           windows desktop recruitment CRM
          &#xD;
    &lt;/a&gt;&#xD;
    
          is now available to all existing customers. This application was first released in 1992 and is a rock-solid enterprise grade recruitment business app. For customers on the 2023 version, the application will automatically upgrade. All new features will be documented in the coming months. Our
          &#xD;
    &lt;a href="/sdk"&gt;&#xD;
      
           SDK
          &#xD;
    &lt;/a&gt;&#xD;
    
          is still the only recruiting software toolkit for Microsoft .Net. TriSys for the
          &#xD;
    &lt;a href="https://www.microsoft.com/store/apps/9N5TFLT6JST4" target="_blank"&gt;&#xD;
      
           Microsoft Store
          &#xD;
    &lt;/a&gt;&#xD;
    
          was delivered using Visual Studio 2022.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           Flexiva
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We have devised a concept we are calling Flexiva, hosted at
          &#xD;
    &lt;a href="http://www.flexiva.co.uk" target="_blank"&gt;&#xD;
      
           flexiva.co.uk
          &#xD;
    &lt;/a&gt;&#xD;
    
          , which is a flexible visual app builder for enterprise cloud business software, utilising the new breed of no-code or low-code tools. Flexiva will be be a sophisticated app builder, initially housed within
          &#xD;
    &lt;a href="/apex-cloud-suite"&gt;&#xD;
      
           TriSys Apex
          &#xD;
    &lt;/a&gt;&#xD;
    
          , which will evolve to replace the existing
          &#xD;
    &lt;a href="https://www.trisys.co.uk/developing-custom-web-and-mobile-apps" target="_blank"&gt;&#xD;
      
           Developer Studio
          &#xD;
    &lt;/a&gt;&#xD;
    
          , by providing higher level tools to allow business people, rather than programmers, to construct powerful line-of-business applications which connect to any ReST API.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys Cloud Platform
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Our
          &#xD;
    &lt;a href="/business-cloud"&gt;&#xD;
      
           cloud infrastructure platform
          &#xD;
    &lt;/a&gt;&#xD;
    
          was conceived and built in 2002. It has grown and matured to comprise literally hundreds of cloud servers distributed across the planet. Customers use our platform to store and process their large corporate data assets, via our software products and services. Expect more integration with world class web services, including artificial intelligence, through our
          &#xD;
    &lt;a href="https://api.trisys.co.uk" target="_blank"&gt;&#xD;
      
           Web API
          &#xD;
    &lt;/a&gt;&#xD;
    
          .
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           Third Party Integrations
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The TriSys Recruitment Software Platform enables unlimited integration flexibility including standard and complex integrations across multiple popular third party industry suppliers enabling you to use TriSys as a process hub offering a single source of truth. We have recently built a sophisticated integration with
          &#xD;
    &lt;a href="/zapier"&gt;&#xD;
      
           Zapier
          &#xD;
    &lt;/a&gt;&#xD;
    
          , and this year we will fully integrate with additional best-of-breed
          &#xD;
    &lt;a href="/integrations"&gt;&#xD;
      
           third party business platforms
          &#xD;
    &lt;/a&gt;&#xD;
    
           including artificial intelligence (AI).
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys Mobile Suite
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Recruiters can access their recruitment database from their tablet and phone by installing our
          &#xD;
    &lt;a href="/mobile-apps"&gt;&#xD;
      
           app
          &#xD;
    &lt;/a&gt;&#xD;
    
          , however the mobile landscape is changing with a new class of 'app-builders' utilising low-code or no-code technologies. Due to the power and flexibility of the TriSys Web API, Recruitment agencies can cost-effectively commission their own dedicated and branded mobile app to engage with their clients and candidates. A new truly-native version of TriSys mobile will be released to the stores in Q1 2024.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys Web API
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Almost all our recent innovations centre around our
          &#xD;
    &lt;a href="https://api.trisys.co.uk" target="_blank"&gt;&#xD;
      
           web application programming interface
          &#xD;
    &lt;/a&gt;&#xD;
    
          which provides a fully secure set of programmable end-points not just into the TriSys Cloud Platform, but also to a host of third party global ecosystems, to provide customers with unlimited flexibility to deploy a range of sophisticated recruiting business benefits. Web API plans for 2024 are to add mobile app-specific functionality allowing the TriSys platform to reach a wider range of customers by utilising AI.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys Platformix
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Five years ago, we introduced a
          &#xD;
    &lt;a href="/website-builder"&gt;&#xD;
      
           website builde
          &#xD;
    &lt;/a&gt;&#xD;
    
          r technology utilising a mix of cloud platforms, which we called
          &#xD;
    &lt;a href="https://www.platformix.co.uk" target="_blank"&gt;&#xD;
      
           Platformix
          &#xD;
    &lt;/a&gt;&#xD;
    
          . This is the successor to Web Jobs in that it is a full recruitment website content management system (CMS) with very tight integration with the TriSys recruiting database, plus state of the art blogging, SEO compliancy, and analytics. We will continue to invest in building TriSys Widgets to allow our customers to build high engagement web portals. We will also continue integration with Stripe to allow Gig-Economy services to be built for our customers.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;b&gt;&#xD;
        
            TriSys Open Source
           &#xD;
      &lt;/b&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We now have full GitHub source code integration with all our software build tools, meaning that TriSys is now the only commercial recruitment software vendor to offer an open-source model. From 1st January 2024, existing customers are able to license TriSys' source code to build their own highly-specific recruitment CRM app for desktop, mobile and web. We are also planning to partner with other organisations to build complex line of business applications for all industries, based upon the thousands of man-years development and testing which has been invested in the TriSys Platform code base.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys Remote Desktop
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The original TriSys ASP was launched
          &#xD;
    &lt;a href="https://www.trisys.co.uk/trisys-asp-is-now-trisys-remote-desktop" target="_blank"&gt;&#xD;
      
           22 years ago
          &#xD;
    &lt;/a&gt;&#xD;
    
          , and comprises a
          &#xD;
    &lt;a href="/remote-desktop"&gt;&#xD;
      
           windows hosted desktop
          &#xD;
    &lt;/a&gt;&#xD;
    
          running on our cloud. Last year we launched a Windows 11 version with full compatibility with Microsoft Office 365 allowing customers to have full control over the apps they can install. This year we will continue to support all Microsoft supported versions of Windows.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Should you wish to discuss your plans for implementing any of the above products and services, or indeed if you have ideas or recommendations about recruitment technology you would like us to develop, then please
          &#xD;
    &lt;a href="/contact"&gt;&#xD;
      
           contact us
          &#xD;
    &lt;/a&gt;&#xD;
    
          .
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-1133505.jpeg" length="573228" type="image/jpeg" />
      <pubDate>Mon, 05 Feb 2024 11:05:30 GMT</pubDate>
      <author>garry@trisys.co.uk (Garry Lowther)</author>
      <guid>https://www.trisys.co.uk/annual-roadmap-for-2024</guid>
      <g-custom:tags type="string">roadmap</g-custom:tags>
      <media:content medium="image" url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-1133505.jpeg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-1133505.jpeg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Real-Time E-Mail Synchronisation</title>
      <link>https://www.trisys.co.uk/real-time-e-mail-synchronisation</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Announcing Real-Time E-Mail Synchronisation for your Business
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/cloud-sync-web-site.png" alt="A group of people are standing around a blue envelope."/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Wouldn't it be fabulous if your staff could open any database contact record and immediately see a real-time log of all sent/received e-mail communications using both on-premise as well as popular e-mail service providers such as Microsoft365, GMail and others?
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            This is exactly what is possible with the newest
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/cloud-sync"&gt;&#xD;
      
           TriSys Cloud-Sync service
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      
           , a modern, secure, transparent and real-time service designed to centralise your e-mail communications and enabling your staff to make high-quality decisions faster than ever.
           &#xD;
      &lt;span&gt;&#xD;
        
            ﻿
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a href="/cloud-sync"&gt;&#xD;
    &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/sync-email-security.jpg" alt="A man in a suit is holding a tablet with an envelope and a shield coming out of it."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           What are The Benefits of E-Mail Synchronisation?
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Integrating email data into your CRM database provides a comprehensive view of customer interactions. This helps in understanding customer preferences, behaviour, and communication history, leading to more informed decision-making.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Unified Communication:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Email synchronisation ensures that communication is centralized and easily accessible in one location, typically within the organization's Customer Relationship Management (CRM) system. This unified view facilitates better collaboration and coordination among team members.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           360-Degree View of Customer Interactions:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Integrating email data into the CRM provides a comprehensive view of customer interactions. This helps in understanding customer preferences, behaviour, and communication history, leading to more informed decision-making.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Time Efficiency:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Automated email synchronisation reduces the need for manual data entry, saving time for employees. Team members can focus on their core tasks instead of spending time on administrative activities like copying emails into the CRM.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Enhanced Customer Service:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Quick access to a complete customer communication history allows customer service teams to provide more personalized and effective support. This can lead to faster issue resolution and improved customer satisfaction.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Sales Enablement:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Sales teams benefit from having a consolidated view of customer interactions. This improves lead and opportunity management, allowing sales representatives to tailor their approach based on the customer's history and preferences.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Data Accuracy and Consistency:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Automated synchronisation reduces the risk of data entry errors and ensures that information in the CRM is accurate and up-to-date. This contributes to better decision-making and reliable reporting.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Compliance and Security:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Centralizing email data within the CRM helps organizations maintain compliance with data protection regulations. It also enhances security by providing better control and monitoring of access to sensitive communication data.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Workflow Optimization:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Email synchronisation enables the creation of automated workflows triggered by email interactions. This can improve process efficiency, streamline tasks, and ensure timely follow-ups on customer interactions.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Analytical Insights:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Integrating email data into analytics and reporting tools provides valuable insights into customer behaviour and communication trends. This data can inform strategic decisions and marketing initiatives.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Scalability and Adaptability:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Email synchronisation solutions are often scalable, accommodating the needs of growing organizations. They can be adapted to changing business requirements, ensuring that the system remains effective as the organization evolves.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In summary, email synchronisation is a strategic investment for organizations, offering a range of benefits that positively impact communication, customer relationships, and overall operational efficiency.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;a href="/contact"&gt;&#xD;
      
           Learn more today - get in touch to request a service demonstration.
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/sync-email-security.jpg" length="55549" type="image/jpeg" />
      <pubDate>Tue, 28 Nov 2023 16:08:01 GMT</pubDate>
      <author>francisco@trisys.co.uk (Francisco Janes)</author>
      <guid>https://www.trisys.co.uk/real-time-e-mail-synchronisation</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/sync-email-security.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/sync-email-security.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Announcing a New TriSys Integration: Daxtra Search Nexus and Capture</title>
      <link>https://www.trisys.co.uk/announcing-a-new-trisys-integration-daxtra-search-nexus-and-capture</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Announcing a New TriSys Integration: Daxtra Search Nexus and Capture
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            TriSys Business Software is excited to announce a new integration with Daxtra, a leader in intelligent recruitment automation solutions.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/DaXtra_Logo_1000x400-768x307.png" alt="The daxtra logo is black and green on a white background."/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Daxtra Search Nexus and Daxtra Capture are now integrated with the TriSys Cloud Platform, to help customers reduce the time and cost per placement through powerful search, match and automation.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Daxtra’s AI-powered products are built using natural language processing and search technology. Daxtra’s integration with TriSys will allow users to streamline their recruiting workflows. 
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            The new
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="https://www.daxtra.com/resume-database-software/resume-matching-software/" target="_blank"&gt;&#xD;
      
           Daxtra Search Nexus
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            integration will allow TriSys users to search and match candidates and requirements in their TriSys database, as well as from job boards, social networks and more, without leaving TriSys.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="https://www.daxtra.com/resume-database-software/cv-analysis-software/" target="_blank"&gt;&#xD;
      
           Daxtra Capture
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            will allow TriSys users to automate candidate data management, so they can create, update and deduplicate candidate records with ease. 
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Both solutions fully integrate with TriSys - here’s how they can work for you:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Daxtra Search Nexus
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;a href="https://info.daxtra.com/daxtra-search-nexus" target="_blank"&gt;&#xD;
      
           Daxtra Search Nexus
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            helps you unlock the value of your candidate database, enabling you to find the best candidates faster with advanced search technology. 
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Search across your database and external sources (including job boards or social media) from one platform
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            View candidate results intelligently ranked by relevance (based on the context of their CV)
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Shortlist and/or download CVs into TriSys with a single action 
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Search precisely with AI-powered semantic search technology
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;span&gt;&#xD;
          
             Remove the need to perform
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/span&gt;&#xD;
      &lt;a href="https://info.daxtra.com/blog/video-are-you-really-still-using-boolean-to-find-candidates" target="_blank"&gt;&#xD;
        
            complex Boolean searches
           &#xD;
      &lt;/a&gt;&#xD;
      &lt;span&gt;&#xD;
        
             
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Daxtra Capture 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;a href="https://www.daxtra.com/resume-database-software/cv-analysis-software/" target="_blank"&gt;&#xD;
      
           Daxtra Capture
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            is a workflow solution that can automatically manage candidate data in seconds. It can also seamlessly load candidate data into your CRM, ensuring no duplicate records are created.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Automatically load incoming CVs (from monitored mailboxes, web portals and shared network folders) into TriSys as they arrive
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Create, update and deduplicate candidate records in seconds – without the need for consultant intervention 
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Save time on admin by automating CV loading and processing candidate data 
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Get a more reliable database of candidates that your consultants trust as the first source to place candidates from 
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;span&gt;&#xD;
          
             Make CVs available to recruiters quickly for even faster placements 
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The goal of this integration is to enable all TriSys customers to source, match and shortlist the best candidates faster than ever before, increasing productivity, reducing time to deliver CVs and generating additional revenue for your business.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Daxtra Products in TriSys
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Currently, Daxtra solutions are available in TriSys Apex Recruitment Software. Enabling Daxtra in the TriSys SmartClient Recruitment Software
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           and Desktop Application is part of our product roadmap.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;a href="https://info.daxtra.com/daxtra-request-a-demo" target="_blank"&gt;&#xD;
      
           Once you have licensed the solutions you need from Daxtra
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      
           , there are three ways to use Daxtra Search Nexus within TriSys: 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           1. Contact Records
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           When opening a contact record, you’ll find the Daxtra menu located in the top right.
           &#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Daxtra-Menu-Contact-Record.png" alt="A green arrow is pointing to the word daxtra"/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Match Requirements:
           &#xD;
      &lt;/span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;span&gt;&#xD;
          
             match candidate against the requirements 
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;span&gt;&#xD;
          
             Match Candidates:
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            match candidate to similar candidates 
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Choosing e
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ither option will open Daxtra Search Nexus on a new browser page. From there, you can run fully integrated workflows, like shortlisting candidates in TriSys, adding candidates to saved searches and more – directly within Daxtra Search Nexus. 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            ﻿
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           2. Requirement Records
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           When opening a requirement record, you’ll find the Daxtra menu located at the top right.
            &#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Daxtra-Requirement-Record.png" alt="A computer screen with a green arrow pointing to a button."/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Clicking either of these options will open Daxtra Search Nexus on a new browser page. 
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Daxtra-Menu-Requirement-Record.png" alt="A green arrow is pointing to the word daxtra"/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;span&gt;&#xD;
          
             Match Candidates:
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Match candidates to the requirement record
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;span&gt;&#xD;
          
             Search:
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Run candidate searches
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Just like with contact records, you can run integrated workflows within Daxtra after selecting an option from the drop-down menu. 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            ﻿
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           3. Left Navigation Menu Area
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           You can also open Daxtra Search Nexus directly from the left navigation bar (expand “Saved Searches” to see the Daxtra Search Nexus menu).
            &#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Daxtra-Search-NEXUS-Left-Navigation-Bar-da9ddad8.png" alt="A screenshot of a website called daxtra"/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h2&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h2&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Take the next steps
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            `Want to incorporate Daxtra solutions into your TriSys tech stack?
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/contact"&gt;&#xD;
      
           Contact TriSys
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            to request additional information today. 
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            ﻿
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           About Daxtra
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            ﻿
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Daxtra specialises in intelligent recruitment automation, semantic search and match, and multilingual CV/resume and job parsing in 40+ languages. Our technology, built on AI and machine learning, seamlessly integrates with a recruitment ATS or CRM. Headquartered in the UK, we have experience in developing innovative recruitment software since 2002 and support 2,500+ clients globally via offices across Europe, North America and Asia-Pacific. 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            ﻿
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           About TriSys
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys Business Software specialise in modern, innovative and user-friendly recruitment software solutions fully integrated with key recruitment industry services and suppliers, offering best-value services available anywhere, at any time and on any device. TriSys offers unrivalled superior technical excellence, combined with superior levels of service, customer care and performance for your recruitment business, ensuring best value for money. Our extensive expertise in developing robust enterprise-grade business software designed to meet the complex needs of your recruitment business industry is guaranteed to help you succeed no matter how complex your needs. 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            ﻿
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a href="/contact"&gt;&#xD;
    &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/TriSys-Daxtra-Integration.png" alt="A blue and white sign that says new integration powerful search match and automation"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Daxtra-Search-Nexus-TriSys-Integration-0d4b4789.png" length="672846" type="image/png" />
      <pubDate>Fri, 24 Nov 2023 11:31:58 GMT</pubDate>
      <author>francisco@trisys.co.uk (Francisco Janes)</author>
      <guid>https://www.trisys.co.uk/announcing-a-new-trisys-integration-daxtra-search-nexus-and-capture</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Daxtra+Search+Nexus+TriSys+Integration-0d4b4789.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Daxtra-Search-Nexus-TriSys-Integration-0d4b4789.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Human-AI Collaboration: Enhancing Recruitment Efficiency with ChatGPT</title>
      <link>https://www.trisys.co.uk/human-ai-collaboration-enhancing-recruitment-efficiency-with-chatgpt</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Enhancing Recruitment Efficiency with ChatGPT
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Chat-GPT-in-Recruitment-Banner.png" alt="A person is pressing a button with a group of people in a circle."/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In the ever-evolving landscape of recruitment, the integration of artificial intelligence (AI) has become a game-changer. Among the emerging technologies, ChatGPT stands out as a powerful tool, offering recruitment consultants new avenues for enhancing efficiency and decision-making. This blog post explores the concept of "Human-AI Collaboration" in the recruitment industry, shedding light on how ChatGPT can be a valuable ally for professionals in the field.
           &#xD;
      &lt;span&gt;&#xD;
        
            ﻿
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ChatGPT, powered by advanced language models, excels in natural language understanding and generation. This makes it an ideal candidate for improving various aspects of the recruitment process. Here's how ChatGPT can contribute:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Understanding Human-AI Collaboration
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Human-AI collaboration is not about replacing humans with machines but rather leveraging the strengths of both. In the context of recruitment, it involves using AI tools like ChatGPT to complement and enhance the capabilities of human recruiters. While technology can handle repetitive and time-consuming tasks, human intuition, empathy, and nuanced understanding remain irreplaceable.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The Role of ChatGPT in Recruitment
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ChatGPT, powered by advanced language models, excels in natural language understanding and generation. This makes it an ideal candidate for improving various aspects of the recruitment process. Here's how ChatGPT can contribute:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           1. Automated Initial Candidate Interaction:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ChatGPT can be deployed for preliminary candidate interactions, handling routine queries, and collecting basic information. This frees up human recruiters to focus on more complex aspects of the hiring process.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           2. Enhanced Resume Screening:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The ability of ChatGPT to analyze and understand textual information can be harnessed for efficient resume screening. It can identify key skills, experiences, and qualifications, providing recruiters with a shortlist of the most relevant candidates.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           3. Personalized Candidate Engagement:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           AI models like ChatGPT can learn from ongoing interactions, continuously improving their understanding of industry trends, specific job roles, and even company preferences. This adaptability ensures a dynamic and evolving recruitment tool.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           4. Continuous Learning and Adaptation:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ChatGPT can assist in creating personalized engagement strategies for candidates. From interview scheduling to providing information about the company culture, it adds a touch of personalization to the recruitment process.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Striking the Right Balance
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           While ChatGPT brings undeniable advantages, successful Human-AI collaboration is about finding the right balance. Here are key considerations:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           1. Ethical use of AI:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Human recruiters should maintain oversight throughout the process. While ChatGPT can handle many tasks, human judgment is crucial for making final decisions, especially in nuanced situations.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            ﻿
           &#xD;
      &lt;/span&gt;&#xD;
      
           2. Transparency with Candidates:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           As we embrace the era of Human-AI collaboration in recruitment, the industry is poised for a significant transformation. The synergy between human intuition and AI capabilities opens up new possibilities for efficiency, diversity, and strategic decision-making.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           3. Human Oversight:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Human recruiters should maintain oversight throughout the process. While ChatGPT can handle many tasks, human judgment is crucial for making final decisions, especially in nuanced situations.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The Future of Recruitment
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           As we embrace the era of Human-AI collaboration in recruitment, the industry is poised for a significant transformation. The synergy between human intuition and AI capabilities opens up new possibilities for efficiency, diversity, and strategic decision-making.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            ﻿
           &#xD;
      &lt;/span&gt;&#xD;
      
           In conclusion, ChatGPT is not a replacement for human recruiters but a valuable collaborator. By integrating this powerful tool into the recruitment workflow, consultants can streamline processes, make more informed decisions, and ultimately deliver better outcomes for both candidates and employers. The future of recruitment is collaborative, where human expertise and AI intelligence work hand in hand to shape a more efficient and effective industry.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Chat-GPT-in-Recruitment-65e50513.png" length="233628" type="image/png" />
      <pubDate>Thu, 23 Nov 2023 10:30:04 GMT</pubDate>
      <author>francisco@trisys.co.uk (Francisco Janes)</author>
      <guid>https://www.trisys.co.uk/human-ai-collaboration-enhancing-recruitment-efficiency-with-chatgpt</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Chat-GPT-in-Recruitment-65e50513.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Chat-GPT-in-Recruitment-65e50513.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Pair Programming with ChatGPT</title>
      <link>https://www.trisys.co.uk/pair-programming-with-chatgpt</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            This afternoon, I researched how to construct intrinsic load balancing within our existing production
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="https://postman.trisys.co.uk/" target="_blank"&gt;&#xD;
      
           Web API
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            to take advantage of multiple Web API servers on the
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/business-cloud"&gt;&#xD;
      
           TriSys Cloud Platform
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            I decided to use ChatGPT, given the extremely high profile of
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="https://openai.com/" target="_blank"&gt;&#xD;
      
           OpenAI's
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            flagship service after the
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="https://www.bbc.co.uk/news/business-67494165" target="_blank"&gt;&#xD;
      
           amazing events
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            over these last few days.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The dialogue between myself and ChatGPT was akin to me working with another ASP.Net Web API expert who knew more about specific topics than I did, however it was necessary for me to test the generated code and indeed suggest a fix to an issue which prevented the code working in a live environment.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Me: In ASP.NET Web API, how can I route a request to another Web API server?
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ChatGPT: In ASP.NET Web API, routing a request from one Web API server to another is a task that typically involves creating a proxy or a forwarding mechanism within your API. This is useful in scenarios like load balancing, microservices architecture, or when integrating with external APIs. Here's a basic approach to achieve this: &amp;lt;code....&amp;gt;
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Me: With regards to Handling the Response and your advice: Once you receive the response from the target server, you can either directly return this response to the client or process/modify it as necessary. Can you supply .NET code which demonstrates this?
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ChatGPT: &amp;lt;code...&amp;gt;
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           After numerous exchanges like this over 20 minutes, and much copy and pasting, I had working code running in the Visual Studio debugger which was remoted to allow my Postman session to make Web API requests. Eventually, we arrived at a working solution. Obviously I asked ChatGPT to summarise this work for this blog post:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Title: Simplifying Load Balancing in Web Applications
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           When building a robust web application, ensuring that it can handle multiple users smoothly is crucial. This is where 'load balancing' comes in - it's like having several doors to a shop, so customers don’t have to queue up at just one. In technical terms, we're distributing the user requests across multiple servers.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In our journey, we encountered a few hurdles and solved them one by one. Here’s how we did it:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           1.   The Art of Forwarding Requests: Imagine you’re sending letters (user requests) to a friend (the server). But instead of one friend, you have several who can respond. We created a system where these letters are sent to any one of your friends who's available, ensuring no single friend is overwhelmed.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           2.   Addressing the Envelopes Correctly: We hit a snag - the letters were being sent, but they had the wrong return address, confusing the recipients. By adjusting the 'return address' on the letters (known as the Host header in web terms), we made sure each letter reached its destination correctly.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           3.   The Right Stamp for the Letter: Initially, we were putting every possible stamp (headers) on the letters, but not all were needed. So, we carefully selected only the necessary stamps, making sure the letters weren’t overloaded with unnecessary information.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           4.   Dealing with Misdirection: At one point, our letters were being sent correctly, but they seemed to vanish - like sending them to a house that doesn’t exist (HTTP 404 error). After double-checking the address and making sure our friends were ready to receive the letters, we fixed this issue.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           5.   Open Lines of Communication: Finally, we made sure that the way we send letters (synchronous vs. asynchronous communication) was efficient. This ensured that our system could handle many letters at once without getting bogged down.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In essence, we fine-tuned the process of directing traffic to ensure a smooth experience for the users. It’s like ensuring a well-organized event where guests can move freely without any bottlenecks.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
             
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This analogy should help non-technical readers understand the complexity behind load balancing in a web application in a more relatable way. Feel free to adjust the language or details to better suit your blog's style and audience!
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-177598.jpeg" length="930298" type="image/jpeg" />
      <pubDate>Wed, 22 Nov 2023 16:35:35 GMT</pubDate>
      <author>garry@trisys.co.uk (Garry Lowther)</author>
      <guid>https://www.trisys.co.uk/pair-programming-with-chatgpt</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-177598.jpeg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-177598.jpeg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Best Practice for Recruiters</title>
      <link>https://www.trisys.co.uk/best-practice-for-recruiters</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Recruiters can benefit from various good business practices in today's competitive job market. Here are some key practices that can help recruitment agencies and professionals succeed:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           1. Candidate-Centric Approach :
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             - Personalization : Tailor your communication and job recommendations to individual candidates, showing that you understand their unique skills and career goals.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             - Transparency : Be honest and transparent about job opportunities, including company culture, compensation, and job requirements.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           2. Leverage Technology :
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
              - Applicant Tracking System (ATS) : Use an ATS like
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/apex-cloud-suite"&gt;&#xD;
      
           TriSys
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            to streamline candidate management, automate administrative tasks, and enhance collaboration among team members.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             - AI and Data Analytics : Implement AI-driven tools for candidate sourcing, screening, and predictive analytics to make data-informed decisions.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           3. Build Strong Employer Relationships :
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             - Understanding Client Needs : Take the time to understand your clients' businesses, their cultures, and their specific hiring needs to provide better candidate matches.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             - Communication : Maintain open and consistent communication with clients to keep them informed about the recruitment process.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           4. Effective Networking :
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             - Online and Offline Networking : Build a strong professional network both online (e.g. LinkedIn) and offline (e.g. industry events). Networking can lead to referrals and valuable connections.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           5. Diversity and Inclusion :
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             - Diverse Candidate Sourcing : Make an effort to source candidates from diverse backgrounds, promoting inclusion and reducing bias in hiring.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             - Inclusive Language : Use inclusive language in job postings and communication to attract a broader range of candidates.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           6. Candidate Experience :
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             - Responsive Communication : Provide timely feedback and updates to candidates throughout the recruitment process.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             - Feedback Loop : Seek feedback from candidates about their experience and use it to improve your processes.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           7. Continuous Learning :
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             - Stay Informed : Keep up-to-date with industry trends, emerging technologies, and best practices in recruitment.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             - Professional Development : Invest in ongoing training and development for yourself and your team.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           8. Compliance and Ethics :
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             - Data Privacy : Ensure compliance with data protection regulations (e.g. GDPR) and handle candidate data responsibly.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             - Ethical Practices : Uphold ethical recruitment standards, treating all candidates and clients with fairness and respect.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           9. Measurable Metrics :
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             - Key Performance Indicators (KPI's) : Define and track KPIs to assess the effectiveness of your recruitment efforts, such as time-to-fill, quality of hire, and cost-per-hire.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           10. Adaptability :
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             - Flexibility : Be adaptable in responding to changes in the job market, economic conditions, and shifts in candidate expectations.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           11. Content Marketing :
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             - Content Creation : Share valuable content, such as blog posts, webinars, or whitepapers, to establish expertise in your niche and attract both clients and candidates.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           12. Client Education :
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             - Educate Clients : Help clients understand the importance of a streamlined and efficient hiring process, offering guidance on improving their hiring practices.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           13. Feedback Loop :
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             - Feedback and Improvement : Regularly gather feedback from both candidates and clients to identify areas for improvement in your processes.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Good business practices in recruitment not only enhance the quality of your service but also build trust with both candidates and clients. These practices can contribute to long-term success in the competitive field of recruitment.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            If you are considering starting a new recruitment agency, we published
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/startup-advice-w52hm"&gt;&#xD;
      
           some good advice
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            a few years ago.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-4344860.jpeg" length="208304" type="image/jpeg" />
      <pubDate>Wed, 11 Oct 2023 11:29:34 GMT</pubDate>
      <author>garry@trisys.co.uk (Garry Lowther)</author>
      <guid>https://www.trisys.co.uk/best-practice-for-recruiters</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-4344860.jpeg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-4344860.jpeg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>ChatGPT on TriSys Website</title>
      <link>https://www.trisys.co.uk/chatgpt-on-trisys-website</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ChatGPT on your website?
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            I
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/how-chatgpt-will-benefit-the-recruitment-industry"&gt;&#xD;
      
           wrote a blog
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            back in March titled: "
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           How ChatGPT will Benefit the Recruitment Industry".
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           GPT stands for generative pre-trained transformer, effectively generating answers to questions from a trained large language model.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            ChatGPT was released last year by
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="https://openai.com/" target="_blank"&gt;&#xD;
      
           OpenAI
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            and has re-defined the modern
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="https://en.wikipedia.org/wiki/Artificial_intelligence" target="_blank"&gt;&#xD;
      
           AI industry
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           We have now taken advantage of this new artificial intelligence technology by implementing a chat-bot AI on the TriSys Web site.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            This can be viewed by
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/chatgpt"&gt;&#xD;
      
           clicking here
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This is the interface you will see:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/chatGPT-TriSys-Website.png" alt="A computer screen shows a screenshot of a chat app"/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Simply type (or speak on your phone/tablet) into the "Ask me anything about TriSys ..." text box and you will be asking an artificial intelligent agent trained on TriSys to answer your question.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           As an example, new visitors may ask "What is TriSys?", and ChatGPT responds with a comprehensive answer in seconds:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "TriSys is a business software provider that offers a range of services and solutions designed to address real-world challenges. It provides an elegant business software framework through the Software Development Kit (SDK), which includes an event-driven model for end-user and data interactions, as well as a cloud data services platform. This platform allows developers to write complex business rules and algorithms.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys’ cloud infrastructure is a global-scale array of virtualised servers that offer high levels of security and availability. It eliminates the cost of local IT support as well as hardware and software licensing costs for recruitment agencies. The company also offers cloud desktops, which include a fully managed data backup service.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In addition to its software and cloud services, TriSys also offers expert business analysis services and innovative technology expertise. The company works closely with customers to identify, categorize, and prioritize inefficiencies in their business processes, and devise efficient solutions to address these issues.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys also offers a suite of mobile apps that allow recruiters to access their recruitment database from their tablet or phone. The company is planning to partner with other organisations to build complex line of business applications for all industries, based on the TriSys Platform code base.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The company’s head office is located at Wellington House, East Road, Cambridge CB1 1BH, United Kingdom. For more information or to request a dedicated TriSys demonstration, you can get in touch at 
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="mailto:sales@trisys.co" target="_blank"&gt;&#xD;
      
           sales@trisys.co
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .uk"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           It will also supply you with a "Where did this answer come from?" which shows you all the sources of information, for example:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/chatgpt+where+did+the+answer+come+from.png" alt="A blurry picture of a phone screen with a message on it."/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Simply click on each source to drill down into the document.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This 'evidence based search results' are similar to that used by TriSys when searching for candidates.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            We are now offering our customers the chance of implementing their own ChatGPT trained on their own website, as well as offering pre-training on large CV datasets, allowing the best candidates to be found inside TriSys using artificial intelligence.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Please
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/contact"&gt;&#xD;
      
           contact us
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            to learn more.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/chatgpt+on+trisys.co.uk.png" length="204656" type="image/png" />
      <pubDate>Tue, 15 Aug 2023 10:46:06 GMT</pubDate>
      <author>garry@trisys.co.uk (Garry Lowther)</author>
      <guid>https://www.trisys.co.uk/chatgpt-on-trisys-website</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/chatgpt+on+trisys.co.uk.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/chatgpt+on+trisys.co.uk.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>SMS to Email</title>
      <link>https://www.trisys.co.uk/sms-to-email</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Receive text message replies in your inbox, thanks to our SMS to E-Mail Integration
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/test-messaging.png" alt="A woman in a suit is looking at her cell phone."/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Thanks to our innovative integration with 
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/"&gt;&#xD;
      
           24x
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      
            (the leading UK text messaging service provider) TriSys Customers are able to send text messages to tens of thousands of database contacts at highly affordable rates, increasing engagement rates between consultants, clients and candidates.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           We are pleased to announce that all TriSys Customers currently using the 24x text messaging services are now able to receive text message replies on their e-mail accounts provided that this optional service is enabled directly by 24x.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This is highly beneficial as it allows TriSys users to send out SMS messages without necessarily requiring a mobile telephone number to be provided by their organisation (normally known as the sending number) therefore reducing costs and streamlining the centralised management of responses to sent SMS messages.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Furthermore users can also reply to received text message replies in their inbox, simply by replying to the received e-mail further promoting text messaging engagement.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Would you like to discuss further?
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/contact"&gt;&#xD;
      
           Get in touch today.
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/SMS2EMail-92f44979.png" alt="A diagram showing how to send a text message"/&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/test-messaging.png" length="737924" type="image/png" />
      <pubDate>Thu, 04 May 2023 21:18:12 GMT</pubDate>
      <author>francisco@trisys.co.uk (Francisco Janes)</author>
      <guid>https://www.trisys.co.uk/sms-to-email</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/text-messages-chat-ss-1920.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/test-messaging.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Rounded Corners Over Sharp Corners</title>
      <link>https://www.trisys.co.uk/rounded-corners-over-sharp-corners</link>
      <description>As of today, we are pleased to confirm that TriSys Apex recruitment software now features a smoother user experience thanks to a comprehensive project which has resulted in the rounding of all user interface components.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Introducing Rounded or Curved Corners in
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/apex-cloud-suite"&gt;&#xD;
      
           TriSys Apex
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/rounded-vs-square-corners.webp" alt="Two business cards are sitting on top of a blue wooden table."/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            As of today, we are pleased to confirm that
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/apex-cloud-suite"&gt;&#xD;
      
           TriSys Apex
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            now features a smoother user experience thanks to a comprehensive project which has resulted in the rounding of all user interface components, namely:
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            All input fields (text, numeric and more)
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            All dropdown fields (search field selection, conditional clause selection and more)
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            All pop-up windows (actions, prompts, file upload dialogues and more)
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            All forms (CV Auto Recognition, Contact, Company, Requirement, Placement, Timesheet)
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Individual areas within forms (for example "Personal Details", "Employment Details" and more)
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Data grids (lookup fields, pop-up column selectors and more)
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Checkboxes on data grids (replaced square checkboxes with circular checkboxes)
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Buttons (all buttons in TriSys Apex already had round corners prior to the latest release however we have added further roundness)
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Why Round?
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Have you ever noticed how everyday devices with which you interact are rounded/have smooth edges?
           &#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Anything from mobile phones to cutlery or even the steps in your home will normally have smooth edges or borders.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The same is increasingly true of software applications, where the visual concept of round borders has steadily overtaken squared borders on forms and fields, in response to the ability of technology to support more precise user interface adjustments which in turn align with the real-world trends of smooth user experiences.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Who is doing it and why?
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Apple have pioneered it, Microsoft, Amazon, Google and Meta and every global software company is doing it and have in fact done so already on all their latest products, whether software or hardware, investing millions of dollars in research &amp;amp; development in user experience projects culminating in the decision to introduce rounded borders.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Multiple studies have demonstrated how sharp corners emphasize a sign of danger or lack of safety. Therefore, our minds have trained to avoid them as much as possible. But on the other hand, curved corners give a friendly, safe vibe. Curved Corners look more appealing, simply because they are easier on the eyes.
           &#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           What's next?
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Your
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/apex-cloud-suite"&gt;&#xD;
      
           TriSys Apex
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            database application has been automatically updated to include the round edges on all key areas of the user interface, allowing you to enjoy the benefits of the newer user interface from today.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           We sincerely trust you'll greatly enjoy using the newer user interface as much as we've enjoyed developing it.
           &#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/rounded-vs-square-corners.webp" length="86886" type="image/webp" />
      <pubDate>Fri, 14 Apr 2023 16:20:36 GMT</pubDate>
      <author>francisco@trisys.co.uk (Francisco Janes)</author>
      <guid>https://www.trisys.co.uk/rounded-corners-over-sharp-corners</guid>
      <g-custom:tags type="string">TriSys Business Software</g-custom:tags>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/rounded-vs-square-corners.webp">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/rounded-vs-square-corners.webp">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>How ChatGPT will Benefit the Recruitment Industry</title>
      <link>https://www.trisys.co.uk/how-chatgpt-will-benefit-the-recruitment-industry</link>
      <description>This blog post was of course written entirely by artificial intelligence.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           How ChatGPT will Benefit the Recruitment Industry
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            As the world becomes increasingly competitive, finding the right candidate for a job is more important than ever. With the rise of recruitment CRM systems like
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/apex-cloud-suite"&gt;&#xD;
      
           TriSys
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      
           , the recruitment industry is experiencing a technological revolution that promises to significantly increase efficiency and ultimately lead to more successful placements.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            ChatGPT, as a language model, has an innate ability to analyse large amounts of data and provide insights that would be difficult for human recruiters to discover. By leveraging the power of AI and machine learning, ChatGPT can help
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/recruitment-crm"&gt;&#xD;
      
           recruitment CRM systems
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            like TriSys to enhance their candidate matching and business workflow capabilities, ultimately leading to faster and more successful placements.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           One of the biggest advantages of using a recruitment CRM like TriSys is the ability to quickly and efficiently match candidates with job openings. With sophisticated algorithms and machine learning capabilities, these systems can identify the most suitable candidates for a particular role based on a variety of factors such as skills, experience, and cultural fit. ChatGPT can take this capability to the next level by analyzing candidate data in real-time and providing instant insights that can help recruiters make more informed decisions.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            In addition to candidate matching, recruitment CRM systems like
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/mobile-apps"&gt;&#xD;
      
           TriSys
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            also offer advanced business workflow capabilities that can help recruiters manage their workload more effectively. These workflows are designed to streamline the recruitment process by automating tasks such as candidate screening, interview scheduling, and onboarding. ChatGPT can further optimize these workflows by providing insights into which tasks are taking longer than they should, and suggesting ways to improve efficiency.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Another key benefit of using ChatGPT in the recruitment industry is the ability to automate communication with candidates. This is especially important in today's world, where remote work is becoming increasingly common. By leveraging natural language processing capabilities, ChatGPT can help recruiters communicate more effectively with candidates via email or chat, ensuring that they stay engaged and informed throughout the recruitment process.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Overall, the benefits of using ChatGPT in the recruitment industry are clear. By leveraging AI and machine learning capabilities, recruitment CRM systems like TriSys can enhance their candidate matching and business workflow capabilities, leading to faster and more successful placements. With the ability to analyse large amounts of data and provide instant insights, ChatGPT can help recruiters make more informed decisions, ultimately leading to a more efficient and effective recruitment process.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-15863044.jpeg" length="89039" type="image/jpeg" />
      <pubDate>Fri, 17 Mar 2023 12:13:34 GMT</pubDate>
      <author>garry@trisys.co.uk (Garry Lowther)</author>
      <guid>https://www.trisys.co.uk/how-chatgpt-will-benefit-the-recruitment-industry</guid>
      <g-custom:tags type="string">ChatGPT,Artificial Intelligence</g-custom:tags>
      <media:content medium="image" url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-15863044.jpeg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-15863044.jpeg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Annual Roadmap for 2023</title>
      <link>https://www.trisys.co.uk/annual-roadmap-for-2023</link>
      <description>The annual roadmap for TriSys for 2023</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         We are planning some very exciting innovations and enhancements to the products and services of TriSys Business Software in 2023:
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;b&gt;&#xD;
        
            TriSys Apex  2023
           &#xD;
      &lt;/b&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Our
           &#xD;
      &lt;a href="/apex-cloud-suite"&gt;&#xD;
        
            cross-platform web browser recruitment CRM
           &#xD;
      &lt;/a&gt;&#xD;
      
           was released in 2014 and uses the TriSys cloud platform to process all its data and functionality. Customers with any type of computer, tablet or phone can access their recruitment data and conduct sophisticated workflows to drive their business forward, wherever they are and at any time. We plan a number of innovations this year, including the port of the temps booking sheet.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys 2023
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The latest version of our premiere
          &#xD;
    &lt;a href="/recruitment-crm"&gt;&#xD;
      
           windows desktop recruitment CRM
          &#xD;
    &lt;/a&gt;&#xD;
    
          is now available to all existing customers. This application was first released in 1992 and is a rock-solid enterprise grade recruitment business app. For customers on the 2022 version, the application will automatically upgrade. All new features will be documented in the coming months. Our
          &#xD;
    &lt;a href="/sdk"&gt;&#xD;
      
           SDK
          &#xD;
    &lt;/a&gt;&#xD;
    
          is still the only recruiting software toolkit for Microsoft .Net. TriSys for the
          &#xD;
    &lt;a href="https://www.microsoft.com/store/apps/9N5TFLT6JST4" target="_blank"&gt;&#xD;
      
           Microsoft Store
          &#xD;
    &lt;/a&gt;&#xD;
    
          was delivered using Visual Studio 2022.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys Cloud Platform
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Our
          &#xD;
    &lt;a href="/business-cloud"&gt;&#xD;
      
           cloud infrastructure platform
          &#xD;
    &lt;/a&gt;&#xD;
    
          was conceived and built in 2002. It has grown and matured to comprise literally hundreds of cloud servers distributed across the planet. Customers use our platform to store and process their large corporate data assets, via our software products and services. Expect more integration with world class web services through our
          &#xD;
    &lt;a href="https://api.trisys.co.uk" target="_blank"&gt;&#xD;
      
           Web API
          &#xD;
    &lt;/a&gt;&#xD;
    
          .
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           Third Party Integrations
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The TriSys Recruitment Software Platform enables unlimited integration flexibility including standard and complex integrations across multiple popular third party industry suppliers enabling you to use TriSys as a process hub offering a single source of truth. Last year we build a sophisticated integration with
          &#xD;
    &lt;a href="/zapier"&gt;&#xD;
      
           Zapier
          &#xD;
    &lt;/a&gt;&#xD;
    
          , and this year we will fully integrate with additional best-of-breed
          &#xD;
    &lt;a href="/integrations"&gt;&#xD;
      
           third party business platforms
          &#xD;
    &lt;/a&gt;&#xD;
    
          .
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys Mobile Suite
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Recruiters can access their recruitment database from their tablet and phone by installing our
          &#xD;
    &lt;a href="/mobile-apps"&gt;&#xD;
      
           app
          &#xD;
    &lt;/a&gt;&#xD;
    
          , however the mobile landscape is changing with a new class of 'app-builders' utilising low-code or no-code technologies. Due to the power and flexibility of the TriSys Web API, Recruitment agencies can cost-effectively commission their own dedicated and branded mobile app to engage with their clients and candidates.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys Web API
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Almost all our recent innovations centre around our
          &#xD;
    &lt;a href="https://api.trisys.co.uk" target="_blank"&gt;&#xD;
      
           web application programming interface
          &#xD;
    &lt;/a&gt;&#xD;
    
          which provides a fully secure set of programmable end-points not just into the TriSys Cloud Platform, but also to a host of third party global ecosystems, to provide customers with unlimited flexibility to deploy a range of sophisticated recruiting business benefits.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys Platformix
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          In 2019 we introduced a
          &#xD;
    &lt;a href="/website-builder"&gt;&#xD;
      
           website builde
          &#xD;
    &lt;/a&gt;&#xD;
    
          r technology utilising a mix of cloud platforms, which we called
          &#xD;
    &lt;a href="https://www.platformix.co.uk" target="_blank"&gt;&#xD;
      
           Platformix
          &#xD;
    &lt;/a&gt;&#xD;
    
          . This is the successor to Web Jobs in that it is a full recruitment website content management system (CMS) with very tight integration with the TriSys recruiting database, plus state of the art blogging, SEO compliancy, and analytics. We will continue to invest in building TriSys Widgets to allow our customers to build high engagement web portals. We will also continue integration with Stripe to allow Gig-Economy services to be built for our customers.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;b&gt;&#xD;
        
            TriSys Open Source
           &#xD;
      &lt;/b&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We now have full GitHub source code integration with all our software build tools, meaning that TriSys is now the only commercial recruitment software vendor to offer an open-source model. From 1st January 2023, existing customers are able to license TriSys' source code to build their own highly-specific recruitment CRM app for desktop, mobile and web. We are also planning to partner with other organisations to build complex line of business applications for all industries, based upon the thousands of man-years development and testing which has been invested in the TriSys Platform code base.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys Remote Desktop
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The original TriSys ASP was launched
          &#xD;
    &lt;a href="https://www.trisys.co.uk/trisys-asp-is-now-trisys-remote-desktop" target="_blank"&gt;&#xD;
      
           21 years ago
          &#xD;
    &lt;/a&gt;&#xD;
    
          , and comprises a
          &#xD;
    &lt;a href="/remote-desktop"&gt;&#xD;
      
           windows hosted desktop
          &#xD;
    &lt;/a&gt;&#xD;
    
          running on our cloud. This year we are launching a Windows 11 version with full compatibility with Microsoft Office 365 allowing customers to have full control over the apps they can install.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Should you wish to discuss your plans for implementing any of the above products and services, or indeed if you have ideas or recommendations about recruitment technology you would like us to develop, then please
          &#xD;
    &lt;a href="/contact"&gt;&#xD;
      
           contact us
          &#xD;
    &lt;/a&gt;&#xD;
    
          .
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/way-clouds-seat-belts-direction-52531.jpeg" length="582805" type="image/jpeg" />
      <pubDate>Mon, 19 Dec 2022 16:50:01 GMT</pubDate>
      <author>garry@trisys.co.uk (Garry Lowther)</author>
      <guid>https://www.trisys.co.uk/annual-roadmap-for-2023</guid>
      <g-custom:tags type="string">roadmap</g-custom:tags>
      <media:content medium="image" url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/way-clouds-seat-belts-direction-52531.jpeg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/way-clouds-seat-belts-direction-52531.jpeg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>How to break or lose something only by looking at it</title>
      <link>https://www.trisys.co.uk/how-to-break-or-lose-something-only-by-looking</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The computer industry has a very popular saying: "If it ain't broke, don't fix it". This is so true. How many times have you broken something or indeed misplaced something simply by looking at it?
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This happens too often with technology products where any type of access to a live system can cause it to become unstable, stop, break, or simply get lost. The rule is to not even go look, never mind tinker with it.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           I thought of an analogy in the non-tech world and will bring forth my own short "tale of the unexpected"...
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Paul the protagonist, was poor, but in a stroke of luck, was left some gold by a wealthy deceased relative and was advised by his financial adviser to put these gold bars into a safe deposit box in a bank vault. Having secured the gold, Paul arrived home proud of his clever decision to lock his gold away somewhere safe.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           After a few weeks however, Paul became increasingly anxious that the gold was indeed safe. He rang the bank and they assured him that there was only one key and Paul had it, and that no-one else could possibly break into his safe deposit box.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           A few more weeks passed and the thought of losing his gold was starting to increase his anxiety, so he decided that he would travel to the bank to take a look for himself that the gold was still there. He duly signed into the bank, was given access to the vault, and nervously opened his safe deposit box. Paul breathed a sigh of relief to discover for himself that his gold was still there in exactly the same place as he had left it. Contented, Paul returned home and slept well, free from anxiety.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Early the next day, the bank rang Paul. His safe deposit box had been opened, and it was completely empty. Paul was sick to his stomach. How could this happen? He was furious with the bank and insisted that he would visit the bank immediately and get to the bottom of the theft.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           How could he lose his gold just by looking at it, he thought to himself as he dressed for his trip back to the bank.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Upon arrival at the bank, he was quickly ushered into the vault where to his horror, he discovered that his gold was indeed missing because he chose to look at it.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            He had left the only key to his safe deposit box in the lock.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            ﻿
           &#xD;
      &lt;/span&gt;&#xD;
      
           Another customer had taken advantage of the opportunity to steal Paul's beloved gold.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/gold-ingots-golden-treasure-47047.jpeg" length="373191" type="image/jpeg" />
      <pubDate>Mon, 28 Nov 2022 14:54:37 GMT</pubDate>
      <author>garry@trisys.co.uk (Garry Lowther)</author>
      <guid>https://www.trisys.co.uk/how-to-break-or-lose-something-only-by-looking</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/gold-ingots-golden-treasure-47047.jpeg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/gold-ingots-golden-treasure-47047.jpeg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Dual Display Contact Previews</title>
      <link>https://www.trisys.co.uk/dual-display-contact-previews</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Open Contact Previews in Dual Display Mode
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Traditionally users have been able to open the contact preview window on their active Apex session, as shown below:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Spyglass+Icon+.png" alt="A screenshot of a computer screen with a red arrow pointing to a person 's profile."/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The above existing functionality has always been available, allowing users to open contact previews directly inside their Apex session, where the contact preview window can be resized, set to remain visible (always on top or "floating") and positioned anywhere on the users' screen.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In addition to the above, TriSys Apex users are now able to enjoy added productivity when opening contact previews, specifically by clicking the  new icon below:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/popout-contact-preview.png" alt="Open preview in new window drag and drop new window to secondary display / monitor"/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This button will "dettach" the contact preview panel into its own dedicated web browser window.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            As a result the user can reposition the additional web browser window anywhere on screen (as was already the case originally) however as a result of the preview being launched in a separate browser window, the user can position the contact preview on
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           any
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            additional display/monitor, whilst also benefitting from all previous functionality already available with the contact preview panel.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This enhances user productivity, particularly beneficial for an increasing number of TriSys users with dual display/monitor use.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Dual+display+contact+preview.png" alt="Two computer monitors are connected to a keyboard and mouse"/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Should the dedicated contact preview window be minimised as a result of the user clicking any other application window, the contact preview window can be restored simply by clicking the relevant browser window on your operating system task bar:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/restore-contact-preview-window.png" alt="A computer screen with a bunch of windows open on it."/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Here is a video overview of the new contact preview panel operating inside its own dedicated browser window:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/dual-display-contact-preview-full-apex-grid-df49ea66.png" length="102394" type="image/png" />
      <pubDate>Wed, 16 Nov 2022 14:36:10 GMT</pubDate>
      <author>francisco@trisys.co.uk (Francisco Janes)</author>
      <guid>https://www.trisys.co.uk/dual-display-contact-previews</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/dual-display-contact-preview-full-apex-grid-df49ea66.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/dual-display-contact-preview-full-apex-grid-df49ea66.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Building Your Own Website VS Hiring a Web Designer</title>
      <link>https://www.trisys.co.uk/building-your-own-website-vs-hiring-a-web-designer</link>
      <description>Building a new website using TriSys Platformix technology, the world's #1 DIY website builder, will save you thousands of £££.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Save Time and Money with the TriSys Platformix Website Builder
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Build-Your-New-Website-Today.png" alt="An advertisement for platformix shows a bowl of paintbrushes on a pink background."/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Every successful business needs a good website. Your website will give your existing and prospective customers the information that they need, as well as marketing your brand, and potentially selling your products and services.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In the 21
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           st
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Century, with robust website builder platforms available globally, do you
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           really
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            need to hire a professional web designer or can you save time and money by building your own website using a
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="https://www.platformix.co.uk/templates" target="_blank"&gt;&#xD;
      
           modern website builder platform
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ?
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The simple truth is that you no longer require the services of a website design agency should you wish to implement a modern website. Therefore do-it-yourself websites are here to stay and they are essential to reducing your costs whilst guaranteeing flexibility.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Here are three reasons to choose
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="https://platformix.co.uk/" target="_blank"&gt;&#xD;
      
           TriSys Platformix
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      
           , the world's most advanced self-service website builder already in use by tens of thousands of businesses worldwide.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           1. Ready to Use Modern Website Templates
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Modern-Templates.png" alt="A collage of images of different websites on a white background."/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            With 90+ modern website templates fully compatible with desktop, tablet and mobile devices, it has never been this easy to build your new website.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="https://www.platformix.co.uk/templates" target="_blank"&gt;&#xD;
      
           Simply browse and choose a template
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Every template has been professionally designed and supports extensive content and design adjustments, all using a highly intuitive drag-and-drop, point-and-click experience, completely eliminating website design costs and saving you a tremendous amount of time and money.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            With
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="https://www.platformix.co.uk/templates" target="_blank"&gt;&#xD;
      
           TriSys Platformix
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            you simply choose a template and immediately start configuring your website, creating a modern, fast and visitor-friendly website in a matter of minutes, without any technical expertise required.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Should you require any assistance with adjusting the website or an overview of how to use the
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="https://www.platformix.co.uk/templates" target="_blank"&gt;&#xD;
      
           TriSys Platformix
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            website builder, simply
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="https://www.platformix.co.uk/contact" target="_blank"&gt;&#xD;
      
           contact us
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            and we will provide a straightforward support service.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           2. Easy Self-Service Maintenance
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/iPad+on+Table.jpg" alt="A woman is using a tablet computer surrounded by potted plants."/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;a href="https://www.platformix.co.uk/templates" target="_blank"&gt;&#xD;
      
           TriSys Platformix Websites
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            allow you to maintain the content and design of your website using self-service.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This saves you considerable time and money and allows you to maintain full control over your website, eliminating unexpected website content management and design costs.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If you are looking for a new website
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            with a streamlined design, great performance and full self-service control,
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="https://www.platformix.co.uk/templates" target="_blank"&gt;&#xD;
      
           TriSys Platformix Websites
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            are your ideal solution.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            It has never been this easy. Simply choose a modern, ready to use website template available in our
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="https://www.platformix.co.uk/templates" target="_blank"&gt;&#xD;
      
           website template gallery
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            and create your new website today. Satisfaction guaranteed.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           3. High Quality at Low Cost
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/website-cost.png" alt="A computer monitor surrounded by money and a cell phone."/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Traditionally a modern website will cost you thousands to design and implement, plus ongoing support and maintenance costs.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            In contrast,
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="https://www.platformix.co.uk/templates" target="_blank"&gt;&#xD;
      
           TriSys Platformix
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            puts you in control today and allows you to get started with ready to use templates which can be adjusted easily.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            No web design experience is required therefore no third party web design services are required. Website hosting, automated backups and HTTPS security as well as automatic updates are fully included with
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="https://www.platformix.co.uk/templates" target="_blank"&gt;&#xD;
      
           TriSys Platformix
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            The simple truth is that
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="https://www.platformix.co.uk/templates" target="_blank"&gt;&#xD;
      
           TriSys Platformix
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            is the best-value website builder available on the market today, already in use by hundreds of thousands of organisations worldwide.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;a href="https://www.platformix.co.uk/templates" target="_blank"&gt;&#xD;
      
           Choose a template and start building your brand new website today
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Build-Your-New-Website-Today.png" length="341640" type="image/png" />
      <pubDate>Fri, 30 Sep 2022 10:41:22 GMT</pubDate>
      <author>francisco@trisys.co.uk (Francisco Janes)</author>
      <guid>https://www.trisys.co.uk/building-your-own-website-vs-hiring-a-web-designer</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Build-Your-New-Website-Today.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Build-Your-New-Website-Today.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Apex Startup Animations</title>
      <link>https://www.trisys.co.uk/apex-startup-animations</link>
      <description>From Friday 18th February 2022, you will see a loading animation randomly selected from one of the following ten animated GIF's:</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Apex Startup Animations
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           When you visit 
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="https://apex.trisys.co.uk/" target="_blank"&gt;&#xD;
      
           apex.trisys.co.uk
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      
            from Friday 18th February 2022, you will see a loading animation randomly selected from one of the following ten animated GIF's:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/healthcare-data-security-in-cloud-computing.jpg" length="104048" type="image/jpeg" />
      <pubDate>Thu, 17 Feb 2022 12:10:51 GMT</pubDate>
      <author>garry@trisys.co.uk (Garry Lowther)</author>
      <guid>https://www.trisys.co.uk/apex-startup-animations</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/healthcare-data-security-in-cloud-computing.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/healthcare-data-security-in-cloud-computing.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Summary of TriSys Products and Services</title>
      <link>https://www.trisys.co.uk/summary-of-trisys-products-and-services</link>
      <description>TriSys Recruitment Software - Summary of Products and Services.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys Recruitment Software - Products &amp;amp; Services Portfolio Update
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In this blog post you will learn about the TriSys Recruitment Software Platform and services.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Designed for recruitment, TriSys offers comprehensive cloud-based and onsite installations catering for your most comprehensive functionality requirements so that you can do more in less time and increase your recruitment operation margins.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys Recruitment Software (Cloud / Onsite / Hybrid)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/trisys-apex-multiple-devices.png" alt="A computer , tablet , phone , and laptop are displayed on a white background."/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            ﻿
           &#xD;
      &lt;/span&gt;&#xD;
      
           Available as a cloud service, an onsite (server-based) installation as well as a hybrid service, TriSys Recruitment Software offers comprehensive and easy to use functionality including but not limited to:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Unlimited support for comprehensive database customisations (visual and functional)
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Permanent / Contract / Temporary recruitment workflows
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Unlimited Database Records
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Candidates &amp;amp; Clients
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Companies &amp;amp; Requirements
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Placements &amp;amp; Timesheets
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Dashboards &amp;amp; Reports
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Drag and Drop Dashboards
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            User Security Permissions
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Two Factor Authentication
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Concurrent Multi-device Login
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Free Excel Data Import/Export
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            CV Parsing &amp;amp; Formatting
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Multi-Language CV Parsing
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            CV Free Text Searching
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Intelligent Keyword Highlight
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Skills &amp;amp; Skills Searching
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Full Boolean Searching
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Save &amp;amp; Share Searches
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Favourites/Excluded Lists
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Requirement Shortlist Actions
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Instant Find /Quick Lookup
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Navigation History
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Duplicate Prevention
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            PDF to Word CV Conversion
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Full Recruitment Workflows
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Built-In Document Editing
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            E-Mail Merging &amp;amp; Templates
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Intelligent Diary Manager
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Shared Diary Views
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Diary Synchronisation
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            E-Mail Synchronisation
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Mobile CRM App
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            10+ Colour Themes
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Single-Click Workflows
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Training Videos &amp;amp; Guides
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            E-Mail Templates
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Flexible Storage
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Job Posting Integration
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            SMS Text Messaging
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Placement Documentation
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Centralised User Management
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Microsoft (Office) 365 Add-In
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Single-Click Inbox Workflows
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Inbox CRM Contact Previews
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Run Actions from your Inbox
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            LinkedIn Integration
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Technical Support
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            24x7 Monitoring
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Antivirus / Antimalware
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Automatic Updates
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Key Account Manager
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Onboarding Session
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            On-Screen F1 Help
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Self-paced tutorial videos
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Secure Hosting (UK/EU)
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Full Daily Backups
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            and much more...
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;a href="/free-trial"&gt;&#xD;
      
           Start your free trial with TriSys Recruitment Software...
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Desktop Recruitment App + Browser Recruitment App + Mobile Recruitment App
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys Recruitment Software is available on all your devices, allowing you to login to your recruitment database from anywhere, at any time and on any device. Recruit on the go using the TriSys Mobile App for recruiters, a modern and easy to use mobile app for iOS and Android.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Read more about all available TriSys Recruitment Software user interfaces:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;a href="/recruitment-crm"&gt;&#xD;
      
           TriSys Desktop Application/Database for Recruitment
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;a href="/apex-cloud-suite"&gt;&#xD;
      
           TriSys Web Browser Application/Database for Recruitment
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;a href="/mobile-apps"&gt;&#xD;
      
           TriSys Mobile App/Database for Recruitment
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            TriSys Recruitment Software is also available as a
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/trisys-for-the-microsoft-store"&gt;&#xD;
      
           Microsoft Store App
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            and is fully compatible with both Windows 10 and Windows 11.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Mobile Recruitment Apps (Recruiter App / Candidate App / Client App)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/trisys-mobile-app-vertex.png" alt="TriSys Mobile Recruitment Apps" title="TriSys Mobile Recruitment Apps"/&gt;&#xD;
  &lt;span&gt;&#xD;
  &lt;/span&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Experience the benefit of fully integrated mobile apps for iOS and Android devices, fully integrated with your TriSys recruitment database.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Deliver service to candidates and clients using branded mobile apps
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Integrate your existing mobile app with the TriSys Recruitment Business API Platform
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Bespoke mobile app development is also available as an optional consultancy service.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;a href="/mobile-apps"&gt;&#xD;
      
           Ream more about TriSys Mobile App services...
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys Business Remote Desktop Service
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/trisys-remote-desktop-2020-1-1920w.png" alt="TriSys Remote Desktop Service" title="TriSys Remote Desktop Service"/&gt;&#xD;
  &lt;span&gt;&#xD;
  &lt;/span&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Modern cloud-hosted desktops delivered as a service allowing you to focus on your day to day business activities whilst enjoying the convenience of a cloud-hosted Windows computer where your business applications (Email, TriSys Recruitment Software and other applications) can be installed.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Users simply need a computer from where they can connect to their TriSys Cloud Hosted Desktop.
           &#xD;
      &lt;span&gt;&#xD;
        
            ﻿
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;a href="/remote-desktop"&gt;&#xD;
      
           Read more about the TriSys Remote Desktop Service
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Web Browser Extension / LinkedIn Integration for your Recruitment Database
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/TriSys-Recruitment-Software-CRM-LinkedIn-Integration.png" alt="A computer screen with a linkedin logo on it"/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The TriSys Web Browser Extension / LinkedIn integration for recruitment allows you to add candidates and clients directly from LinkedIn to your TriSys recruitment database with a single click as well as run recruitment workflows directly from LinkedIn, streamlining your client and candidate contact management.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The TriSys Web Browser Extension / LinkedIn Integration for recruitment uses the TriSys API Platform and can therefore be extended to deliver optional bespoke functionality for every TriSys Customer, maximising your ROI.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;a href="/browser-extension"&gt;&#xD;
      
           Read more about the TriSys Browser Extension / LinkedIn Integration
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Office Add-In / Microsoft 365 Recruitment Add-In
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/TriSys-Recruitment-Software-CRM-Office365-Microsoft365-Integration.png" alt="A computer screen with a microsoft 365 logo on it"/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Designed for Microsoft Outlook and Microsoft 365 the TriSys Browser Extension delivers recruitment consultants the power of their TriSys recruitment database directly inside their Outlook inboxes, offering functionality such as:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Single-click CV Parsing
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Full client and candidate preview
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Running recruitment workflows directly from your inbox/email messages
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Conveniently update database contact information with a single click
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            And much more, including compatibility with previous versions of Microsoft Outlook for customers still not using Microsoft 365 services
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;a href="/outlook-add-in"&gt;&#xD;
      
           Read more about the TriSys Office Add-In / Microsoft 365 Recruitment Add-In
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys Platformix (Modern Recruitment Websites / Business Websites)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Recruitment-Websites-Recruitment-Website-Builder-Recruitment-Website-Integration-Recruitment-API.png" alt="A collage of different types of websites on a white background."/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Using our state-of-the-art website builder / content management system (TriSys Platformix) your business can implement a new website in hours instead of days, weeks or months.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Simply
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="https://www.platformix.co.uk/templates" target="_blank"&gt;&#xD;
      
           choose a template
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            and build your new website (web design services can be provided where required).
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Furthermore your website can also be integrated with your TriSys recruitment database, thanks to our award-winning database integration technology offering the best value for money.
           &#xD;
      &lt;span&gt;&#xD;
        
            ﻿
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;a href="https://www.platformix.co.uk/templates" target="_blank"&gt;&#xD;
      
           Browse 100+ website Templates
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys Recruitment Business API
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Recruitment-API-Business-API-Recruitment-Database-API.jpg" alt="A screenshot of a web page with a magnifying glass on it"/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Your TriSys Recruitment Software database can be integrated with a range of popular 3rd party services such as marketing, sales and finance systems, ensuring a smooth flow of data across your line of business systems.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Integrations are delivered using the TriSys Recruitment Business API, a modern REST API offering unparalleled flexibility including full support for bespoke business rules allowing you to grow your business with a solution designed for scalability.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Examples of where the TriSys Recruitment API can be used:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Website integration allowing candidates to browse live vacancies
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Candidate self-service registrations with comprehensive if/then logic
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Client self-service management with comprehensive if/then logic
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Integrating with grammar and spell-checking online services
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Integrating with your telephone system
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Integrating with 3rd party mass mailing platforms
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Integrating with 3rd party text messaging platforms
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Integrating with 3rd party finance platforms
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            And much more...
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;a href="https://api.trisys.co.uk/" target="_blank"&gt;&#xD;
      
           Read more about the TriSys API
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys Software Development Kit (SDK)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/TriSys-Business-SDK-Software-Development-Kit.png" alt="A computer screen with a white square on it"/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The TriSys Software Development Kit is the secret weapon behind the TriSys Platform: a developer-centric set of tools designed to streamline the development of bespoke software functionality using the Microsoft .NET Framework.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The TriSys SDK can be purchased by TriSys Customers and TriSys Implementation Partners and is used to build upon / extend the TriSys Platform functionality 100% as required for your specific business.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys Recruitment Software runs on the Microsoft .NET Platform and is also available as an Open Source codebase.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;a href="/sdk"&gt;&#xD;
      
           Read more about the TriSys SDK...
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Integrated E-Mail Marketing Campaigns
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/CRM-Mass-Mailing-Platform-Analytics-Module.png" alt="A screenshot of a computer screen showing a list of attachments."/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    
          Send
          &#xD;
    &lt;span&gt;&#xD;
      
           mass e-mails using our high-capacity email marketing platform designed to streamline candidate and client contact management whilst eliminating the costs associated with using 3rd party mass email platforms and associated GDPR update workflows.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With TriSys Recruitment Software you have all you need to keep in regular contact with your candidates and clients, using state-of-the-art email templates, hundreds of database merge fields and much more, directly integrated with your TriSys recruitment database.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Key functionalities:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Unlimited email templates with database merge fields
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Schedule campaigns in advance
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Monitor delivery statistics
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Generate reports including delivery and links clicked
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Repeat campaigns effortlessly
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Empower recruitment consultants with a solution designed to streamline communications productivity.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys Video Conferencing &amp;amp; Interviewing
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Business-Video-Conferencing-Recruitment-Video-Interviewing-Software-Integration.png" alt="A group of people are having a video call on a computer screen."/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Start video conferencing calls and / or online interviews using our fully integrated video platform, allowing you to invite your clients, candidates and colleagues into dedicated video conferencing/interviewing rooms enabling:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            High quality video calls
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Simultaneous screen sharing/collaboration
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Chat area
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Session recording
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            And much more...
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Unlike most video conferencing / interviewing solutions, The TriSys video conferencing / interviewing service does not require any software installation and is therefore the quickest, safest and most convenient service available for recruitment video interviewing and video conferencing.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;a href="/video-conferencing"&gt;&#xD;
      
           Read more about the TriSys Video Conferencing service...
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Business Software Development / Bespoke Software Consultancy Services
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Bespoke-Consultancy-Services.jpg" alt="A man is pointing at a computer screen while another man looks on."/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Thanks to the power of the TriSys Business Software Platform, s
          &#xD;
    &lt;/span&gt;&#xD;
    
          ome of the Wor
          &#xD;
    &lt;span&gt;&#xD;
      
           ld's largest organisations are already using TriSys Business Software not only across their recruitment divisions but also across sales/marketing/operations/service/finance departments.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys Business Software offers comprehensive expertise in the following areas:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;span&gt;&#xD;
          
             Business analysis
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Software product development
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Systems integrations
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;a href="/contact"&gt;&#xD;
      
           Please get in touch to discuss your specific software project requirements
           &#xD;
      &lt;span&gt;&#xD;
        
            ﻿
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/a&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Personalised Training Services
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/TriSys-Business-Software-Training-Services.png" alt="A man is giving a presentation to a group of people in a classroom."/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys Training Services deliver onsite classroom-based, instructor-led training services and also online training sessions for all your staff.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Fully tailored to your needs, training sessions focus on every area of the TriSys Recruitment Software platform, with a particular emphasis on best-practices and empowering your recruitment teams to deliver high-quality service to clients and candidates.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;a href="/training"&gt;&#xD;
      
           Read more about TriSys training services...
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Digital.png" length="181919" type="image/png" />
      <pubDate>Fri, 04 Feb 2022 11:49:30 GMT</pubDate>
      <guid>https://www.trisys.co.uk/summary-of-trisys-products-and-services</guid>
      <g-custom:tags type="string">Cloud Recruitment CRM</g-custom:tags>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Digital.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Digital.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys Referral Program</title>
      <link>https://www.trisys.co.uk/trisys-referral-program</link>
      <description>Refer TriSys Recruitment Software and earn cashback. Take advantage of this unique opportunity now.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Introducing the TriSys Referral Program
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/refer-friend.png" alt="A man with a beard is holding a cell phone and pointing at it."/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           How does it work?
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Effective from 17/01/2022 all TriSys Users are invited to spread the news and refer TriSys across their personal and professional networks.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            If you know anyone or have you heard from someone who is looking for a new recruitment CRM/ATS system, refer TriSys as soon as you can and then fill in the
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/referral"&gt;&#xD;
      
           referral form
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            on our website.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Every time you refer TriSys and your referral results in a new business sign-up, you will receive
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/referral"&gt;&#xD;
      
           £100 Cashback!
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           There is no limit to how many times you can refer TriSys and earn cashback.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The referral program will be running throughout Q1 2022 and is the ideal opportunity to help someone you know.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Please feel free to
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/contact"&gt;&#xD;
      
           contact us
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            should you wish to discuss a referral directly with your dedicated account manager.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/word-of-mouth.jpg" length="47326" type="image/jpeg" />
      <pubDate>Mon, 17 Jan 2022 22:03:51 GMT</pubDate>
      <guid>https://www.trisys.co.uk/trisys-referral-program</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/word-of-mouth.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/word-of-mouth.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Annual Roadmap for 2022</title>
      <link>https://www.trisys.co.uk/annual-roadmap-for-2022</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         We are planning some very exciting innovations and enhancements to the products and services of TriSys Business Software in 2022:
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;b&gt;&#xD;
        
            TriSys Apex  2022
           &#xD;
      &lt;/b&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Our
           &#xD;
      &lt;a href="/apex-cloud-suite"&gt;&#xD;
        
            cross-platform web browser recruitment CRM
           &#xD;
      &lt;/a&gt;&#xD;
      
           was released in 2014 and uses the TriSys cloud platform to process all its data and functionality. Customers with any type of computer, tablet or phone can access their recruitment data and conduct sophisticated workflows to drive their business forward, wherever they are and at any time. We plan a number of innovations this year, including the port of the temps booking sheet.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys 2022
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The latest version of our premiere
          &#xD;
    &lt;a href="/recruitment-crm"&gt;&#xD;
      
           windows desktop recruitment CRM
          &#xD;
    &lt;/a&gt;&#xD;
    
          is now available to all existing customers. This application was first released in 1992 and is a rock-solid enterprise grade recruitment business app. For customers on the 2021 version, the application will automatically upgrade. All new features will be documented in the coming months. Our
          &#xD;
    &lt;a href="/sdk"&gt;&#xD;
      
           SDK
          &#xD;
    &lt;/a&gt;&#xD;
    
          is still the only recruiting software toolkit for Microsoft .Net. We have now released TriSys for the
          &#xD;
    &lt;a href="https://www.microsoft.com/store/apps/9N5TFLT6JST4" target="_blank"&gt;&#xD;
      
           Microsoft Store
          &#xD;
    &lt;/a&gt;&#xD;
    
          using Visual Studio 2022.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys Open Source
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We now have full
          &#xD;
    &lt;a href="https://github.com/TriSys-Business-Software" target="_blank"&gt;&#xD;
      
           GitHub source code
          &#xD;
    &lt;/a&gt;&#xD;
    
          integration with all our software build tools, meaning that TriSys is now the only commercial recruitment software vendor to offer an open-source model. From 1st January 2022, existing customers are able to license TriSys' source code to build their own highly-specific recruitment CRM app for desktop, mobile and web. We are also planning to partner with other organisations to build complex
          &#xD;
    &lt;a href="https://en.wikipedia.org/wiki/Line_of_business" target="_blank"&gt;&#xD;
      
           line of business
          &#xD;
    &lt;/a&gt;&#xD;
    
          applications for all industries, based upon the thousands of man-years development and testing which has been invested in the TriSys Platform code base.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys Cloud Platform
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Our
          &#xD;
    &lt;a href="/business-cloud"&gt;&#xD;
      
           cloud infrastructure platform
          &#xD;
    &lt;/a&gt;&#xD;
    
          was conceived and built in 2002. It has grown and matured to comprise literally hundreds of cloud servers distributed across the planet. Customers use our platform to store and process their large corporate data assets, via our software products and services. Expect more integration with world class web services through our
          &#xD;
    &lt;a href="https://api.trisys.co.uk" target="_blank"&gt;&#xD;
      
           Web API
          &#xD;
    &lt;/a&gt;&#xD;
    
          .
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys Mobile Suite
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Recruiters can access their recruitment database from their tablet and phone by installing our
          &#xD;
    &lt;a href="/mobile-apps"&gt;&#xD;
      
           app
          &#xD;
    &lt;/a&gt;&#xD;
    
          , however the mobile landscape is changing with a new class of 'app' called a progressive web app (PWA) which can be installed without visiting an app-store. When PWA technology is mature enough, we will be first to market. Recruitment agencies can also commission their own dedicated and branded mobile app using our
          &#xD;
    &lt;a href="/mobile-apps"&gt;&#xD;
      
           Vertex or TriOnyx
          &#xD;
    &lt;/a&gt;&#xD;
    
          technology to engage with their clients and candidates.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys Web Jobs
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Web Jobs fully integrates, or replaces your existing web site, by providing powerful candidate and client engagement portals. These portals can serve a multitude of functions such as job finding platforms, or timesheet management and payroll facilitation.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys Platformix
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          In 2019 we introduced a
          &#xD;
    &lt;a href="/website-builder"&gt;&#xD;
      
           website builde
          &#xD;
    &lt;/a&gt;&#xD;
    
          r technology utilising a mix of cloud platforms, which we called
          &#xD;
    &lt;a href="https://www.platformix.co.uk" target="_blank"&gt;&#xD;
      
           Platformix
          &#xD;
    &lt;/a&gt;&#xD;
    
          . This is the successor to Web Jobs in that it is a full recruitment website content management system (CMS) with very tight integration with the TriSys recruiting database, plus state of the art blogging, SEO compliancy, and analytics. We will continue to invest in building TriSys Widgets to allow our customers to build high engagement web portals. We will also continue integration with Stripe to allow Gig-Economy services to be built for our customers.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys Remote Desktop
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The original TriSys ASP was launched
          &#xD;
    &lt;a href="https://www.trisys.co.uk/trisys-asp-is-now-trisys-remote-desktop" target="_blank"&gt;&#xD;
      
           20 years ago
          &#xD;
    &lt;/a&gt;&#xD;
    
          , and comprises a
          &#xD;
    &lt;a href="/remote-desktop"&gt;&#xD;
      
           windows hosted desktop
          &#xD;
    &lt;/a&gt;&#xD;
    
          running on our cloud. This year we are launching a Windows 10 version with full compatibility with Microsoft Office 365 allowing customers to have full control over the apps they can install.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Should you wish to discuss your plans for implementing any of the above products and services, or indeed if you have ideas or recommendations about recruitment technology you would like us to develop, then please
          &#xD;
    &lt;a href="/contact"&gt;&#xD;
      
           contact us
          &#xD;
    &lt;/a&gt;&#xD;
    
          .
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-1165981.jpeg" length="534956" type="image/jpeg" />
      <pubDate>Sat, 08 Jan 2022 16:50:27 GMT</pubDate>
      <author>garry@trisys.co.uk (Garry Lowther)</author>
      <guid>https://www.trisys.co.uk/annual-roadmap-for-2022</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-1165981.jpeg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-1165981.jpeg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Christmas 2021</title>
      <link>https://www.trisys.co.uk/christmas-2021</link>
      <description>A short statement by TriSys' CEO thanking customers and presenting our Christmas card.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           December 2021
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           It has been a long year for many people, especially after the arrival of the COVID-19 pandemic in March last year. Our hearts go out to those people who have lost loved ones, or have contracted the virus and have been ill as a result.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           We have prepared a little something to hopefully provide some comfort and joy this Christmas time. Please click the link below to open our Christmas Card to you, our customer, and thank you once again for your business.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-717988.jpeg" length="333377" type="image/jpeg" />
      <pubDate>Thu, 16 Dec 2021 14:36:33 GMT</pubDate>
      <author>garry@trisys.co.uk (Garry Lowther)</author>
      <guid>https://www.trisys.co.uk/christmas-2021</guid>
      <g-custom:tags type="string">merry christmas,christmas</g-custom:tags>
      <media:content medium="image" url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-717988.jpeg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-717988.jpeg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys Video Conferencing &amp; Video Interviewing</title>
      <link>https://www.trisys.co.uk/trisys-video-conferencing-video-interviewing</link>
      <description />
      <content:encoded>&lt;h3&gt;&#xD;
  &lt;b&gt;&#xD;
    
          Now Available - Video Conferencing and Video Interviewing
         &#xD;
  &lt;/b&gt;&#xD;
&lt;/h3&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/video-interview.png" alt="A group of people are having a video call on a laptop and a cell phone."/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         TriSys Business Software is officially announcing the availability of the new
         &#xD;
  &lt;b&gt;&#xD;
    &lt;a href="/video-conferencing"&gt;&#xD;
      
           Video Conferencing and Video Interviewing
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/b&gt;&#xD;
  
         platform, available to all existing customers as a convenient solution designed to promote internal employee collaboration, added levels of client engagement as well as streamline candidate interviews using high-quality video technology.
        &#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Key Benefits and Functionalities
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Call your colleagues, clients and candidates using high quality video
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Hold one-on-one and group candidate video interviews
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Hold internal company events, webinars and staff meetings using video conferencing
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Increased staff productivity and time saving
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Works on all devices and offers instant video call joining experiences
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            No software is installed hence zero risk of unknowingly installing Spyware, Ransomware, etc.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Start video calls directly inside TriSys Apex contact records
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Up to 50 concurrent participants per video call
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Unlimited use 24x7x365
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Simultaneous participant screen sharing
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Video recording by host
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Breakout Rooms allowing participants to meet separately
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Bespoke Company Branding
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            GDPR compliant
           &#xD;
      &lt;/span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;span&gt;&#xD;
          
             ﻿
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;a href="/contact"&gt;&#xD;
      
           Contact us today to book an online video conferencing &amp;amp; interviewing demonstration.
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/video-interview.png" length="475458" type="image/png" />
      <pubDate>Fri, 15 Oct 2021 20:36:06 GMT</pubDate>
      <guid>https://www.trisys.co.uk/trisys-video-conferencing-video-interviewing</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/online-interview-scaled.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/video-interview.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys Recruitment Software for the Microsoft Store is Here!</title>
      <link>https://www.trisys.co.uk/trisys-for-the-microsoft-store</link>
      <description>Announcing the World's first Recruitment Software Desktop Application available on the Microsoft Store, also fully compatible with Windows 11.</description>
      <content:encoded>&lt;h3&gt;&#xD;
  &lt;b&gt;&#xD;
    
          Announcing TriSys Recruitment Software for the Microsoft Store (Windows 10/11)
         &#xD;
  &lt;/b&gt;&#xD;
&lt;/h3&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            TriSys Recruitment Software is officially the World's first recruitment software application for Microsoft Windows 10 and Microsoft Windows 11 to be made available worldwide on the
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="https://www.microsoft.com/store/apps/9N5TFLT6JST4" target="_blank"&gt;&#xD;
      
           Microsoft Store
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The Microsoft Store is the next-generation software discovery and deployment platform, created by Microsoft to streamline application delivery to end users, guaranteeing the highest levels of security and convenience, eliminating barriers to software deployment, increasing end user productivity as well as IT peace of mind thanks to its straightforward deployment method and built-in security model managed by Microsoft.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           After installing TriSys from the Microsoft Store, you will see a notification confirming the installation has successfully completed:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/TriSys-Microsoft-Store-Installation-Completed.png" alt="A microsoft store notification that says just got installed check it out"/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;b&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
    
          Who should install TriSys from the Microsoft Store?
          &#xD;
    &lt;br/&gt;&#xD;
  &lt;/b&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;div&gt;&#xD;
      &lt;div&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/div&gt;&#xD;
      &lt;div&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
            
              New TriSys users running Windows 10 or Windows 11 can install the Microsoft Store version of
              &#xD;
            &lt;a href="/recruitment-crm"&gt;&#xD;
              &lt;b&gt;&#xD;
                
                TriSys Recruitment CRM
               &#xD;
              &lt;/b&gt;&#xD;
            &lt;/a&gt;&#xD;
            
               right away by clicking
              &#xD;
            &lt;b&gt;&#xD;
              &lt;a href="https://www.microsoft.com/store/apps/9N5TFLT6JST4" target="_blank"&gt;&#xD;
                
                here
               &#xD;
              &lt;/a&gt;&#xD;
            &lt;/b&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;span&gt;&#xD;
              
               Existing TriSys users running Windows 10 or Windows 11 can also install the Microsoft Store version of
              &#xD;
            &lt;/span&gt;&#xD;
            &lt;a href="/recruitment-crm"&gt;&#xD;
              &lt;b&gt;&#xD;
                
                TriSys Recruitment CRM
               &#xD;
              &lt;/b&gt;&#xD;
            &lt;/a&gt;&#xD;
            &lt;span&gt;&#xD;
              
               right away by clicking
               &#xD;
              &lt;b&gt;&#xD;
                &lt;a href="https://www.microsoft.com/store/apps/9N5TFLT6JST4" target="_blank"&gt;&#xD;
                  
                 here
                &#xD;
                &lt;/a&gt;&#xD;
              &lt;/b&gt;&#xD;
            &lt;/span&gt;&#xD;
          &lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;div&gt;&#xD;
          &lt;b&gt;&#xD;
            
              Who should
              &#xD;
            &lt;span&gt;&#xD;
              
               not
              &#xD;
            &lt;/span&gt;&#xD;
            
              install TriSys from the Microsoft Store?
             &#xD;
          &lt;/b&gt;&#xD;
          &lt;br/&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;div&gt;&#xD;
          &lt;b&gt;&#xD;
            &lt;br/&gt;&#xD;
          &lt;/b&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
            
              Existing TriSys users with Terminal Server installations of TriSys Recruitment Software should
              &#xD;
            &lt;b&gt;&#xD;
              
               not
              &#xD;
            &lt;/b&gt;&#xD;
            
              install the new version because they may have custom-built software and therefore will need in-house testing by customer teams/product champions before upgrading (please
              &#xD;
            &lt;a href="/contact"&gt;&#xD;
              &lt;b&gt;&#xD;
                
                contact us
               &#xD;
              &lt;/b&gt;&#xD;
            &lt;/a&gt;&#xD;
            
              should you wish to discuss further)
             &#xD;
          &lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
      &lt;/div&gt;&#xD;
      &lt;div&gt;&#xD;
        &lt;div&gt;&#xD;
          
             The Microsoft Store version of TriSys Recruitment CRM is built from the same underlying code base as the standard version of TriSys Recruitment Software for Microsoft Windows therefore the functionality is the same, however the platform for delivering and upgrading TriSys is now ultra-modern thanks to the Microsoft Store.
            &#xD;
        &lt;/div&gt;&#xD;
        &lt;div&gt;&#xD;
          &lt;br/&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;div&gt;&#xD;
          
             This announcement precedes the official release of Microsoft Windows 11 worldwide on October 5th 2021, with which TriSys Recruitment Software is 100% compatible therefore ensuring a smooth experience for all existing and new TriSys Customers who have over the years recognised the high quality of TriSys Business Software products and services.
            &#xD;
        &lt;/div&gt;&#xD;
        &lt;div&gt;&#xD;
          &lt;br/&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;div&gt;&#xD;
          &lt;b&gt;&#xD;
            &lt;a href="https://www.microsoft.com/store/apps/9N5TFLT6JST4" target="_blank"&gt;&#xD;
              
               Click here
              &#xD;
            &lt;/a&gt;&#xD;
          &lt;/b&gt;&#xD;
          
             to launch the Microsoft Store, install and start using TriSys Recruitment Software today.
            &#xD;
        &lt;/div&gt;&#xD;
        &lt;div&gt;&#xD;
          &lt;br/&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;div&gt;&#xD;
          
             Please
             &#xD;
          &lt;b&gt;&#xD;
            &lt;a href="/contact"&gt;&#xD;
              
               get in touch
              &#xD;
            &lt;/a&gt;&#xD;
          &lt;/b&gt;&#xD;
          
             should you have any questions or with to
             &#xD;
          &lt;a href="/contact"&gt;&#xD;
            &lt;b&gt;&#xD;
              
               book a demonstration
              &#xD;
            &lt;/b&gt;&#xD;
          &lt;/a&gt;&#xD;
          
             of TriSys Recruitment Software.
            &#xD;
        &lt;/div&gt;&#xD;
        &lt;div&gt;&#xD;
          &lt;br/&gt;&#xD;
        &lt;/div&gt;&#xD;
      &lt;/div&gt;&#xD;
    &lt;/div&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/TriSys+SmartClient+for+Windows+11+and+the+Microsoft+Store.png" alt="A computer screen with a microsoft logo on it."/&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Get+it+from+Microsoft-2d0dfe7f.png" length="15543" type="image/png" />
      <pubDate>Mon, 04 Oct 2021 18:16:56 GMT</pubDate>
      <guid>https://www.trisys.co.uk/trisys-for-the-microsoft-store</guid>
      <g-custom:tags type="string">Recruitment Software,Microsoft Store,Recruiting CRM,Recruitment CRM</g-custom:tags>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Microsoft_store_win10x.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Get+it+from+Microsoft-2d0dfe7f.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Software Process Maturity</title>
      <link>https://www.trisys.co.uk/software-process-maturity</link>
      <description>How TriSys compares to NASA in the maturity of its software over three decades.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         The maturity of any software house can be measured by the software process maturity model.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          When I first heard about this in the 1980's, praise was quite rightly being heaped on NASA who were able to
          &#xD;
    &lt;a href="https://ntrs.nasa.gov/api/citations/20110002684/downloads/20110002684.pdf" target="_blank"&gt;&#xD;
      
           re-use complex trajectory modelling software
          &#xD;
    &lt;/a&gt;&#xD;
    
          from the Apollo missions in the 1960's in their new space shuttle programme.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          I recently found an example where TriSys could also lay claim to re-use 20+ year old software in mission critical systems:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This note is from TriSys release notes almost 22 years ago:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;span&gt;&#xD;
    &lt;div&gt;&#xD;
    &lt;/div&gt;&#xD;
  &lt;/span&gt;&#xD;
  &lt;span&gt;&#xD;
    &lt;font&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;div&gt;&#xD;
          
             Build 4.03.006 - 24 September 1999
            &#xD;
        &lt;/div&gt;&#xD;
        &lt;div&gt;&#xD;
          &lt;br/&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;div&gt;&#xD;
          
             9. Ordering field added to TimeSheetPeriod table so that
             &#xD;
          &lt;span&gt;&#xD;
            
               the period combo on the timesheet form can order the
             &#xD;
          &lt;/span&gt;&#xD;
          &lt;span&gt;&#xD;
            
               periods based upon the specified order not on the
             &#xD;
          &lt;/span&gt;&#xD;
          &lt;span&gt;&#xD;
            
               start date.
             &#xD;
          &lt;/span&gt;&#xD;
          &lt;span&gt;&#xD;
            
               The timesheet period wizard will need to be updated in
             &#xD;
          &lt;/span&gt;&#xD;
          &lt;span&gt;&#xD;
            
               order to provide this capability.
             &#xD;
          &lt;/span&gt;&#xD;
        &lt;/div&gt;&#xD;
      &lt;/span&gt;&#xD;
      &lt;div&gt;&#xD;
        &lt;span&gt;&#xD;
        &lt;/span&gt;&#xD;
      &lt;/div&gt;&#xD;
      &lt;div&gt;&#xD;
      &lt;/div&gt;&#xD;
    &lt;/font&gt;&#xD;
  &lt;/span&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys has always relied upon Microsoft SQL Server, and the dynamic SQL code referred to in 1999 was subsequently ported from Unix/C then Win32 through to .NET which has formed our
           &#xD;
      &lt;a href="/recruitment-crm"&gt;&#xD;
        
            software platform
           &#xD;
      &lt;/a&gt;&#xD;
      
           for the last 22 years.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Just this week, we included this same Timesheet Period code, with no-redesign or enhancements, in our production
           &#xD;
      &lt;a href="https://api.trisys.co.uk" target="_blank"&gt;&#xD;
        
            Web API
           &#xD;
      &lt;/a&gt;&#xD;
      
           , and is now live serving our cross-platform customers in 2021, just like our Windows-only application did in 1999.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This demonstrates that TriSys, just like NASA, has the capabilities to transcend time and maintain re-usability of production, mission critical software over three decades.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Thank you to all the engineers at TriSys over the years who contributed to this milestone.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1446941303752-a64bb1048d54.jpg" length="871032" type="image/jpeg" />
      <pubDate>Thu, 04 Feb 2021 14:43:51 GMT</pubDate>
      <author>garry@trisys.co.uk (Garry Lowther)</author>
      <guid>https://www.trisys.co.uk/software-process-maturity</guid>
      <g-custom:tags type="string">nasa,cloud crm,timesheets,Recruitment API,win32,SQL Server</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1446941303752-a64bb1048d54.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1446941303752-a64bb1048d54.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Success Through Innovation</title>
      <link>https://www.trisys.co.uk/success-through-innovation</link>
      <description />
      <content:encoded>&lt;h3&gt;&#xD;
  
         Your Success is Our Success
        &#xD;
&lt;/h3&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         Welcome to our latest blog post, reviewing present and future TriSys technology innovations designed to help you succeed at what you do best.
        &#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         We have been incredibly busy as a result of the increased market demand for robust technology enabling remote working combined with the need for technology which streamlines business processes or, in other words, automates manual tasks no matter how complex, ensuring our customers can deliver even higher levels of service despite substantial operational pressure introduced as a result of the global pandemic.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The TriSys Business Platform has been developed with remote working at its core, thanks to the flexibility of deployment as a cloud service and also as a cloud-enabled service even when the TriSys database is deployed within our customers' internal networks.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;div&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Today, once again, we are proud in that our customers are experiencing the best technology available in the global recruitment software industry.
           &#xD;
      &lt;/span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/div&gt;&#xD;
    &lt;div&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Together, we are at cutting edge of what is possible, introducing breakthroughs at an incredible pace, with the highest level of quality for your business.
           &#xD;
      &lt;/span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/div&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;h3&gt;&#xD;
  
         The TriSys Technology Platform Stack
        &#xD;
&lt;/h3&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         Without getting into too much technical detail, we have always felt it incredibly important to be open and transparent about our technology, so that our customers truly know why the TriSys Platform is miles ahead of competitor systems and is therefore the most future-proof solution available to recruitment businesses:
        &#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;div&gt;&#xD;
      &lt;b&gt;&#xD;
        
            Database technology:
           &#xD;
      &lt;/b&gt;&#xD;
      
            we use Microsoft SQL Server, the same database technology used by the majority of FTSE100 and Fortune500 organisations.
          &#xD;
    &lt;/div&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           Cloud technology:
          &#xD;
    &lt;/b&gt;&#xD;
    &lt;span&gt;&#xD;
      
            long before the word "Cloud" started echoing in the corridors of companies, we were already specialised in Amazon AWS technology.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           API technology: 
           &#xD;
      &lt;span&gt;&#xD;
        
            our API is unlike anything else in the industry, offering unlimited flexibility/business alignment, no matter how challenging
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/b&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           Programming languages
           &#xD;
      &lt;span&gt;&#xD;
        
            : we use the same programming languages as those which are used to build platforms such as Amazon, GMail and more.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;b&gt;&#xD;
          
             64-bit architecture:
            &#xD;
        &lt;/b&gt;&#xD;
        
             ensuring the best performance on modern computers and terminal servers
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           Deployment mode:
          &#xD;
    &lt;/b&gt;&#xD;
    
           our customers can install TriSys onsite, in the cloud or even as a 'hybrid' - we can also offer a 100% dedicated cloud platform.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           Security: 
           &#xD;
      &lt;span&gt;&#xD;
        
            Multi-factor authentication, HTTPS/SSL Encryption by design.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;b&gt;&#xD;
          
             Rigorous methodology:
            &#xD;
        &lt;/b&gt;&#xD;
        
             the TriSys Platform works. Anytime, anywhere, on any device. This is the true testament to the quality of our development processes.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;h3&gt;&#xD;
  
         The TriSys 2021 Enterprise Solutions Portfolio
        &#xD;
&lt;/h3&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;div&gt;&#xD;
      &lt;ul&gt;&#xD;
        &lt;li&gt;&#xD;
          &lt;b&gt;&#xD;
            &lt;a href="/apex-cloud-suite"&gt;&#xD;
              
               Web Browser Application
              &#xD;
            &lt;/a&gt;&#xD;
          &lt;/b&gt;&#xD;
        &lt;/li&gt;&#xD;
        &lt;li&gt;&#xD;
          &lt;b&gt;&#xD;
            &lt;a href="/recruitment-crm"&gt;&#xD;
              
               Windows Application
              &#xD;
            &lt;/a&gt;&#xD;
          &lt;/b&gt;&#xD;
        &lt;/li&gt;&#xD;
        &lt;li&gt;&#xD;
          &lt;b&gt;&#xD;
            &lt;a href="/video-conferencing"&gt;&#xD;
              
               Video Conferencing
              &#xD;
            &lt;/a&gt;&#xD;
          &lt;/b&gt;&#xD;
        &lt;/li&gt;&#xD;
        &lt;li&gt;&#xD;
          &lt;b&gt;&#xD;
            &lt;a href="/mobile-apps"&gt;&#xD;
              
               Mobile CRM App
              &#xD;
            &lt;/a&gt;&#xD;
          &lt;/b&gt;&#xD;
        &lt;/li&gt;&#xD;
        &lt;li&gt;&#xD;
          &lt;b&gt;&#xD;
            &lt;a href="/mobile-apps"&gt;&#xD;
              
               Mobile Candidate App
              &#xD;
            &lt;/a&gt;&#xD;
          &lt;/b&gt;&#xD;
        &lt;/li&gt;&#xD;
        &lt;li&gt;&#xD;
          &lt;b&gt;&#xD;
            &lt;a href="/mobile-apps"&gt;&#xD;
              
               Mobile Client App
              &#xD;
            &lt;/a&gt;&#xD;
          &lt;/b&gt;&#xD;
        &lt;/li&gt;&#xD;
        &lt;li&gt;&#xD;
          &lt;b&gt;&#xD;
            &lt;a href="/website-builder"&gt;&#xD;
              
               Website Builder
              &#xD;
            &lt;/a&gt;&#xD;
          &lt;/b&gt;&#xD;
        &lt;/li&gt;&#xD;
        &lt;li&gt;&#xD;
          &lt;b&gt;&#xD;
            &lt;a href="/website-builder"&gt;&#xD;
              
               Candidate Portal
              &#xD;
            &lt;/a&gt;&#xD;
          &lt;/b&gt;&#xD;
        &lt;/li&gt;&#xD;
        &lt;li&gt;&#xD;
          &lt;b&gt;&#xD;
            &lt;a href="/website-builder"&gt;&#xD;
              
               Client Portal
              &#xD;
            &lt;/a&gt;&#xD;
          &lt;/b&gt;&#xD;
        &lt;/li&gt;&#xD;
        &lt;li&gt;&#xD;
          &lt;b&gt;&#xD;
            &lt;a href="/website-builder"&gt;&#xD;
              
               Timesheet Portal
              &#xD;
            &lt;/a&gt;&#xD;
          &lt;/b&gt;&#xD;
        &lt;/li&gt;&#xD;
        &lt;li&gt;&#xD;
          &lt;b&gt;&#xD;
            &lt;a href="/website-builder"&gt;&#xD;
              
               Online Forms Designer
              &#xD;
            &lt;/a&gt;&#xD;
          &lt;/b&gt;&#xD;
        &lt;/li&gt;&#xD;
        &lt;li&gt;&#xD;
          &lt;b&gt;&#xD;
            &lt;a href="/gdpr"&gt;&#xD;
              
               GDPR Automation
              &#xD;
            &lt;/a&gt;&#xD;
          &lt;/b&gt;&#xD;
        &lt;/li&gt;&#xD;
        &lt;li&gt;&#xD;
          &lt;b&gt;&#xD;
            &lt;a href="/apex-cloud-suite"&gt;&#xD;
              
               Marketing Campaigns
              &#xD;
            &lt;/a&gt;&#xD;
          &lt;/b&gt;&#xD;
        &lt;/li&gt;&#xD;
        &lt;li&gt;&#xD;
          &lt;b&gt;&#xD;
            &lt;a href="/apex-cloud-suite"&gt;&#xD;
              
               Marketing Analytics
              &#xD;
            &lt;/a&gt;&#xD;
          &lt;/b&gt;&#xD;
        &lt;/li&gt;&#xD;
        &lt;li&gt;&#xD;
          &lt;b&gt;&#xD;
            &lt;a href="/remote-desktop"&gt;&#xD;
              
               Hosted Cloud Desktop Service
              &#xD;
            &lt;/a&gt;&#xD;
          &lt;/b&gt;&#xD;
        &lt;/li&gt;&#xD;
        &lt;li&gt;&#xD;
          &lt;b&gt;&#xD;
            &lt;a href="/disaster-recovery"&gt;&#xD;
              
               Disaster Recovery as a Service
              &#xD;
            &lt;/a&gt;&#xD;
          &lt;/b&gt;&#xD;
        &lt;/li&gt;&#xD;
        &lt;li&gt;&#xD;
          &lt;b&gt;&#xD;
            &lt;a href="/business-cloud"&gt;&#xD;
              
               Business Continuity as a Service
              &#xD;
            &lt;/a&gt;&#xD;
          &lt;/b&gt;&#xD;
        &lt;/li&gt;&#xD;
        &lt;li&gt;&#xD;
          &lt;b&gt;&#xD;
            &lt;a href="/outlook-add-in"&gt;&#xD;
              
               Microsoft 365 Add-In
              &#xD;
            &lt;/a&gt;&#xD;
          &lt;/b&gt;&#xD;
        &lt;/li&gt;&#xD;
        &lt;li&gt;&#xD;
          &lt;b&gt;&#xD;
            &lt;a href="/browser-extension"&gt;&#xD;
              
               LinkedIn Browser Extension
              &#xD;
            &lt;/a&gt;&#xD;
          &lt;/b&gt;&#xD;
        &lt;/li&gt;&#xD;
        &lt;li&gt;&#xD;
          &lt;b&gt;&#xD;
            &lt;a href="/sdk"&gt;&#xD;
              
               Software Development Kit
              &#xD;
            &lt;/a&gt;&#xD;
          &lt;/b&gt;&#xD;
        &lt;/li&gt;&#xD;
        &lt;li&gt;&#xD;
          &lt;b&gt;&#xD;
            &lt;a href="/contact"&gt;&#xD;
              
               Bespoke Solutions
              &#xD;
            &lt;/a&gt;&#xD;
          &lt;/b&gt;&#xD;
        &lt;/li&gt;&#xD;
      &lt;/ul&gt;&#xD;
    &lt;/div&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;h3&gt;&#xD;
  
         Latest TriSys Platform Technology Updates
         &#xD;
  &lt;br/&gt;&#xD;
&lt;/h3&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      
           Video conferencing (high-quality, instantaneous video calling built into TriSys Apex, ideal for instant video collaboration)
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      
           Extensive upgrade to all the data grids, introducing additional functionality designed for higher productivity and decision-making
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      
           Direct click-to-open shortcut/link added to each grid, allowing the opening of database records by clicking within grid cell/data contents
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      
           Sticky grid columns allowing you to always have visibility over relational grid data, saving you time when navigating grids and drill-down
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      
           Fixed-width data grid columns, ensuring users can enable dozens/hundreds of grid columns without compromising readability
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      
           In-grid total row count choice, enabling users to display high volumes of data on a single grid page
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      
           In-grid checkbox allowing selection of all visible grid records 
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      
           Centralised grid filtering toggling (enable/disable conditional grid data filters with a single click)
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      
           Save grid filters and reset grid filters (ensuring users can easily save/reset their current grid filters)
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      
           Allowing users to choose their favourite font and font styles (this adds further usability enhancements and marketing alignment)
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      
           Automated PDF to DOCX Conversion when copying a candidate original CV to the candidate formatted CV field
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      
           Grid performance enhancements
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      
           Automatic session timeout lock
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      
           Enhanced document preview
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      
           Multi-colour CV keyword highlighting in CV preview area
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      
           Multi-colour Skills highlighting in CV preview area
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      
           Skills word highlighting in CV preview area
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      
           Intelligent LinkedIn searching from Contact grids &amp;amp; LinkedIn shortcuts directly in Contact grids
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      
           User E-mail and Diary synchronisation reporting
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      
           Enhanced Diary Manager functionality (show tasks within specific past/future date ranges, show/hide cleared tasks)
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Updated documentation and contextual F1 Help
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/innovation.jpg" length="25416" type="image/jpeg" />
      <pubDate>Sun, 31 Jan 2021 22:15:38 GMT</pubDate>
      <guid>https://www.trisys.co.uk/success-through-innovation</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/innovation.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/innovation.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Annual Roadmap for 2021</title>
      <link>https://www.trisys.co.uk/annual-roadmap-for-2021</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         We are planning some very exciting innovations and enhancements to the products and services of TriSys Business Software in 2021:
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;b&gt;&#xD;
        
            TriSys Apex  2021
           &#xD;
      &lt;/b&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Our
           &#xD;
      &lt;a href="/apex-cloud-suite"&gt;&#xD;
        
            cross-platform web browser recruitment CRM
           &#xD;
      &lt;/a&gt;&#xD;
      
           was released in 2014 and uses the TriSys cloud platform to process all its data and functionality. Customers with any type of computer, tablet or phone can access their recruitment data and conduct sophisticated workflows to drive their business forward, wherever they are and at any time. Q1 will see a significant user interface upgrade, with a business forms designer integrated with Apex Developer Studio in Q2 providing customers with the ability to build and program bespoke functionality.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys 2021
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The latest version of our premiere
          &#xD;
    &lt;a href="/recruitment-crm"&gt;&#xD;
      
           windows desktop recruitment CRM
          &#xD;
    &lt;/a&gt;&#xD;
    
          is now available to all existing customers. This application was first released in 1992 and is a rock-solid enterprise grade recruitment business app. For customers on the 2020 version, the application will automatically upgrade. All new features will be documented in the coming months. Our
          &#xD;
    &lt;a href="/sdk"&gt;&#xD;
      
           SDK
          &#xD;
    &lt;/a&gt;&#xD;
    
          is still the only recruiting software toolkit for Microsoft .Net.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys Cloud Platform
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Our
          &#xD;
    &lt;a href="/business-cloud"&gt;&#xD;
      
           cloud infrastructure platform
          &#xD;
    &lt;/a&gt;&#xD;
    
          was conceived and built in 2002. It has grown and matured to comprise literally hundreds of cloud servers distributed across the planet. Customers use our platform to store and process their large corporate data assets, via our software products and services. Expect more integration with world class web services through our
          &#xD;
    &lt;a href="/development"&gt;&#xD;
      
           Web API
          &#xD;
    &lt;/a&gt;&#xD;
    
          .
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys Mobile Suite
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Recruiters can access their recruitment database from their tablet and phone by installing our
          &#xD;
    &lt;a href="/mobile-apps"&gt;&#xD;
      
           app
          &#xD;
    &lt;/a&gt;&#xD;
    
          , however the mobile landscape is changing with a new class of 'app' called a progressive web app (PWA) which can be installed without visiting an app-store. When PWA technology is mature enough, we will be first to market. Recruitment agencies can also commission their own dedicated and branded mobile app using our
          &#xD;
    &lt;a href="/mobile-apps"&gt;&#xD;
      
           Vertex or TriOnyx
          &#xD;
    &lt;/a&gt;&#xD;
    
          technology to engage with their clients and candidates.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys Web Jobs
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Web Jobs fully integrates, or replaces your existing web site, by providing powerful candidate and client engagement portals. These portals can serve a multitude of functions such as job finding platforms, or timesheet management and payroll facilitation.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys Platformix
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          In 2019 we introduced a
          &#xD;
    &lt;a href="/website-builder"&gt;&#xD;
      
           website builde
          &#xD;
    &lt;/a&gt;&#xD;
    
          r technology utilising a mix of cloud platforms, which we called
          &#xD;
    &lt;a href="https://www.platformix.co.uk" target="_blank"&gt;&#xD;
      
           Platformix
          &#xD;
    &lt;/a&gt;&#xD;
    
          . This is the successor to Web Jobs in that it is a full recruitment website content management system (CMS) with very tight integration with the TriSys recruiting database, plus state of the art blogging, SEO compliancy, and analytics. We will continue to invest in building TriSys Widgets to allow our customers to build high engagement web portals. We will also continue integration with Stripe to allow Gig-Economy services to be built for our customers.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys Remote Desktop
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The original TriSys ASP was launched
          &#xD;
    &lt;a href="https://www.trisys.co.uk/trisys-asp-is-now-trisys-remote-desktop" target="_blank"&gt;&#xD;
      
           20 years ago
          &#xD;
    &lt;/a&gt;&#xD;
    
          , and comprises a
          &#xD;
    &lt;a href="/remote-desktop"&gt;&#xD;
      
           windows hosted desktop
          &#xD;
    &lt;/a&gt;&#xD;
    
          running on our cloud. This year we are launching a Windows 10 version with full compatibility with Microsoft Office 365 allowing customers to have full control over the apps they can install.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Should you wish to discuss your plans for implementing any of the above products and services, or indeed if you have ideas or recommendations about recruitment technology you would like us to develop, then please
          &#xD;
    &lt;a href="/contact"&gt;&#xD;
      
           contact us
          &#xD;
    &lt;/a&gt;&#xD;
    
          .
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1486673748761-a8d18475c757.jpg" length="452211" type="image/jpeg" />
      <pubDate>Sat, 16 Jan 2021 07:22:09 GMT</pubDate>
      <author>garry@trisys.co.uk (Garry Lowther)</author>
      <guid>https://www.trisys.co.uk/annual-roadmap-for-2021</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1486673748761-a8d18475c757.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1486673748761-a8d18475c757.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys Platformix - Business Websites for Recruitment Agencies</title>
      <link>https://www.trisys.co.uk/trisys-platformix-business-website-builder</link>
      <description>Modern website design service guaranteed to deliver an appealing, highly functional and fully integrated website solution.</description>
      <content:encoded>&lt;h3&gt;&#xD;
  &lt;b&gt;&#xD;
    
          TriSys Platformix - Modern Websites for Recruitment Agencies
         &#xD;
  &lt;/b&gt;&#xD;
&lt;/h3&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;b&gt;&#xD;
    
          What is TriSys Platformix?
         &#xD;
  &lt;/b&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      &lt;span&gt;&#xD;
        
            TriSys Platformix is the world's most advanced and easy to use website builder, allowing you to implement a new website with lightning-fast speed and quality. There are simply no alternatives which deliver such high quality results at such low cost.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           What are the key benefits of TriSys Platformix?
          &#xD;
    &lt;/b&gt;&#xD;
    &lt;br/&gt;&#xD;
    &lt;div&gt;&#xD;
      &lt;b&gt;&#xD;
        &lt;span&gt;&#xD;
          &lt;br/&gt;&#xD;
        &lt;/span&gt;&#xD;
      &lt;/b&gt;&#xD;
    &lt;/div&gt;&#xD;
    &lt;div&gt;&#xD;
      &lt;ul&gt;&#xD;
        &lt;li&gt;&#xD;
          &lt;b&gt;&#xD;
            &lt;span&gt;&#xD;
              
               A truly affordable solution
              &#xD;
            &lt;/span&gt;&#xD;
          &lt;/b&gt;&#xD;
        &lt;/li&gt;&#xD;
        &lt;li&gt;&#xD;
          &lt;b&gt;&#xD;
            &lt;span&gt;&#xD;
              
               Over 100 modern templates offering state of the art functionality and complete flexibility
              &#xD;
            &lt;/span&gt;&#xD;
          &lt;/b&gt;&#xD;
        &lt;/li&gt;&#xD;
        &lt;li&gt;&#xD;
          &lt;b&gt;&#xD;
            &lt;span&gt;&#xD;
              
               Innovative web design and hosting all bundled as one service including SSL/HTTPS security
              &#xD;
            &lt;/span&gt;&#xD;
          &lt;/b&gt;&#xD;
        &lt;/li&gt;&#xD;
        &lt;li&gt;&#xD;
          
             Complete elimination of overhead costs associated with designing a website from scratch
            &#xD;
        &lt;/li&gt;&#xD;
        &lt;li&gt;&#xD;
          &lt;span&gt;&#xD;
            
              A comprehensive set of features and benefits unrivalled by the most popular CMS systems
             &#xD;
          &lt;/span&gt;&#xD;
          &lt;br/&gt;&#xD;
        &lt;/li&gt;&#xD;
        &lt;li&gt;&#xD;
          &lt;span&gt;&#xD;
            
              No limit as to what can be achieved in tandem with your TriSys database and/or any line of business application
             &#xD;
          &lt;/span&gt;&#xD;
          &lt;br/&gt;&#xD;
        &lt;/li&gt;&#xD;
        &lt;li&gt;&#xD;
          
             Highly integrated with the TriSys API, TriSys Platformix for recruitment businesses allows your live vacancies to be published in real time to your TriSys Platformix website, where candidates can search jobs using a range of intuitive filters, register and apply to jobs, login, update their personal contact data and communications preferences and much more
            &#xD;
        &lt;/li&gt;&#xD;
      &lt;/ul&gt;&#xD;
      &lt;div&gt;&#xD;
        
            In a nutshell, TriSys Platformix c
            &#xD;
        &lt;span&gt;&#xD;
          
             ompletely eliminates typical risks associated with website/database integration by putting you in control and supporting you throughout your website go live project.
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/div&gt;&#xD;
      &lt;div&gt;&#xD;
        &lt;span&gt;&#xD;
          &lt;br/&gt;&#xD;
        &lt;/span&gt;&#xD;
      &lt;/div&gt;&#xD;
      &lt;div&gt;&#xD;
        &lt;span&gt;&#xD;
          
             TriSys customers are using Platformix not only as the CMS system powering their websites but also as a highly integrated candidate registration solution with hundreds of registration fields and highly compliant candidate registration experiences, saving tens of thousands of pounds.
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/div&gt;&#xD;
      &lt;div&gt;&#xD;
        &lt;span&gt;&#xD;
          &lt;br/&gt;&#xD;
        &lt;/span&gt;&#xD;
      &lt;/div&gt;&#xD;
      &lt;div&gt;&#xD;
        &lt;span&gt;&#xD;
          
             TriSys Platformix is the next generation solution for recruitment agencies looking for a modern, integrated, mobile-enabled candidate and client self-service experience. Platformix is a solution uniquely available through TriSys Business Software.
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/div&gt;&#xD;
      &lt;div&gt;&#xD;
        &lt;span&gt;&#xD;
          &lt;br/&gt;&#xD;
        &lt;/span&gt;&#xD;
      &lt;/div&gt;&#xD;
      &lt;div&gt;&#xD;
        &lt;span&gt;&#xD;
          &lt;b&gt;&#xD;
            
              Learn more about
              &#xD;
            &lt;a href="/website-builder"&gt;&#xD;
              
               TriSys Platformix
              &#xD;
            &lt;/a&gt;&#xD;
            
              or
              &#xD;
            &lt;a href="/contact"&gt;&#xD;
              
               get in touch
              &#xD;
            &lt;/a&gt;&#xD;
            
              to discuss your requirements and
              &#xD;
            &lt;a href="/contact"&gt;&#xD;
              
               book an online demonstration
              &#xD;
            &lt;/a&gt;&#xD;
            
              .
             &#xD;
          &lt;/b&gt;&#xD;
        &lt;/span&gt;&#xD;
      &lt;/div&gt;&#xD;
      &lt;div&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/div&gt;&#xD;
    &lt;/div&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/platformix-template-examples.png" length="1212682" type="image/png" />
      <pubDate>Tue, 15 Dec 2020 22:50:19 GMT</pubDate>
      <guid>https://www.trisys.co.uk/trisys-platformix-business-website-builder</guid>
      <g-custom:tags type="string">Recruitment websites,recruitment website design,recruitment agency hosting,recruitment database website integration</g-custom:tags>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/platformix-template-examples.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/platformix-template-examples.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys Remote Desktop as a Service - Key Benefits</title>
      <link>https://www.trisys.co.uk/trisys-remote-desktop-for-homeworking</link>
      <description>Overview of the TriSys Cloud Hosted Remote Desktop Service for recruitment agencies.</description>
      <content:encoded>&lt;h3&gt;&#xD;
  &lt;span&gt;&#xD;
    
          The TriSys cloud remote desktop as a service (DaaS) for recruitment agencies
         &#xD;
  &lt;/span&gt;&#xD;
&lt;/h3&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           As you may already know, the TriSys Cloud Remote Desktop Service was the world's first cloud-hosted recruitment agency software database solution.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Thanks to this breakthrough, recruitment agencies no longer had to purchase and maintain expensive in-house IT systems, therefore embracing financial flexibility and mobility nowadays called "work from anywhere".
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           What is the TriSys Remote Desktop service?
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            A dedicated per-user cloud-hosted computer running Windows 10 (or newer) with powerful hardware specifications designed for best performance
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            A flexible monthly per-user subscription allowing you to scale your investment as necessary
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Using a shortcut on their computers/devices or even a web browser, recruitment consultants log into their dedicated cloud hosted remote desktop where they can use the latest version of applications such as Microsoft Word, Outlook, Excel, PowerPoint and more (including line of business applications such as payroll software and more)
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            All data is fully hosted in the TriSys cloud, both increasing the security of your data as well as reducing the risk exposure associated with staff keeping sensitive business data on their own computers/devices
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            A convenient solution for businesses with little or limited IT support services looking for a combined recruitment CRM solution and a managed cloud desktop service where every existing and new consultant can have a cloud remote desktop configured in seconds
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            A solution which does not require users to have powerful computers, hence eliminating the need to purchase/renew expensive computers and software
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Fully integrated with Microsoft 365, also allowing you to back up your data into the Microsoft OneDrive cloud
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Works on any device (Windows, Apple, Tablets and Mobiles)
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Supports multiple screens, local peripherals including printers, scanners and more
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Includes transparent automatic updates, modern antivirus/antimalware solution and full daily backups
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           What are the key benefits?
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;span&gt;&#xD;
          
             Convenience:
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            the fastest way to deliver every member of staff a ready to use computing environment including TriSys Recruitment Software
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Flexibility:
           &#xD;
      &lt;/span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;span&gt;&#xD;
          
             pay monthly based on how many users are using the service, scaling your spend as required (pay only for what you use)
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Security:
           &#xD;
      &lt;/span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;span&gt;&#xD;
          
             all your data is stored in the TriSys Cloud, reducing the risk associated with staff storing business data on their work or personal devices
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Tax deductible:
           &#xD;
      &lt;/span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;span&gt;&#xD;
          
             as an operational expenditure, the TriSys Remote Desktop service is fully tax deductible
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           How does it work?
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ol&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Users download the TriSys Remote Desktop shortcut onto their devices (or connect via the TriSys Support portal where preferable)
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Every morning, whether working in the office, at home or on the road, users enter their TriSys Cloud username and password and connect to the service
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            The remote desktop session opens as shown in the example below, ready to use (just as if the cloud remote desktop was your actual local computer)
           &#xD;
      &lt;/span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ol&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/trisys-remote-desktop-2020-1.png" alt="A computer screen with a bunch of windows open"/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         The TriSys cloud hosted remote desktop is an ultra-modern solution used by hundreds of recruitment agencies worldwide, based on industry-standard Microsoft technology. O
         &#xD;
  &lt;span&gt;&#xD;
    
          ur customers enjoy the benefits of a modern cloud computing experience without the costs typically associated with procuring, designing and maintaining such solutions internally or using their privately managed clouds/datacenters.
         &#xD;
  &lt;/span&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           Would you like to learn more about the
           &#xD;
      &lt;a href="/remote-desktop"&gt;&#xD;
        
            TriSys Remote Desktop
           &#xD;
      &lt;/a&gt;&#xD;
      
           service?
           &#xD;
      &lt;a href="/contact"&gt;&#xD;
        
            Get in touch
           &#xD;
      &lt;/a&gt;&#xD;
      
           today.
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/homeworking.jpg" length="118727" type="image/jpeg" />
      <pubDate>Wed, 25 Nov 2020 21:30:09 GMT</pubDate>
      <guid>https://www.trisys.co.uk/trisys-remote-desktop-for-homeworking</guid>
      <g-custom:tags type="string">Recruitment,Recruitment Software,Cloud Recruitment Software,Recruitment CRM,Recruitment Cloud Desktop,Desktop as a Service,Windows Cloud Desktop,Amazon Cloud Desktop</g-custom:tags>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/TriSys+Remote+Desktop.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/homeworking.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys Outlook Add-In for Microsoft 365</title>
      <link>https://www.trisys.co.uk/trisys-outlook-add-in-for-microsoft-365</link>
      <description />
      <content:encoded>&lt;h3&gt;&#xD;
  &lt;b&gt;&#xD;
    
          Announcing the newest version of the TriSys Outlook add-in for Microsoft 365
         &#xD;
  &lt;/b&gt;&#xD;
&lt;/h3&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         We are excited to announce the public availability of the newest TriSys add-in for Microsoft Outlook.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Whilst the original version remains fully functional and supported, the newest version is designed specifically for all TriSys customers using Microsoft 365 as their e-mail service provider.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The new TriSys recruitment add-in for Microsoft Outlook is comprehensively integrated with the TriSys recruitment software database system, enabling recruitment consultants to complete the following activities directly inside their inbox, simply by clicking any e-mail message:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Add new contact to the TriSys database
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Update existing contact already in TriSys
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            View contact details, requirements, placements, notes and tasks inside Outlook
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Parse CV from Outlook into TriSys
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Run actions directly inside Outlook
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Open TriSys contact records with a single click
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            And more...
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
    &lt;div&gt;&#xD;
      &lt;b&gt;&#xD;
        
            Who should use the new Outlook add-in?
           &#xD;
      &lt;/b&gt;&#xD;
    &lt;/div&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        &lt;span&gt;&#xD;
          
             All customers with a Microsoft 365 subscription who have the "Exchange" service included in their Microsoft 365 service
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        &lt;span&gt;&#xD;
          
             Customers who have Outlook for Office365 running on their computers
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        &lt;span&gt;&#xD;
          
             Customers who use have Outlook on the Web 
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        &lt;span&gt;&#xD;
          
             Customers who use the TriSys cloud service
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        &lt;span&gt;&#xD;
          
             Customers who use Microsoft 365, have an onsite server-based installation of TriSys and prefer using the newest Outlook add-in
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The TriSys Outlook add-in works with both the desktop version of Outlook for Office 365 as well as the web-based version of Outlook for Office 365 therefore ensuring a consistent, familiar experience across all devices.
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;b&gt;&#xD;
        &lt;a href="/outlook-add-in"&gt;&#xD;
          
             Click here
            &#xD;
        &lt;/a&gt;&#xD;
        
            to learn more or get in touch to book an
            &#xD;
        &lt;a href="/contact"&gt;&#xD;
          
             online demonstration
            &#xD;
        &lt;/a&gt;&#xD;
        
            .
           &#xD;
      &lt;/b&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/outlook-desktop-add-in-2020.png" alt="A computer screen with a trisys logo on it"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/microsoft-office-outlook-email-logo.png" length="18047" type="image/png" />
      <pubDate>Tue, 27 Oct 2020 15:58:04 GMT</pubDate>
      <guid>https://www.trisys.co.uk/trisys-outlook-add-in-for-microsoft-365</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/microsoft-office-outlook-email-logo.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/microsoft-office-outlook-email-logo.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys Browser Extension for LinkedIn</title>
      <link>https://www.trisys.co.uk/trisys-browser-extension-for-linkedin</link>
      <description />
      <content:encoded>&lt;h3&gt;&#xD;
  &lt;b&gt;&#xD;
    
          Add &amp;amp; update contacts from LinkedIn, run actions and much more - with a single click
         &#xD;
  &lt;/b&gt;&#xD;
&lt;/h3&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         We are happy to announce the public availability of the newest version of the
         &#xD;
  &lt;a href="/browser-extension"&gt;&#xD;
    
          TriSys Browser Extension for LinkedIn
         &#xD;
  &lt;/a&gt;&#xD;
  
         .
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           What is the TriSys Browser Extension?
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      &lt;span&gt;&#xD;
        
            A modern web-browser extension available directly on the Edge and Chrome stores, allowing recruitment consultants to import contact details directly from LinkedIn into the TriSys recruitment software database as well as view detailed candidate and client record information directly on their LinkedIn profile pages and much more. A true productivity assistant included in the TriSys cloud recruitment CRM service.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The TriSys Browser Extension for LinkedIn is available for all TriSys customers using the TriSys recruitment API service.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;a href="/browser-extension"&gt;&#xD;
          
             Click here
            &#xD;
        &lt;/a&gt;&#xD;
        
            to learn more or get in touch to book an
            &#xD;
        &lt;a href="/contact"&gt;&#xD;
          
             online demonstration
            &#xD;
        &lt;/a&gt;&#xD;
        
            .
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Browser+Extension+-+LinkedIn+Integration.png" alt="A computer screen with a linkedin logo on it"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/trisys-apex-multiple-devices.png" length="60034" type="image/png" />
      <pubDate>Tue, 22 Sep 2020 13:55:43 GMT</pubDate>
      <guid>https://www.trisys.co.uk/trisys-browser-extension-for-linkedin</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/LinkedIn-Icon-Square.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/trisys-apex-multiple-devices.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Welcome to TriSys Apex - Your New Recruitment Software Platform</title>
      <link>https://www.trisys.co.uk/welcome-to-trisys-apex-your-new-recruitment-software-platform</link>
      <description />
      <content:encoded>&lt;h3&gt;&#xD;
  &lt;b&gt;&#xD;
    &lt;font&gt;&#xD;
      
           Welcome to TriSys Apex - Your New Recruitment CRM/ATS Database
          &#xD;
    &lt;/font&gt;&#xD;
  &lt;/b&gt;&#xD;
&lt;/h3&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This article contains instructions on how to get the best out of TriSys Apex, your brand new recruitment software system, created and supported by our specialist recruitment software teams based in Cambridge, UK.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 1 - Login
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Once you have received an e-mail confirming your TriSys account/login is ready, please login to your database at
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="https://apex.trisys.co.uk" target="_blank"&gt;&#xD;
      
           https://apex.trisys.co.uk
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            (click '
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="https://support.trisys.co.uk/?ForgottenPassword" target="_blank"&gt;&#xD;
      
           Forgotten Password
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' in case you have forgotten or need to reset your password for any reason).
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Adjust Web Browser Zoom Level
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 2 - Welcome Wizard
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If this is your first login, you will see the "Welcome Wizard" screen which you should complete as this ensures your User record on your database has the relevant information such as Job Title, Work E-Mail, Work Mobile and other information such as your photo and more.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 3  - Configure Company Email Signature
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 4 - Configure Email Send Integration
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Configure your E-Mail account integration settings (which is done as part of Step 2, however if for any reason this has not yet been done then you will be unable to send e-mails using the system). Configure your e-mail integration for sending e-mails using the "E-Mail" tab of the User Options area in TriSys.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 5 - Configure Email and Diary Synchronisation
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Configure your E-Mail Sync and Diary Sync (for Office365)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 6 - Office365 Add-In Integration
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 7 - LinkedIn Integration
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 8 - User Interface Navigation
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Learn about the user interface and navigation, by showing the 'Help Guide' (click the button or press the F1 key at any time, in any area of the system. This will display contextual pop-up help/information in many cases also including a detailed video explainer).
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 9 - Database Security Management
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           You can hide visual areas of your recruitment CRM database, this is done using the 'Security' tab within the Administration Console'  (available to system administrators only). By default end users cannot delete records and cannot export data. This ensures you can gradually grant such permissions where required.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 10 - Import Client and Candidate Data
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Use the "Administration Console &amp;gt; Data Import" menu to import data using Microsoft Excel (you can upload all your client contact and candidate contact details in seconds. Ask your account manager to validate the data import as this will help detect any issues before the data import takes place. If you do not see "Data Import" available within the 'Administration Console' menu please use the Administration Console 'Security' tab to reveal the 'Data Import' menu for your own user login (only system administrators or other explicitly authorised users should be able to import data as this is a sensitive/important operation). Should you have many candidate CV's which you would like to upload, please contact your account manager who will advise you on bulk-importing candidates using their CV's whilst bulk-importing clients using a Microsoft Excel template file (which can be downloaded from within the 'Data Import' area of the system).
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 11 - Define Skills/Attributes
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys recruitment software allows you to assign skills to absolutely anything (clients, candidates, companies, requirements, placements, timesheets, tasks, notes and more). This ensures your database is both highly searchable and flexible, supporting your real-world skilling methodology.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Skills are managed by system administrator users, using the "Attributes/Lookups" tab of the Administration Console. Please contact your account manager who will help with defining the ideal database skilling methodology.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 12 - Job Titles
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys allows you to add and edit job titles easily. To add a new job title simply add a new contact or open an existing contact, then using the 'Job Title' field type the name of a job title and save the record. If this job title already exists on the database, it will be used as expected for the saved record. If the job title is new and did not previously exist, it is automatically added to the list of job titles as soon as you save the database record.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 13 - Adding Contacts (Clients, Candidates, ClientCandidates, Referees)
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           To ensure consistency and easy of use, all contact records look the same regardless of contact type. The "Type" field on a contact record identifies the type of contact and this is how you differentiate between "Contacts" in TriSys.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 14 - Associating Candidates with Companies
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 15 - Adding Client Contacts to Companies
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 16 - Moving Client Contacts Between Companies
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 17 - Adding Requirements to Client Contacts
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 18 - Boolean Searching
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 19 - Saved Searches
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 20 - Actions
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 21 - Shortlist Actions
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 22 - Placements
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 23 - Timesheets
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 24 - Dashboards
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 25 - Reports
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 26 - Candidate Portal
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 27- Client Portal
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 28- Website Integration
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 29 - Platformix Website Builder
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Shortlist Actions - allow browser popups from https//apex. &amp;amp; always open files of this type
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/GettyImages-1003365394-2onboarding700-700x450.jpg" length="36991" type="image/jpeg" />
      <pubDate>Tue, 08 Sep 2020 10:35:31 GMT</pubDate>
      <guid>https://www.trisys.co.uk/welcome-to-trisys-apex-your-new-recruitment-software-platform</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/GettyImages-1003365394-2onboarding700-700x450.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/GettyImages-1003365394-2onboarding700-700x450.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Searching &amp; Reviewing Candidate CV's in TriSys Apex</title>
      <link>https://www.trisys.co.uk/searching-reviewing-candidate-cv-s-in-trisys-apex</link>
      <description />
      <content:encoded>&lt;h3&gt;&#xD;
  &lt;b&gt;&#xD;
    
          Visualising candidate CV's using the latest keyword
         &#xD;
  &lt;/b&gt;&#xD;
  &lt;b&gt;&#xD;
    
          search &amp;amp; highlight technology
         &#xD;
  &lt;/b&gt;&#xD;
&lt;/h3&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Today we have updated all TriSys Apex customer databases to incorporate the latest functionalities.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           An important new functionality is now available to all TriSys Apex users, allowing you to experience the benefits of keyword colour highlighting when reviewing CV Free Text Search results.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
            As shown in the example below:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/cv-keyword-highlight.png" alt="A screenshot of a computer screen with a green arrow pointing to the right."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           For every word or expression used in the search criteria text field, you are now able to preview the candidate CV with all matching keywords/expressions automatically highlighted in the Contact Preview window/panel, where different colours are used to identify different keywords and the same colour identifies equal keywords.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This new functionality greatly enhances the user experience when reviewing CV's as it enables:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           &amp;gt; Faster reading and reviewing of candidate CV's
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           &amp;gt; Faster, higher quality recruitment workflow
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           &amp;gt; Improved decision making
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Our future development plans are well defined and include progressive enhancements to the candidate review experience using the Contact Preview panel, integrated video conferencing/calls directly from within contact grids and more. All delivered seamlessly through our automatic update technology.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            As usual, please
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/contact"&gt;&#xD;
      
           get in touch
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            should you wish to book a demonstration or discuss any questions.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/iStock-628220146.jpg" length="148907" type="image/jpeg" />
      <pubDate>Thu, 03 Sep 2020 11:19:03 GMT</pubDate>
      <guid>https://www.trisys.co.uk/searching-reviewing-candidate-cv-s-in-trisys-apex</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/cv-search.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/iStock-628220146.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Dynamic Search Results in TriSys Apex</title>
      <link>https://www.trisys.co.uk/dynamic-search-results-in-trisys-apex</link>
      <description />
      <content:encoded>&lt;h3&gt;&#xD;
  &lt;b&gt;&#xD;
    
          What are dynamic search results and why do they matter?
         &#xD;
  &lt;/b&gt;&#xD;
&lt;/h3&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           On 28/08/2020 we have rolled out a transparent automatic global update to all TriSys Apex customers, enabling our newest API-driven Dynamic Search Results technology, designed to enhance your database searching experience and further optimise the value of your Contact, Company, Requirement, Placement and Timesheet data.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This automatic update falls in line with our promise to deliver continued transparent updates to TriSys Customers, enhancing their service and providing functionalities which have traditionally only been found in the TriSys Enterprise Windows Desktop Application system.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/h4&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            From this moment onwards, when you run a search using TriSys Apex, the search results Grid will contain
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Dynamic
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            fields which are automatically inserted as columns in the leftmost area of the Grid (as highlighted in the example below).
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/Dynamic+Fields.png" alt="A screenshot of a contacts grid with a green arrow pointing to the last contact."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            The reason why these fields are called "Dynamic" is simple: they are automatically/dynamically added as fields into the search results grid
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            when you use these fields as part of your
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           search criteria
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .﻿
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ﻿
          &#xD;
    &lt;/span&gt;&#xD;
    
          ﻿
          &#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            The example below illustrates a Contact search with 3 fields (numbers
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           1,2,3
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ).
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ﻿
          &#xD;
    &lt;/span&gt;&#xD;
    
          ﻿
          &#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
      
           ﻿
          &#xD;
    &lt;/span&gt;&#xD;
    
          ﻿
          &#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            For each of these 3 fields, note the search criteria in blue (letters
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           A, B, C
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           )﻿.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/Dynamic+Fields+-+Search+Query.png" alt="A screenshot of a website with a few buttons on it."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           As you run the Search, you will see the new Dynamic Fields (1,2,3) added to the left of the search results Grid.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ﻿
          &#xD;
    &lt;/span&gt;&#xD;
    
          ﻿
          &#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Also note how each dynamic field contains the matching search results (A,B,C) which is known as "evidence-based search results" technology, showing the actual data matching the search criteria (making the search results more comprehensive which in turn both speeds up and increases the quality of your decisions).
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/Dynamic+Fields+-+Search+Results.png" alt="A diagram of dynamic fields and standard grid fields"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           When searching Candidates, you will very often search one or multiple keywords and text expressions within their CV's. This feature is now enriched thanks to a CV Free Text Search intelligent ranking algorithm returning the relevancy (or 'Ranking') of each candidate according to the keyword(s) used in the search criteria, helping you determine the most suitable candidates/search results. This is shown in purple below.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/Candidate+CV+Free+Text+Search-544e668e.png" alt="A screenshot of a web page showing a contact search criteria."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           When searching candidate Skills or Attributes (as shown in the example below) you will also benefit from the power of Dynamic Search Results, where you can instantly confirm which candidates speak a given language (as a Skill example) however you are also presented with all other relevant Skills associated with the same Skill Category - so in the example below whilst you may be looking for French speaking candidates, note how the first candidate in the search results speaks French and also multiple other languages, which could possibly make this a preferential candidate should the company looking to hire have additional language requirements or international offices, etc.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/skills+searching.png" alt="A screenshot of a contact search criteria page."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Dynamic and evidence-based search results help you find data with greater accuracy, in addition to adding value to existing data and helping you optimise each database search, every time.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
    
          ﻿
          &#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           All fields in your TriSys database support the new Dynamic Search Results technology.
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ﻿
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            You could also run a search for all
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Companies
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            with a certain number of placements (for example all companies with at least 1 Placement) a simple search which will help you detect and target your best customers and which will likely help you generate additional opportunities with your best customers (note how the search results are sorted Ascending, which will place the companies with the highest number of Placements at the top of the search results). From here you could easily run a Mail Merge to some or all Clients within each Company and promote your services further.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/Placement+Count+Search.png" alt="A screenshot of a website showing a list of people."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Dynamic Search Result Fields and Evidence-based Search Results technology is designed to help recruitment consultants run simple and comprehensive boolean searches, through a familiar, easy to use interface, offering time-savings and better search results which translate into superior client and candidate relationship management and recruitment workflow productivity.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ﻿
          &#xD;
    &lt;/span&gt;&#xD;
    
          ﻿
          &#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           What are you waiting for? Login to your TriSys Apex database today and re-run any Search or Saved Search to see the new dynamic search technology in action and experience the benefits right now.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ﻿
          &#xD;
    &lt;/span&gt;&#xD;
    
          ﻿
          &#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Would you like to discuss the new search results technology further, do you have any questions and/or would you like to empower your team with additional knowledge to make the most of TriSys Recruitment Software?
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ﻿
          &#xD;
    &lt;/span&gt;&#xD;
    
          ﻿
          &#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;a href="/contact"&gt;&#xD;
      
           Get in touch
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h4&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/Update.jpg" length="44197" type="image/jpeg" />
      <pubDate>Fri, 28 Aug 2020 15:41:19 GMT</pubDate>
      <guid>https://www.trisys.co.uk/dynamic-search-results-in-trisys-apex</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/Update.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/Update.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Integrated Email Marketing Campaigns</title>
      <link>https://www.trisys.co.uk/integrated-email-marketing-campaigns</link>
      <description>Marketing Campaign module for recruitment agencies. Cloud recruitment software solution allowing high volume mass mails directly from your TriSys recruitment CRM database.</description>
      <content:encoded>&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/TriSys-Marketing-Campaigns.png" alt="A screenshot of a website for trisys marketing campaigns."/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;h3&gt;&#xD;
  
         Why use the TriSys Marketing Campaigns module available in TriSys Apex?
        &#xD;
&lt;/h3&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Following our previous
          &#xD;
    &lt;b&gt;&#xD;
      &lt;a href="/marketing-campaign-management"&gt;&#xD;
        
            blog post
           &#xD;
      &lt;/a&gt;&#xD;
    &lt;/b&gt;&#xD;
    
           about automated email marketing campaigns for fully automated GDPR compliance workflows, we are now introducing the next blog entry in this series.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  
         Did you know TriSys Apex offers a powerful mass mailing module designed to send hundreds of thousands of personalised e-mails with a single click.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           Creating a new mass mail campaign is easy:
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ol&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Name the campaign
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Choose the sender email address
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Configure the personalised mail merge template
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Select list of database recipients
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Schedule the send
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ol&gt;&#xD;
    &lt;div&gt;&#xD;
      
           Every individually sent email contains built-in analytics to determine whether the email was delivered, open/read and which hyperlinks in the email have been clicked, all presented using a user-friendly campaign statistics summary with support for bespoke workflows where required.
          &#xD;
    &lt;/div&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           Why use the integrated email marketing campaign module?
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            It is built into your
            &#xD;
        &lt;a href="/apex-cloud-suite"&gt;&#xD;
          
             TriSys Apex
            &#xD;
        &lt;/a&gt;&#xD;
        
            database, enabling you to seamlessly mass-mail your clients and candidates
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            No need to manually export/import/sync contact data between 3rd party mass mail systems
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Mass mail unlimited contacts using personalised merge fields directly from your TriSys database and your email service provider and/or our platform
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        &lt;span&gt;&#xD;
          
             Faster campaign execution and follow ups resulting in faster revenue
            &#xD;
        &lt;/span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        &lt;span&gt;&#xD;
          
             Added privacy and GDPR peace of mind
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        &lt;span&gt;&#xD;
          
             Integrated ready to use campaign reporting &amp;amp; analytics
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        &lt;span&gt;&#xD;
          
             Supports any level of bespoke functionality and intelligent automation as optional services tailored for your needs
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           Would you like to book a demonstration?
           &#xD;
      &lt;a href="/contact"&gt;&#xD;
        
            Get in touch today
           &#xD;
      &lt;/a&gt;&#xD;
      
           .
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/email-marketing.png" length="86747" type="image/png" />
      <pubDate>Wed, 05 Aug 2020 13:29:57 GMT</pubDate>
      <guid>https://www.trisys.co.uk/integrated-email-marketing-campaigns</guid>
      <g-custom:tags type="string">Cloud Recruitment Software,Recruitment Marketing,Recruitment CRM,Recruiting CRM,Cloud Recruitment CRM</g-custom:tags>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/email-marketing-2.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/email-marketing.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys Recruitment Software for the Microsoft Store</title>
      <link>https://www.trisys.co.uk/trisys-recruitment-software-for-the-microsoft-store</link>
      <description>TriSys Recruitment Software for the Microsoft Store</description>
      <content:encoded>&lt;h3&gt;&#xD;
  &lt;b&gt;&#xD;
    
          A Modern Consumer Experience - Pioneered by TriSys Recruitment Software
         &#xD;
  &lt;/b&gt;&#xD;
&lt;/h3&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         Today we are excited to announce a key roadmap goal for the TriSys Recruitment Software platform: the integration with the Microsoft Store.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           What is the Microsoft Store?
          &#xD;
    &lt;/b&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;div&gt;&#xD;
      
           The Microsoft Store is a digital storefront for Windows users. It offers all sorts of digital content for download in one place, some free and some paid. You can think of it as a similar offering to Google Play for Android users and Apple's App Store.
          &#xD;
    &lt;/div&gt;&#xD;
    &lt;div&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/div&gt;&#xD;
    &lt;div&gt;&#xD;
      &lt;b&gt;&#xD;
        
            Where is the Microsoft Store?
           &#xD;
      &lt;/b&gt;&#xD;
    &lt;/div&gt;&#xD;
    &lt;div&gt;&#xD;
      
           The Microsoft Store is an online portal available on modern Windows operating systems
          &#xD;
    &lt;/div&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Microsoft-Store-Open.png" alt="A screenshot of the microsoft store on a computer."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           What are the Benefits of using the Microsoft Store?
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Ensuring all our customers can install and update TriSys Recruitment Software as seamlessly as possible has always been a key guarantee with TriSys technology. The Microsoft Store further accelerates the deployment of our
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/recruitment-crm"&gt;&#xD;
      
           Recruitment CRM
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            solution, saving you time and money.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Our strong alignment with the Microsoft Platform enables us to deliver robust, high quality software solutions to our customers, today and in the future.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Stay tuned for future communications around TriSys Recruitment Software for the Microsoft Store / Windows 10 / Windows 11
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Microsoft-store.jpg" length="140272" type="image/jpeg" />
      <pubDate>Mon, 20 Jul 2020 13:09:05 GMT</pubDate>
      <guid>https://www.trisys.co.uk/trisys-recruitment-software-for-the-microsoft-store</guid>
      <g-custom:tags type="string">Recruitment,Recruitment Software,Cloud Recruitment Software,Windows Store,Recruiting CRM,Microsoft Store</g-custom:tags>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Microsoft-store.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Microsoft-store.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Facebook App Removal</title>
      <link>https://www.trisys.co.uk/facebook-app-removal</link>
      <description>Samsung not allowing Facebook to be removed from their phones is an error of judgement.</description>
      <content:encoded>&lt;h3&gt;&#xD;
  &lt;b&gt;&#xD;
    
          Facebook App Removal
         &#xD;
  &lt;/b&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/h3&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If you like Facebook in its current form, then you may not have noticed the problem that Samsung devices will no longer allow the Facebook app to be removed.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ﻿
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Now a few years ago you may not have had a problem with Facebook, however recent news articles indicate that a lot of users and paying advertisers are less 
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           than happy.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ﻿
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Facebook in recent months/years have seen themselves dragged through the press for data breaches, questionable censoring (or lack of), and how they 
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           use users data (let's not forget Cambridge Analytica). They have also been "invited" to the US congress and UK government (although Mr Zuckerberg would not come) to explain themselves.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ﻿
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Now, if you listen to the Samsung reps, they say you can "Disable" the app and it is the same as removing it (except for space), so if the "Disable" option is the same as removing it, then why not let us remove it?
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ﻿
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Facebook are not the most trustworthy when using personal details, so can we trust that a "Disabled" Facebook app will not still continue to harvest personal data? .... NO, NO, NO and
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           NO
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            . 
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    
          We are all aware that we purchase the hardware and accept the Terms and Conditions of the operating system and read them thoroughly every time it comes up, h
          &#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            owever you have to question "
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           how
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            " your personal data is used, regardless of long winded T&amp;amp;C's.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ﻿
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Is it not fair to expect that having paid the astronomical amount for phones/tablets these days, that you have the option to decide what to have (or not have) on it. 
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Not according to Samsung who say :-
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ﻿
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Well actually you did pay for the phone the way it is, no more, no less.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           You own the hardware, but you have only licensed the software on it. 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ﻿
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Samsung have been getting more restrictive on the apps you can't remove with each new version and before long all the onboard space will be taken up by compulsory apps. Samsung will then increase the memory capacity to compensate and ultimately charge you more, so you are actually going to pay Samsung to host apps that they decide you 
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           must have.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ﻿
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            I have been a fan of Samsung
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           forever
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            , however I'm now beginning to question whether they deserve that loyalty.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    
          In my opinion, they will now come under the same microscope as Facebook (and that may be a good thing) however they may end up losing long standing loyal customers and make very few new ones.
         &#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Wherever you are, Whoever you're with, Stay Safe.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ﻿
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ﻿
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;a href="https://us.community.samsung.com/t5/Galaxy-S10/Facebook-app-uninstall/td-p/577000" target="_blank"&gt;&#xD;
      
           https://us.community.samsung.com/t5/Galaxy-S10/Facebook-app-uninstall/td-p/577000
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;a href="https://www.independent.co.uk/life-style/gadgets-and-tech/news/facebook-app-delete-android-smartphones-samsung-galaxy-a8719081.html" target="_blank"&gt;&#xD;
      
           https://www.independent.co.uk/life-style/gadgets-and-tech/news/facebook-app-delete-android-smartphones-samsung-galaxy-a8719081.html
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;a href="https://time.com/5497200/samsung-facebook-app-delete/" target="_blank"&gt;&#xD;
      
           https://time.com/5497200/samsung-facebook-app-delete/
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ﻿
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ﻿
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/photo-1529163835670-f5e2159a34a0-c1fea206.jpg" length="1352296" type="image/png" />
      <pubDate>Wed, 15 Jul 2020 16:24:11 GMT</pubDate>
      <guid>https://www.trisys.co.uk/facebook-app-removal</guid>
      <g-custom:tags type="string">facebook,samsung</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1523206489230-c012c64b2b48.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/photo-1529163835670-f5e2159a34a0-c1fea206.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Remote Working with TriSys Recruitment Software</title>
      <link>https://www.trisys.co.uk/remote-working-with-trisys-recruitment-software</link>
      <description>Learn about TriSys Recruitment Software for Remote working productivity.</description>
      <content:encoded>&lt;h3&gt;&#xD;
  &lt;b&gt;&#xD;
    
          Overview of TriSys Recruitment Software for Remote Working Productivity
         &#xD;
  &lt;/b&gt;&#xD;
&lt;/h3&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         TriSys Recruitment Software is an ultra-modern solution for recruitment businesses which is designed to be used in a variety of ways, promoting productivity, mobility and flexibility:
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        &lt;span&gt;&#xD;
          &lt;b&gt;&#xD;
            
              Web Browser:
             &#xD;
          &lt;/b&gt;&#xD;
          
             a modern web application designed to be used on any computer (this is commonly known as TriSys Apex or 
             &#xD;
          &lt;a href="/apex-cloud-suite"&gt;&#xD;
            
              TriSys Apex Cloud Suite
             &#xD;
          &lt;/a&gt;&#xD;
          
             )
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        &lt;b&gt;&#xD;
          
             Mobile app for iOS and Android devices:
            &#xD;
        &lt;/b&gt;&#xD;
        
             a modern
            &#xD;
        &lt;a href="/mobile-apps"&gt;&#xD;
          
             mobile app
            &#xD;
        &lt;/a&gt;&#xD;
        
            allowing recruitment consultants to login to the TriSys database on their mobile devices
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        &lt;b&gt;&#xD;
          
             Windows Desktop Application:
             &#xD;
          &lt;span&gt;&#xD;
            
               a modern Windows-based
              &#xD;
            &lt;a href="/recruitment-crm"&gt;&#xD;
              
               Recruitment CRM
              &#xD;
            &lt;/a&gt;&#xD;
            
              application connecting to the Cloud-Hosted TriSys database
             &#xD;
          &lt;/span&gt;&#xD;
        &lt;/b&gt;&#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        &lt;b&gt;&#xD;
          
             Cloud Hosted Remote Desktop:
            &#xD;
        &lt;/b&gt;&#xD;
        &lt;span&gt;&#xD;
          
              a modern, highly convenient
             &#xD;
          &lt;a href="/remote-desktop"&gt;&#xD;
            
              managed solution
             &#xD;
          &lt;/a&gt;&#xD;
          
             consisting of a cloud Windows environment designed for productivity and peace of mind, ensuring every recruitment consultant can work in the cloud just as if they were working on their local computer
            &#xD;
        &lt;/span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
    &lt;div&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/div&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Would you like to book a demonstration of TriSys Recruitment Software today?
          &#xD;
    &lt;a href="/contact"&gt;&#xD;
      
           Get in touch
          &#xD;
    &lt;/a&gt;&#xD;
    
          .
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/trisysmac.png" alt="A computer on a desk with the word trisys on the screen"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Remote-Working-IT-Solutions-Icon-1.png" length="35866" type="image/png" />
      <pubDate>Thu, 18 Jun 2020 12:32:36 GMT</pubDate>
      <guid>https://www.trisys.co.uk/remote-working-with-trisys-recruitment-software</guid>
      <g-custom:tags type="string">Recruitment,Recruitment Software,Cloud Recruitment Software,Recruiting CRM</g-custom:tags>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Remote-Working-IT-Solutions-Icon-1.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/Remote-Working-IT-Solutions-Icon-1.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys Celebrates 26 Years Supplying the Global Recruitment Industry</title>
      <link>https://www.trisys.co.uk/celebrating-26-years</link>
      <description>We are celebrating 26 years in business and would like to sincerely thank all our Customers. Our anniversary blog post will take you through an enjoyable travel in time where you will learn about the disruptive innovations introduced by TriSys Business Software in the global recruitment software industry as well as introduce you to the current technological developments and roadmap.</description>
      <content:encoded>&lt;h3&gt;&#xD;
  
         26th Anniversary - TriSys Business Software - A Journey through Time
        &#xD;
&lt;/h3&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/quote-bjarne-stroustrup.png" alt="The most important single aspect of software development is to be clear about what you are trying to build"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           We're Celebrating 26 Years in Business
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           We are proud to announce our 26th Anniversary and would like to take this opportunity to thank all our Customers who have made this journey possible.
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys Business Software offers services and solutions aimed at solving real-world challenges using a combination of expert business analysis services and innovative technology expertise. The know-how available across our various specialist teams allows our customers to approach us with challenges/needs and, together with our specialist teams, devise the most efficient solutions to address those needs, ultimately eliminating inefficient and/or costly manual processes which are found in many (if not all) organisations in the modern age.
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           As it happens, the simple action of asking yourself
           &#xD;
      &lt;b&gt;&#xD;
        
            "what are we doing as a business which could be made more efficient?"
           &#xD;
      &lt;/b&gt;&#xD;
      
           is the catalyst to a series of findings which in turn will enable the identification, categorization and prioritization of 
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           inefficiencies which can be eliminated through critical problem-solving.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Combining the proven experience in assisting over 700 organisations globally, our specialist team is uniquely positioned to deliver working software solutions to complex business problems, with proven, measurable and high quality results - every single time.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Our goal as a business has always been the delivery of high quality software solutions which address current and future needs experienced by our customers. This requires much more than just a product: it requires a
           &#xD;
      &lt;b&gt;&#xD;
        
            Platform
           &#xD;
      &lt;/b&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;b&gt;&#xD;
        
            TriSys Platformix
           &#xD;
      &lt;/b&gt;&#xD;
      
           is the next logical step in this direction. It is the culmination of years of R&amp;amp;D investment, allowing our customers to look within, pinpoint inefficient organisational processes not yet addressed by technological innovation and map these onto a highly advanced integrated software solution.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           An example would be a solution which connects the various teams and systems within your organisation with your website visitors and streamlines the process of publishing real-time product information on the website (such as vacancies) allowing your organisation to eliminate manual processes otherwise required. 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           However it gets much better:  you can also
           &#xD;
      &lt;b&gt;&#xD;
        
            introduce highly differentiating and automated workflows
           &#xD;
      &lt;/b&gt;&#xD;
      
           directly on your website which lead to incredibly powerful visitor experiences, for example:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Automated online candidate registrations, secure candidate and client login, self-service experiences and the all-important ability to
           &#xD;
      &lt;span&gt;&#xD;
        
            define
            &#xD;
        &lt;b&gt;&#xD;
          
             intelligent workflows
            &#xD;
        &lt;/b&gt;&#xD;
        
            based on specific business rules
           &#xD;
      &lt;/span&gt;&#xD;
      
            such as for example: 
           &#xD;
      &lt;i&gt;&#xD;
        &lt;font&gt;&#xD;
          
             'if this specific client logs in via our client portal and their contact record in the CRM database states that the client is a high-value client, then present a pop-up message which generates an additional level of brand engagement with the client, such as automatically instructing the telephone system to dial the clients' telephone number and play back a special thank you message with an option to speak with the recruitment consultant identified as the owner of the client contact record, in addition to sending an automated thank you e-mail with further information promoting added levels of brand engagement'
            &#xD;
        &lt;/font&gt;&#xD;
      &lt;/i&gt;&#xD;
      
           .
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;b&gt;&#xD;
        
            The possibilities are endless. Literally.
           &#xD;
      &lt;/b&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Over the course of our successful history, our mission has always been to deliver solutions aligned with your needs and help you deliver the Vision which you have set for your business. 
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           We are here to support you in the development of differentiated services to your internal and external audiences using ground-breaking software technology.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Further information about the new TriSys Platformix solution will be made available to TriSys Customers very soon.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In the meantime please feel free to
           &#xD;
      &lt;a href="/contact"&gt;&#xD;
        
            contact us
           &#xD;
      &lt;/a&gt;&#xD;
      
            and discuss any questions about aligning your TriSys CRM database system with your Client and Candidate engagement needs.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Welcome to our 26th Anniversary technology review where we address the past, present and future of TriSys Business Software Technology
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/trisys-business-software-960-405.png" length="54351" type="image/png" />
      <pubDate>Fri, 29 May 2020 20:34:31 GMT</pubDate>
      <guid>https://www.trisys.co.uk/celebrating-26-years</guid>
      <g-custom:tags type="string">Recruitment Software 26 Year Anniversary</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/trisys-business-software-960-405.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/trisys-business-software-960-405.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Benefits of Cloud-Based TriSys Recruitment Software</title>
      <link>https://www.trisys.co.uk/benefits-of-cloud-based-recruitment-software</link>
      <description>The key benefits of choosing TriSys Cloud Recruitment Software.</description>
      <content:encoded>&lt;h3&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;div&gt;&#xD;
      
           What are the key benefits of choosing TriSys Cloud Recruitment Software?
          &#xD;
    &lt;/div&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/h3&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys Cloud Recruitment Software will save you money, increase your profit margins and help you grow your business.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Hundreds of recruitment businesses are already using our cloud service. Here is why:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;b&gt;&#xD;
        
            Lower spend: 
           &#xD;
      &lt;/b&gt;&#xD;
      
           Reduce IT costs associated with purchasing servers, software and IT maintenance
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;b&gt;&#xD;
        
            Flexibility: 
           &#xD;
      &lt;/b&gt;&#xD;
      &lt;span&gt;&#xD;
        
            pay as you go 
           &#xD;
      &lt;/span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            monthly user subscriptions allow you to scale your monthly investment up/down as required
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;b&gt;&#xD;
        
            Faster hires:
           &#xD;
      &lt;/b&gt;&#xD;
      &lt;span&gt;&#xD;
        
             a system designed for speed and productivity
           &#xD;
      &lt;/span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;b&gt;&#xD;
          
             Uptime:
            &#xD;
        &lt;/b&gt;&#xD;
        
            an always-on database is always-on, therefore your teams experience added productivity
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;b&gt;&#xD;
        
            Mobility:
           &#xD;
      &lt;/b&gt;&#xD;
      &lt;span&gt;&#xD;
        
            login from anywhere, anytime on any device
           &#xD;
      &lt;/span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;b&gt;&#xD;
        
            Backups:
           &#xD;
      &lt;/b&gt;&#xD;
      &lt;span&gt;&#xD;
        
             guaranteed daily backups and timely restores
           &#xD;
      &lt;/span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;b&gt;&#xD;
        
            Updates:
           &#xD;
      &lt;/b&gt;&#xD;
      
            automatic deployment of updates ensuring the newest functionalities are instantaneously available
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;b&gt;&#xD;
        
            Compliance:
           &#xD;
      &lt;/b&gt;&#xD;
      
            fully GDPR compliant data hosting for guaranteed peace of mind
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;b&gt;&#xD;
        
            Centralisation:
           &#xD;
      &lt;/b&gt;&#xD;
      
            track all your clients, candidates, placements, requirements and timesheets in single system
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;b&gt;&#xD;
        
            Integration:
           &#xD;
      &lt;/b&gt;&#xD;
      
            the TriSys Cloud Platform is highly integrated with SMS service providers, job board aggregators, mass e-mail platforms and more
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;b&gt;&#xD;
        
            Microsoft 365:
           &#xD;
      &lt;/b&gt;&#xD;
      
            our alignment with the Microsoft365 platform ensures an ultra-modern inbox and LinkedIn experience
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;b&gt;&#xD;
        
            Flexibility:
           &#xD;
      &lt;/b&gt;&#xD;
      
            grow your business with bespoke functionality designed to streamline your specific recruitment processes
          &#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The TriSys Cloud Recruitment Software platform is incredibly powerful, flexible and easy to use. 
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Get started today and create your new TriSys Cloud recruitment database in 60 seconds.
          &#xD;
    &lt;a href="/contact"&gt;&#xD;
      
           Get in Touch
          &#xD;
    &lt;/a&gt;&#xD;
    
          .
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/TriSys+Apex+Enterprise+2021-+Images.png" alt="A laptop , tablet , and phone are sitting next to each other on a table."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/cloud-computing.jpg" length="101084" type="image/jpeg" />
      <pubDate>Wed, 20 May 2020 11:56:06 GMT</pubDate>
      <guid>https://www.trisys.co.uk/benefits-of-cloud-based-recruitment-software</guid>
      <g-custom:tags type="string">Recruitment,Cloud Recruitment Software</g-custom:tags>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/cloud-computing.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/cloud-computing.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Mobile Recruitment Technology</title>
      <link>https://www.trisys.co.uk/mobile-recruitment-technology</link>
      <description>70% of candidates use their mobile devices to search jobs. Is your current recruitment technology ready for mobile technology?</description>
      <content:encoded>&lt;h3&gt;&#xD;
  &lt;b&gt;&#xD;
    
          Using Mobile Technology to automate and streamline candidate hiring
         &#xD;
  &lt;/b&gt;&#xD;
&lt;/h3&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Did you know more than 70% of active job seekers use their mobile phones to look for jobs?
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Mobile recruitment has become an integral part of the modern hiring process and cannot be ignored.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          As a recruitment business, adopting the latest mobile technologies can be challenging especially if you lack the know-how to define, procure and maintain a mobile-driven candidate recruitment experience.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Having identified the need for innovative mobile candidate experiences, TriSys Business Software has developed a
          &#xD;
    &lt;a href="/mobile-apps"&gt;&#xD;
      
           modern candidate mobile app
          &#xD;
    &lt;/a&gt;&#xD;
    
          for iOS and Android which seamlessly connects to the TriSys recruitment software database via the
          &#xD;
    &lt;a href="https://api.trisys.co.uk" target="_blank"&gt;&#xD;
      
           TriSys Recruitment API
          &#xD;
    &lt;/a&gt;&#xD;
    
          allowing candidates to register, update their communication preferences, search jobs, apply to jobs, view interview details and much more, all on their mobiles, anywhere and at any time.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          As a result of tremendous success experienced by our customers already using the TriSys Candidate App, our customers have unanimously requested that their Clients are also offered a mobile-driven hiring experience which includes being able to review, shortlist and interview candidates, authorise online timesheets and much more.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The
          &#xD;
    &lt;a href="/mobile-apps"&gt;&#xD;
      
           TriSys Candidate and Client Mobile App
          &#xD;
    &lt;/a&gt;&#xD;
    
          is flexible, fast, powerful and fully branded for our customers, offering a true database integration for real-time candidate and client engagement, streamlining recruitment processes, saving time and money whilst ensuring a future-proof approach to recruitment.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Would you like to learn more about mobile recruitment technology? Feel fee to
          &#xD;
    &lt;a href="/contact"&gt;&#xD;
      
           get in touch
          &#xD;
    &lt;/a&gt;&#xD;
    
           with one of our product experts today.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/trisys-agency-mobile-app.png" alt="A diagram of a candidate and client mobile app"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/blue-dots.jpg" length="41620" type="image/jpeg" />
      <pubDate>Wed, 22 Apr 2020 11:05:00 GMT</pubDate>
      <guid>https://www.trisys.co.uk/mobile-recruitment-technology</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/mobile-app-graphic.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/f3b4d364/dms3rep/multi/blue-dots.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>UK Economy During Pandemic 2020</title>
      <link>https://www.trisys.co.uk/uk-economy-during-pandemic-2020</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The UK government has devised some initiatives in the wake of the Coronavirus/COVID-19 pandemic currently sweeping across the world. These include:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Job Retention scheme: the UK paying furloughed staff 80% of their wages (up to £2,500 per worker per month)
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Business interruption loan scheme: interest free for 12 months
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Deferment of VAT and PAYE
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;span&gt;&#xD;
          
             Self-employed income support scheme: taxable grant worth 80% of average monthly profits
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            (up to £2,500 per month)
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Whilst these will be helpful to UK businesses and workers, current delays in processing these will have a devastating effect on the entire UK economy.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Specifically, these measures are not sufficient for these two main reasons:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ol&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Furloughed staff are not able to carry out work for their employer thus reducing the operational effectiveness of companies most in need
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Small businesses do not want to be burdened with yet more debt given the uncertainty over what the UK economy will look like post pandemic
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ol&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In my opinion, the UK government should now consider a form of Universal Basic Income (UBI) to allow small, private UK businesses to survive the current and future global economic recession. Here is what I propose:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            every employed or self-employed worker is paid a monthly flat amount by the UK government
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            this is not a loan. It does not have to be repaid.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            employees/directors are allowed to top this up at their discretion
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            employees can continue to work for their employer if safe/essential to do so (e.g. key care workers, or remote workers)
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            I believe that UBI is one of the short-term solutions to help UK businesses survive the coming global
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           economic recession caused by the current pandemic.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1585331505473-7586f9cb0854.jpg" length="345484" type="image/jpeg" />
      <pubDate>Tue, 14 Apr 2020 10:22:04 GMT</pubDate>
      <author>garry@trisys.co.uk (Garry Lowther)</author>
      <guid>https://www.trisys.co.uk/uk-economy-during-pandemic-2020</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1585331505473-7586f9cb0854.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1585331505473-7586f9cb0854.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Desktop Moves and Product Retirements</title>
      <link>https://www.trisys.co.uk/desktop-moves-and-product-retirements</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           We are Excited To Introduce Our New Desktops and Software
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/trisysmac.png" alt="A computer on a desk with the word trisys on the screen"/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Here at TriSys on our ASP (application service provider) Network, we were slowly approaching customers to move over to our new desktops with our TriSys 2020 Recruitment Software and were hoping for a phased move and product retirement during the whole of 2020. 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With the current environment we now find ourselves in, we have to bring the moves forward and retire some of our older software and desktops. 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Our TriSys Version 8 application is being retired
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           On our ASP Network, TriSys Version 8 has served us extremely well over the years, however no further development is scheduled for this version. 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Version 8 has been replaced by our “TriSys 2020” Recruitment Software and has a modern fresh look and up to date features. 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The core TriSys 2020 product is reliable, solid and proven, and has been used mostly by our newer customers where we have very high levels of satisfaction using this software.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           On our ASP Network
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           , w
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           e will be retiring our Version 8 application soon and move everyone over to our new application, and you can test our TriSys 2020 application alongside your Version 8 Application for a limited time before we move everyone over to solely using TriSys 2020 on the new Windows 10 Desktops which I will tell you about in a minute
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           To discuss your move to the new TriSys 2020 Application, please contact your TriSys Account Manager.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Our older desktops are being retired
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Our TriSys Windows 10 Desktops are gaining momentum on our ASP Network, as customers continue to move over to a more powerful modern desktop, which has the new Microsoft Edge already installed, and with Microsoft Updates now done by the Desktop User, ensures that your desktop is fully up to date with the latest and greatest software at all times. 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Your desktop costs remain the same when you move over.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           To discuss your move to the new Windows 10 Desktops, please contact your TriSys Account Manager.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Google Apps Sync E-Mail is being retired
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           As we move everyone over to our new Windows 10 desktops, your Office 365 subscription can now be used directly on the new desktop.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           You will also have access to our latest Recruitment Software “TriSys 2020”, and coupled with our new Office 365 Outlook Addin, you will see a fresh new look and easier access to your data.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           For current Google Apps Sync users, please discuss with your IT company on moving to Microsoft Office 365.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           To discuss your move away from Google Apps Sync, please contact your TriSys Account Manager.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Customer Data
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           We would like our customers help and ask that everyone removes non recruitment type data from their Document Folders and TriSys Drive and would ask all our customers to remove any non-essential data to their own local PC’s. (We have been asked to restore personal data and 3rd party PST files)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Within your Office 365 account you have
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           1Tb
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            of storage that can be used for anything, and can be enabled through your subscription on our Windows 10 desktops.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If you have any concerns, please contact your TriSys Account Manager.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ASP Access
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           As we all move home, don't forget that you have various access points to your data.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;span&gt;&#xD;
          
             Remote Desktop
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/span&gt;&#xD;
      &lt;a href="/remote-desktop"&gt;&#xD;
        
            Login Tool
           &#xD;
      &lt;/a&gt;&#xD;
      &lt;span&gt;&#xD;
        
            .
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;span&gt;&#xD;
          
             APEX Cloud Suite - Our
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/span&gt;&#xD;
      &lt;a href="/apex-cloud-suite"&gt;&#xD;
        
            On-Line cloud hosted recruitment
           &#xD;
      &lt;/a&gt;&#xD;
      &lt;span&gt;&#xD;
        
             CRM service.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;a href="/recruitment-crm"&gt;&#xD;
        
            Smart Client
           &#xD;
      &lt;/a&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;span&gt;&#xD;
          
             that can be run on your local PC.
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;span&gt;&#xD;
          
             Web access through our
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/span&gt;&#xD;
      &lt;a href="https://support.trisys.co.uk" target="_blank"&gt;&#xD;
        
            support portal
           &#xD;
      &lt;/a&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;span&gt;&#xD;
          
             for PC's, Mac's, Phones and Tablets
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           To discuss how to access any of these, please contact 
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="mailto:support@trisys.co.uk"&gt;&#xD;
      
           support@trisys.co.uk
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Stay Safe
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           We hope our customers, friends and families are all well in these challenging times.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/time-losing-time-clock-pocket-w.jpg" length="348143" type="image/jpeg" />
      <pubDate>Wed, 08 Apr 2020 08:22:02 GMT</pubDate>
      <guid>https://www.trisys.co.uk/desktop-moves-and-product-retirements</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/time-losing-time-clock-pocket-w.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/time-losing-time-clock-pocket-w.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Successful Recruiting While Home Working</title>
      <link>https://www.trisys.co.uk/successful-recruiting-while-home-working</link>
      <description />
      <content:encoded>&lt;h3&gt;&#xD;
  
         Successful Recruiting While Home Working
        &#xD;
&lt;/h3&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/trisysmac.png" alt="A computer on a desk with the word trisys on the screen"/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          For some of us working from home is part of our normal routine be it a day a week or more and for lots of people in these current times it is a necessity to protect our society.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Experts predicted that 50% of the workforce would be home working by 2020 but there have still been reservations about this within the recruitment industry.  
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           Why is this?  
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      
           Are we worried about the team slacking off when we are not there?
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      
           Individuals getting distracted? 
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      
           Effective communication?
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      
           How to keeping the competiveness of the sales environment?
          &#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;div&gt;&#xD;
    
          These are some of the challenges to recruiters working from home and staying successful and productive, all of which take self-motivation, discipline and the right tools to achieve success. 
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           What tools do we need?
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          It used to be said that all a recruiter needs is a phone but it takes more than that these days.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Cloud-based CRMs can really help tick the boxes of what is needed to address the challenges we face working remotely.  
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          They allow us to work from any location with an internet connection and if we pick the right software they should be able to assist with all of the above challenges by providing:
          &#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      
           Up to the minute reports to see productivity and KPIs
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      
           Dashboards to keep focus
          &#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      
           Shared diaries
          &#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;div&gt;&#xD;
    
          And much more, specifically available with TriSys Recruitment Software:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;a href="/apex-cloud-suite"&gt;&#xD;
        
            Browser Recruitment CRM database
           &#xD;
      &lt;/a&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;a href="/remote-desktop"&gt;&#xD;
        
            Cloud Remote Desktops (Virtual Office)
           &#xD;
      &lt;/a&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;a href="/video-conferencing"&gt;&#xD;
        
            Cloud Video conferencing &amp;amp; Team Collaboration
           &#xD;
      &lt;/a&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;span&gt;&#xD;
    
          Did you know studies have shown there are additional benefits of home working such as workers “worked 1.4 more days every month, that is 16.8 more days every year" and believe it or not researchers found “remote employees lost 27 minutes per day on distractions, as opposed to the 37 minutes distracted office workers lost”.
         &#xD;
  &lt;/span&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;div&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/div&gt;&#xD;
    &lt;div&gt;&#xD;
      
           Here are some tips to keeping your team motivated:
           &#xD;
      &lt;br/&gt;&#xD;
    &lt;/div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Keep communication regular with 1-2-1 chats and group updates
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Be clear on expectations and keep everyone focused on goals 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Utilise collaborative technology such as video chat and file sharing tools 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Maintain social interaction with chats, off topic emails and even GIFs 
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
    &lt;div&gt;&#xD;
      
           Please get in touch today to learn more and request a personalised demonstration.
          &#xD;
    &lt;/div&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/shutterstock_615508904.jpg" length="62139" type="image/jpeg" />
      <pubDate>Mon, 30 Mar 2020 16:34:10 GMT</pubDate>
      <author>joanne@trisys.co.uk (Joanne Parkin)</author>
      <guid>https://www.trisys.co.uk/successful-recruiting-while-home-working</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/shutterstock_615508904.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/shutterstock_615508904.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>SaaS Recruitment Websites with TriSys Platformix</title>
      <link>https://www.trisys.co.uk/saas-recruitment-websites-with-trisys-platformix</link>
      <description>Learn more about modern recruitment websites built using TriSys Platformix, the award-winning recruitment website builder for recruitment agencies, delivered as a service (SaaS) and developed in Cambridge by TriSys Business Software.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;b&gt;&#xD;
        
            TriSys Platformix
           &#xD;
      &lt;/b&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;h3&gt;&#xD;
  &lt;span&gt;&#xD;
    
          Introducing the World's First Fully Integrated SaaS Recruitment Website Solution
         &#xD;
  &lt;/span&gt;&#xD;
&lt;/h3&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/Website+Templates.png" alt="TriSys Platformix Recruitment Websites" title="Beautifully Designed Recruitment Website Templates"/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;b&gt;&#xD;
        
            Welcome to Your New 
            &#xD;
        &lt;span&gt;&#xD;
          
             Recruitment
            &#xD;
        &lt;/span&gt;&#xD;
        
            Website as a Service
           &#xD;
      &lt;/b&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         TriSys Business Software has officially launched
         &#xD;
  &lt;b&gt;&#xD;
    &lt;a href="/website-builder"&gt;&#xD;
      
           TriSys Platformix
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/b&gt;&#xD;
  
         - the World's first fully integrated API-driven &amp;amp; (Software as a Service) SaaS-driven recruitment website builder for recruitment agencies, reducing cost and time required to plan, design, implement and maintain modern SEO-driven recruitment websites.
         &#xD;
  &lt;b&gt;&#xD;
    
          An industry first
         &#xD;
  &lt;/b&gt;&#xD;
  
         .
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Just like TriSys Recruitment Sofware and any modern subscription-driven service such as Amazon Prime, Netflix and other popular services, TriSys Platformix is a SaaS-enabled business website solution where you pay a monthly subscription in exchange for powerful functionality, automatic updates, new features, technical support, security, data backups and more, enjoying maximum functionality and zero overheads. All delivered through a monthly subscription model with tiered plans designed to fit your growth needs.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys Platformix is a
          &#xD;
    &lt;i&gt;&#xD;
      &lt;font&gt;&#xD;
        
            mix
           &#xD;
      &lt;/font&gt;&#xD;
    &lt;/i&gt;&#xD;
    
          of the best-of-breed cloud
          &#xD;
    &lt;i&gt;&#xD;
      &lt;font&gt;&#xD;
        
            platforms
           &#xD;
      &lt;/font&gt;&#xD;
    &lt;/i&gt;&#xD;
    
          to deliver the utmost in quality, reliability, scalability, security and functionality to you, our customer.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;b&gt;&#xD;
        
            Beautiful &amp;amp; Modern Recruitment Websites
           &#xD;
      &lt;/b&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         Thanks to a range of 100+ modern website templates and hundreds of powerful automatically updated features offering complete self-service control over your website and visitors' experiences, the traditional model of sourcing a website through the services of a web design agency is now quickly becoming an outdated practice and being replaced by advanced rapid website development (RAD) platforms such as TriSys Platformix which enable you, the customer, to fully control the website from day one, with every other need (including hosting, security and backups) taken care of behind the scenes, ensuring maximum control, productivity and convenience whilst fully eliminating risk of relying on a 3rd party to build your website.
        &#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;b&gt;&#xD;
        
            Best Return on Investment - Guaranteed
           &#xD;
      &lt;/b&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Whilst many recruitment website design companies will promptly provide you with website examples and explain how anything is possible, in practice you will often spend thousands to implement a new website over the course of weeks or months, only to find that not everything is as you had assumed it should be: the website is not fully and directly integrated with your Recruitment CRM database in real time, staff have to update/remove live vacancies manually, you have to purchase 3rd party job aggregator services, ongoing support isn't quite what you expected it would be, just to name a few...
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;div&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/div&gt;&#xD;
    &lt;div&gt;&#xD;
      &lt;b&gt;&#xD;
        
            Technically speaking, website design companies are not software development companies. You cannot expect one company's expertise to deliver that which is another company's expertise, especially if these companies deliver completely different products or services.
           &#xD;
      &lt;/b&gt;&#xD;
    &lt;/div&gt;&#xD;
    &lt;div&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/div&gt;&#xD;
    &lt;div&gt;&#xD;
      &lt;b&gt;&#xD;
        
            This is why there is a profound divide between an organisations' website and their CRM system, where these systems have historically been allowed to coexist independently. Until now, thanks to TriSys Platformix.
           &#xD;
      &lt;/b&gt;&#xD;
    &lt;/div&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;span&gt;&#xD;
    
          Why Choose TriSys Platformix?
         &#xD;
  &lt;/span&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         For over 25 Years, TriSys Business Software has developed groundbreaking CRM software technology for the recruitment agency industry, including but not limited to:
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          - The world's first graphical user interface application for recruitment agencies
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          - The world's first cloud-based CRM application for recruitment agencies
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          - The world's first comprehensible customisable CRM for recruitment agencies
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          - The world's first fully API-driven recruitment CRM for recruitment agencies
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          - The world's first fully API-driven CRM-integrated recruitment website builder for recruitment agencies (TriSys Platformix)
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Combining a wealth of expertise in advanced business software development with a full API-driven web portal development track record, TriSys Platformix is the next-generation recruitment website platform designed to enable streamlined candidate and client engagement, workflow automation and much more, where your website is the always-on 24x7 front-end to your business, integrated in real time with your TriSys recruitment CRM database, fully aligned with SEO beat practices, Google Analytics and much more, allowing you to generate additional revenue across multiple areas of your business.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This is simply a solution which neither any web design agency by itself nor any CRM provider by itself can match.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys Platformix is solution already in use by TriSys Customers to deliver innovative, award-winning service to their candidates and clients. Now available for TriSys Customers globally.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Is your business looking to create a new website and join the future of technology today? We can help.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;a href="/contactold"&gt;&#xD;
      
           Contact us to request more information or book a demonstration today.
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/trisys-platformix-1024x432.png" length="20971" type="image/png" />
      <pubDate>Wed, 11 Mar 2020 11:22:25 GMT</pubDate>
      <guid>https://www.trisys.co.uk/saas-recruitment-websites-with-trisys-platformix</guid>
      <g-custom:tags type="string">Recruitment websites,TriSys Platformix,Recruitment Website Design,Recruitment API,TriSys Platformix,TriSys Business Software</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/trisys-platformix-1024x432.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/trisys-platformix-1024x432.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>2020 Website</title>
      <link>https://www.trisys.co.uk/2020-website</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Today we have launched our new website:
         &#xD;
  &lt;a href="https://trisys.co.uk"&gt;&#xD;
    
          trisys.co.uk
         &#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/feb-2020-website.gif" alt="A recruitment technology platform website with two women on it"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Our reasons for re-designing our web presence include:
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        &lt;span&gt;&#xD;
          
             Focus our branding on the value of our
             &#xD;
          &lt;a href="/apex-cloud-suite"&gt;&#xD;
            
              recruiting platform
             &#xD;
          &lt;/a&gt;&#xD;
        &lt;/span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Improving our SEO (search engine optimisation) to attract more customers
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Eat our own dogfood by using our
            &#xD;
        &lt;a href="/website-builder"&gt;&#xD;
          
             Platformix
            &#xD;
        &lt;/a&gt;&#xD;
        
            website designer to build our own website
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Streamline our value proposition by removing legacy content
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Add a new
            &#xD;
        &lt;a href="/blog"&gt;&#xD;
          
             blog
            &#xD;
        &lt;/a&gt;&#xD;
        
            engine allowing all staff to participate
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            New
            &#xD;
        &lt;a href="/search"&gt;&#xD;
          
             site search
            &#xD;
        &lt;/a&gt;&#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            PWA (progressive web app) allowing customers to install our website as an app on mobile devices
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Embrace the new decade with a fresh approach
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
    &lt;div&gt;&#xD;
      
           All our original content is still available to customers should it be required. Please
           &#xD;
      &lt;a href="/contactold"&gt;&#xD;
        
            contact us
           &#xD;
      &lt;/a&gt;&#xD;
      
           if you are unable to locate your favourite content.
          &#xD;
    &lt;/div&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We do hope you enjoy your experience when visiting our website.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/www-browser-url.jpg" length="124246" type="image/jpeg" />
      <pubDate>Sat, 15 Feb 2020 20:44:37 GMT</pubDate>
      <author>garry@trisys.co.uk (Garry Lowther)</author>
      <guid>https://www.trisys.co.uk/2020-website</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/www-browser-url.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/www-browser-url.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Annual Roadmap for 2020</title>
      <link>https://www.trisys.co.uk/annual-roadmap-for-2020</link>
      <description>We are planning some very exciting innovations and enhancements to the products and services of TriSys Business Software in 2020.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         We are planning some very exciting innovations and enhancements to the products and services of TriSys Business Software in 2020:
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys 2020
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The latest version of our premiere
          &#xD;
    &lt;a href="/recruitment-crm"&gt;&#xD;
      
           windows desktop recruitment CRM
          &#xD;
    &lt;/a&gt;&#xD;
    
          is now available to all existing customers. This application was first released in 1992 and is a rock-solid enterprise grade recruitment business app. For customers on the 2019 version, the application will automatically upgrade. All new features will be documented in the coming months. Our
          &#xD;
    &lt;a href="/sdk"&gt;&#xD;
      
           SDK
          &#xD;
    &lt;/a&gt;&#xD;
    
          is still the only recruiting software toolkit for Microsoft .Net.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys Cloud Platform
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Our cloud infrastructure platform was conceived and built in 2002. It has grown and matured to comprise literally hundreds of cloud servers distributed across the planet. Customers use our platform to store and process their large corporate data assets, via our software products and services. Expect more integration with world class web services through our
          &#xD;
    &lt;a href="https://api.trisys.co.uk" target="_blank"&gt;&#xD;
      
           Web API
          &#xD;
    &lt;/a&gt;&#xD;
    
          .
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys Apex Web Browser
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Our cross-platform web browser
          &#xD;
    &lt;a href="/apex-cloud-suite"&gt;&#xD;
      
           recruitment CRM
          &#xD;
    &lt;/a&gt;&#xD;
    
          was released in 2014 and uses the TriSys cloud platform to process all its data and functionality. Customers with any type of computer, tablet or phone can access their recruitment data and conduct sophisticated workflows to drive their business forward, wherever they are and at any time.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys Mobile Suite
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Recruiters can access their recruitment database from their tablet and phone by installing our
          &#xD;
    &lt;a href="/mobile-apps"&gt;&#xD;
      
           app
          &#xD;
    &lt;/a&gt;&#xD;
    
          , however the mobile landscape is changing with a new class of 'app' called a progressive web app (PWA) which can be installed without visiting an app-store. When PWA technology is mature enough, we will be first to market. Recruitment agencies can also commission their own dedicated and branded mobile app using our
          &#xD;
    &lt;a href="https://www.trisys.co.uk/trisys-vertex-mobile-app-framework" target="_blank"&gt;&#xD;
      
           Vertex
          &#xD;
    &lt;/a&gt;&#xD;
    
          technology to engage with their clients and candidates.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys Web Jobs
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Web Jobs fully integrates, or replaces your existing web site, by providing powerful candidate and client engagement portals. These portals can serve a multitude of functions such as job finding platforms, or timesheet management and payroll facilitation.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSys Platformix
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Last year we introduced a
          &#xD;
    &lt;a href="/website-builder"&gt;&#xD;
      
           website builder
          &#xD;
    &lt;/a&gt;&#xD;
    
          technology utilising a mix of cloud platforms, which we called
          &#xD;
    &lt;a href="/website-builder"&gt;&#xD;
      
           Platformix
          &#xD;
    &lt;/a&gt;&#xD;
    
          . This is the successor to Web Jobs in that it is a full recruitment website content management system (CMS) with very tight integration with the TriSys recruiting database, plus state of the art blogging, SEO compliancy, and analytics. We will continue to invest in building TriSys Widgets to allow our customers to build high engagement web portals.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;b&gt;&#xD;
        
            TriSys Remote Desktop
           &#xD;
      &lt;/b&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The original TriSys ASP was launched almost 
          &#xD;
    &lt;a href="https://www.trisys.co.uk/trisys-asp-is-now-trisys-remote-desktop" target="_blank"&gt;&#xD;
      
           20 years ago
          &#xD;
    &lt;/a&gt;&#xD;
    
          , and comprises a
          &#xD;
    &lt;a href="/remote-desktop"&gt;&#xD;
      
           windows hosted desktop
          &#xD;
    &lt;/a&gt;&#xD;
    
          running on our cloud. This year we are launching a Windows 10 version with full compatibility with Microsoft Office 365 allowing customers to have full control over the apps they can install.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Should you wish to discuss your plans for implementing any of the above products and services, or indeed if you have ideas or recommendations about recruitment technology you would like us to develop, then please
           &#xD;
      &lt;a href="/contactold"&gt;&#xD;
        
            contact us
           &#xD;
      &lt;/a&gt;&#xD;
      
           .
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1554039363-bb1ab89fc855.jpg" length="424001" type="image/jpeg" />
      <pubDate>Fri, 03 Jan 2020 15:18:09 GMT</pubDate>
      <guid>https://www.trisys.co.uk/annual-roadmap-for-2020</guid>
      <g-custom:tags type="string">trisys recruitment crm,2020,roadmap,web api,cloud database,recruiting agency software</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1554039363-bb1ab89fc855.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1554039363-bb1ab89fc855.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Two-Factor Authentication for TriSys Apex</title>
      <link>https://www.trisys.co.uk/two-factor-authentication-blog</link>
      <description>TriSys Apex CRM database now includes Two-Factor Authentication (2FA)</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Your TriSys Apex CRM database now includes Two-Factor Authentication (2FA) offering important benefits for your organisation:
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Modern levels of enterprise CRM application login security
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Greatly reduce the possibility of data breach, ensuring sensitive data remains private
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Prevent unauthorised third parties from logging into your TriSys database
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Offer your clients and candidates superior levels of personal data protection guarantees
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Added mobility (connect from anywhere, on any device, without worrying about passwords being compromised)
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Reduced need to request password resets, therefore added productivity and convenience for your teams
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          When 2FA is enabled, every time you login you are prompted for a unique randomly-generated 6-digit code which is displayed on your mobile device, using the popular 'Google Authenticator' mobile app.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Configuring 2FA is extremely easy and is strongly recommended for all TriSys Apex users:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ol&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Install the Google Authenticator mobile app on your mobile device(s)
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Login to https://support.trisys.co.uk
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Click the "Edit Profile" menu
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Enable Two Factor Authentication (this is located at the bottom right of the Edit Profile page)
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Scan the QR code using Google Authenticator
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            You will be prompted for an authentication code on your subsequent logins to the TriSys support portal, TriSys Apex and the TriSys Remote Desktop services
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ol&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/2fa.jpg" length="30289" type="image/jpeg" />
      <pubDate>Mon, 09 Dec 2019 09:27:48 GMT</pubDate>
      <guid>https://www.trisys.co.uk/two-factor-authentication-blog</guid>
      <g-custom:tags type="string">trisys,2fa,two factor authentication,apex,security</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/2fa.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/2fa.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>GDPR Compliance Automation</title>
      <link>https://www.trisys.co.uk/gdpr-compliance-automation</link>
      <description />
      <content:encoded>&lt;h3&gt;&#xD;
  
         Following the introduction of the General Data Protection Regulation on 25/05/2018, several TriSys customers have been experiencing the benefits of our modern, innovative and fully automated GDPR compliance automation solution.
        &#xD;
&lt;/h3&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         The TriSys GDPR Compliance Automation solution consists of the following key elements:
         &#xD;
  &lt;div&gt;&#xD;
    &lt;ol&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Following a deep contact data cleanse, send an automatic e-mail notification to all historically registered contacts (data subjects) in your TriSys database
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            For all newly registered contacts (data subjects) send an automatic e-mail confirming their details have been added to your TriSys database
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            When the automatic e-mail is received, an intelligent hyperlink automatically directs the recipient (data subject) to the TriSys Web Jobs portal
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Each automatically sent e-mail contains e-mail delivery, open, read and click-tracking activity on the receiving side (as any marketing campaign normally would) 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            The recipient (data subject) can view and update their personal contact details, privacy and communications preferences  in real-time, on any device
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            The data subject can request to be included or to be excluded in marketing e-mail communications
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            The data subject can request restricted processing of their data
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            The data subject can request removal of their personal data  (specifying a reason for the removal request)
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            The data subject can request a copy of their personal details
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            All the above requests are automatically logged in a centralised area of TriSys known as the 'GDPR Monitor'
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Your data protection officer is able to monitor the automatic sending of GDPR notification emails and also all additional requests submitted by data subjects as per above
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Each data subject has a 'GDPR' tab on their database contact record which contains a summary view of all GDPR-related activity
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ol&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/gdpr-compliance-automation-module.png" alt="A diagram of a gdpr compliance automation module"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         The TriSys GDPR Compliance module offers the following key benefits:
         &#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            End to end compliance monitoring and automation, saving you time and money
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Modern, web-based and mobile-based self-service GDPR fulfilment
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Fully branded GDPR compliance experience, integrated with your website and your TriSys database
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Streamlined compliance auditing workflows. with full data traceability
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Elimination of parallel GDPR compliance processes using spreadsheets, e-mail folders and various other manual processes
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            A consistent, familiar, professional GDPR solution which ensures your users can focus on core revenue-generation activities
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            The GDPR Compliance Automation module developed by TriSys includes the highly advanced 'E-Mail Marketing Campaigns' module also developed by TriSys
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            The 'E-Mail Marketing Campaigns Module' allows you to generate mass-mails from within TriSys, eliminating the need to use costly 3rd party mass mail solutions
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Your TriSys users are therefore able to run unlimited mass-mailing campaigns, to unlimited recipients, all sent using the world's most advanced mass mailing platform 
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The TriSys GDPR Compliance Automation module is available as an optional service and brings together your TriSys database, your candidate and client web portals and mobile apps and enables a closer, more personalised relationship with your candidates and clients.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/gdpr.jpg" length="177027" type="image/jpeg" />
      <pubDate>Thu, 28 Nov 2019 10:16:35 GMT</pubDate>
      <guid>https://www.trisys.co.uk/gdpr-compliance-automation</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/gdpr-compliance-automation-module.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/gdpr.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>New TriSys Office Add-In</title>
      <link>https://www.trisys.co.uk/new-trisys-office-add-in</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         The new TriSys Outlook Add-In is fully API-driven, requires no software download and is compatible with Microsoft Outlook for Office365, across desktops/browsers and is available directly through Microsoft AppSource.
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a target="_blank" href="https://appsource.microsoft.com/en-gb/product/office/WA200000544?tab=Overview"&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/appsource-badge-large.png" alt="A blue and white logo that says available on microsoft appsource"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         You can now literally run a dozen actions, selectively update contact fields, lookup data in real time, preview candidate CV's and more, across desktop and web.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The new TriSys add-in is completely free and fully included with your TriSys service, delivering unbeatable value for money. 
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          You can
          &#xD;
    &lt;a href="https://appsource.microsoft.com/en-gb/product/office/WA200000544?tab=Overview" target="_blank"&gt;&#xD;
      
           get the new add-in
          &#xD;
    &lt;/a&gt;&#xD;
    
          directly through Microsoft AppSource. Please click here to read the installation instructions and the relevant software prerequisites.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys Office Add-In running on Outlook (web browser version).
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/outlook-web-add-in-2020.png" alt="A computer screen with a trisys logo on it"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         TriSys Office Add-In running on Outlook (desktop version)
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/add-in-outlook-desktop.png" alt="A computer screen with a trisys logo on it."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         Since TriSys first launched its recruitment add-in for Microsoft Office, thousands of recruitment consultants globally have been enjoyed the benefits of streamlined inbox productivity.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Combined with a powerful automated duplicate detection and management facility as well as streamlined document management, this quickly turned Outlook into an integrated extension of the TriSys CRM database, automating repetitive tasks and optimising your time.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The first version of the TriSys CRM Outlook add-in was compatible with Outlook 2003:
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/v8.png" alt="A screen shot of a microsoft outlook window"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         The second version of the Outlook Add-In introduced for Office 2010 offered richer functionality, including a convenient side panel allowing you to automate CV parsing, display editable CRM contact previews inside Outlook and much more.
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/outlook-desktop-add-in.png" alt="A screenshot of a computer screen with a map on it"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         The above version of the Outlook add-in is still available, it is also fully supported and fully working for all our TriSys Desktop CRM customers (cloud and on-premise). 
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Therefore no action is required if you do not have the latest versions of Microsoft Office.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Only customers who are using TriSys Apex where the add-in is no longer successfully loading or connecting to your TriSys database are required to deploy the newest version of the add-in.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/outlook-desktop-add-in-2020.png" length="93663" type="image/png" />
      <pubDate>Wed, 09 Oct 2019 12:11:40 GMT</pubDate>
      <guid>https://www.trisys.co.uk/new-trisys-office-add-in</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/outlook-desktop-add-in-2020.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/outlook-desktop-add-in-2020.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Chrome Extension for Recruiters</title>
      <link>https://www.trisys.co.uk/chrome-extension-for-recruiters</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         In order to allow consultants to conveniently lookup a contact record within a web browser session, we released the TriSys Recruitment CRM/ATS for the Google Chrome Store in 2015. This has now been replaced with a new version, simply called TriSys, which is available in both the Google Chrome Store and Microsoft Edge Store:
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a target="_blank" href="https://chrome.google.com/webstore/detail/trisys/pdebgklbjlbnfdgpiidegkbnakmhgckj"&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/chrome-web-store.png" alt="The chrome web store logo is available in the chrome web store."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         Installing this latest version places a TriSys button on your browser toolbar and allows the following productivity benefits for both LinkedIn and Google Mail users:
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          1. Single click access to contact details via a drop down window:
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/blog-aug-2019-1.png" alt="A computer screen shows a linkedin profile of a woman"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         2. CV Preview, requirements, placements, notes/history and scheduled tasks:
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/blog-aug-2019-2.png" alt="A collage of four screenshots of a resume on a computer screen."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         3. Create TriSys record from LinkedIn profile or G-Mail sender e-mail address + name:
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/blog-aug-2019-3.png" alt="A computer screen shows a man 's profile on linkedin"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         4. Update existing TriSys record from LinkedIn profile or G-Mail e-mail:
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/blog-aug-2019-4.png" alt="A screenshot of a computer screen showing a person 's profile."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         5. Open TriSys contact and company records in both TriSys Apex web browser application and Windows Smart Client Application
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/blog-aug-2019-5.png" alt="A screenshot of a website that says open contact"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         6. Run actions in TriSys applications from browser extension: Add to shortlist, call, e-mail, mail-merge, meeting, note, note/history, scheduled task, send SMS text, ToDo:
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/blog-aug-2019-6.png" alt="A hand is pointing to the add to shortlist option"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         7. Secure login to TriSys:
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/blog-aug-2019-7.png" alt="A screenshot of a web page that says trisys add in"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         The new extension has been designed to increase consultant productivity by fully integrating the TriSys cloud with popular social networks and e-mail systems, and is available to TriSys cloud subscribers and LinkedIn or G-Mail users today.
        &#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/extension-visual-overview.png" length="98611" type="image/png" />
      <pubDate>Wed, 28 Aug 2019 09:29:34 GMT</pubDate>
      <guid>https://www.trisys.co.uk/chrome-extension-for-recruiters</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/extension-visual-overview.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/extension-visual-overview.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys Amazon Cloud</title>
      <link>https://www.trisys.co.uk/trisys-amazon-cloud</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Back in 2008, Garry Lowther (CEO &amp;amp; Founder, TriSys Business Software)
         &#xD;
  &lt;a href="https://irp-cdn.multiscreensite.com/f3b4d364/files/uploaded/April%202008%20Recruitment%20International%20Article.pdf" target="_blank"&gt;&#xD;
    
          published an article in Recruitment International
         &#xD;
  &lt;/a&gt;&#xD;
  
         which predicted a global explosion in the development and adoption of cloud infrastructures, which is precisely what has happened due to multinationals such as Amazon, Google and Microsoft (our strategic partners for many years) investing billions of US Dollars in the development of massive datacentres, interconnected using dedicated fibre-optics links.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys was responsible for developing the world's first API-driven cloud remote desktop service (SaaS) for recruitment organisations, introducing the world of recruitment to a new way of using business-critical systems/applications, anywhere and on any device, with zero server hardware/software costs.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The TriSys Managed Cloud Desktop service allows our trusted customers to securely login and use Microsoft Office, collaborate and share documents, store their data and use the powerful TriSys CRM/ATS recruitment database application, ensuring a virtual cloud desktop is always available for their work (only a device &amp;amp; internet connection is required). 
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This service completely eliminates the need for organisations to purchase and maintain complex IT infrastructures (servers, computers, networking equipment and a variety of hardware and software), a truly ground-breaking achievement where the service is purchased on a flexible pay as you go contract basis.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Today, thanks to our continued commitment to technological innovation, the TriSys CRM/ATS platform is available in a variety of ways:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Fully managed cloud desktop service
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Windows application with a cloud database
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Web browser application with a cloud database
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Onsite deployment with cloud API
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Onsite deployment with onsite API
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Mobile apps for Android and Apple devices
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          No other organisation in the recruitment software industry has achieved such a comprehensive range of fully compatible deployment options, catering for the diverse requirements of customer organisations (which are sure to be highly specific each time).
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Our cloud platform in particular is based on the global Amazon AWS datacentre infrastructure, which offers multiple datacentre locations around the world, ensuring unsurpassed levels of service availability, security and performance, offering a combined cloud infrastructure service worth billions of pounds.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         Amazon Cloud Infrastructure Map (
         &#xD;
  &lt;a href="https://www.infrastructure.aws/" target="_blank"&gt;&#xD;
    
          click here for interactive map
         &#xD;
  &lt;/a&gt;&#xD;
  
         )
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/TriSys-Cloud-World.png" alt="A computer screen shows a map of the world and says trisys"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         Amazon AWS is the leading enterprise cloud platform used globally by business in all industries and specialties, with 14 large-scale datacentre facilities, ensuring unrivalled platform uptime for our customers, in a fully GDPR compliant solution ready to deliver services anywhere, on any device, with incredible performance, security, flexibility and scalability.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          When it comes to building and operating datacentre facilities, no one does it as well as Amazon, which is why we chose to partner with the Amazon AWS cloud in the first place, due to their equally visionary API-driven integration strategy (simply write a few lines of code and create your own server in the cloud in seconds, which revolutionised the cloud paradigm and set the course for Amazon's competitors to follow).
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Today, Amazon has hundreds of API-driven services ready to consume, which is why our strategic partnership never ceases to deliver value to our customers, from cloud servers, services and applications through to big data analytics, artificial intelligence and other key areas.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Today, more than ever, organisations of all sizes can move their IT to the cloud with full guarantee of faster and more convenient accessibility to critical business applications, saving millions of pounds in staff and infrastructure simply by outsourcing and in turn receiving high quality services.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Founded in 1994, TriSys Business Software specialises in enterprise-grade CRM/ATS solutions for the recruitment industry, offering unrivalled expertise across desktop, web and mobile applications, interconnected through a powerful industry-standard API and integrated with the leading recruitment industry technology vendors.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/TriSys-Cloud-World.png" length="79449" type="image/png" />
      <pubDate>Tue, 30 Jul 2019 12:43:12 GMT</pubDate>
      <guid>https://www.trisys.co.uk/trisys-amazon-cloud</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/TriSys-Cloud-World.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/TriSys-Cloud-World.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Customer Relationships - making more from your database</title>
      <link>https://www.trisys.co.uk/customer-relationships-blog</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Customer relationship management (CRM) systems tend to focus upon your (the user) relationship with your customers.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This is only half the story, as your customers themselves have their own very important relationships with their clients, candidates and indeed between their respective company and associates, parents and subsidiaries.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          These inter-customer relationships are very important to you as a recruiter for the following reasons:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Helps you understand the 'sphere of influence' of your key customers
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Allows you to reach someone you do not know by way of a referral through someone who influences them
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            A tool for 'mining the fox' e.g. reaching the key decision maker in an organisation (often NOT the most senior person on the organogram)
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Improves your account management by better understanding your inter-customer relationships
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Introducing the TriSys Apex Relationship Manager:
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/apex-relationships-blog.png" alt="A screenshot of a computer screen with a popup window."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         TriSys allows you to build relationships of any type between both your contacts and companies. You have full control over whatever type of relationship you choose to record for example "is the line manager of" through to "went to school with" or "is married to". 
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          For a quick overview of how to enable this functionality today, please watch the following video:
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/build-relationships.jpg" length="133943" type="image/jpeg" />
      <pubDate>Sat, 08 Jun 2019 11:38:12 GMT</pubDate>
      <guid>https://www.trisys.co.uk/customer-relationships-blog</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/build-relationships.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/build-relationships.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Platformix Web Site Builder</title>
      <link>https://www.trisys.co.uk/platformix-web-site-builder</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         As a recruitment agency, you are expected to have a presence on the web i.e. your company website.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          You probably have such a website; designed by someone else, hard to maintain and update content, out of date, not linked to your recruitment CRM, no metrics, no SEO, not providing value for money or a return on investment?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We are aware of your pain, which is why we have built
          &#xD;
    &lt;a href="/website-builder"&gt;&#xD;
      
           Platformix
          &#xD;
    &lt;/a&gt;&#xD;
    
          :
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/platformix-website-jan-2020.png" alt="A man is talking on a cell phone while sitting in front of a laptop computer."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;a href="/website-builder"&gt;&#xD;
    
          Platformix
         &#xD;
  &lt;/a&gt;&#xD;
  
         is essentially a mix of the worlds most powerful cloud platforms, completely integrated by TriSys for you, our customers.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Here are the key benefits to your business:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Quickly deploy your new website by choosing from one of our templates
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Point and click, drag and drop to build your new website in minutes, and have fun doing it
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Complete integration with your TriSys recruitment database allowing candidates to search and apply to your jobs
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Timesheet integration to allow your candidates to get paid quicker
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Integrated blog engine
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Engage with your customers, candidates, partners and staff
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Analytics to measure performance of your website
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Search engine optimisation (SEO) to allow your website, company and jobs to be easily found on search engines
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Update your web site at any time so it is always current and topical
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Telephone support from us to help you choose a domain or safely migrate your existing website
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Full HTTPS/SSL secure web site
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Very low cost effective monthly billing model
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/platformix-template-examples.png" alt="There are many different types of websites on a white background."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         We are today inviting you to take platformix for a
         &#xD;
  &lt;span&gt;&#xD;
    
          free
         &#xD;
  &lt;/span&gt;&#xD;
  
         test drive:
         &#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Visit
            &#xD;
        &lt;a href="https://www.platformix.co.uk" target="_blank"&gt;&#xD;
          
             www.platformix.co.uk
            &#xD;
        &lt;/a&gt;&#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Choose one of our website templates and edit using point and click, drag and drop to build your new website in minutes
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Publish your new website to share with your colleagues
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Test our fully integrated candidate
            &#xD;
        &lt;a href="https://www.platformix.co.uk/vacancies" target="_blank"&gt;&#xD;
          
             live vacancies portal
            &#xD;
        &lt;/a&gt;&#xD;
        
            to experience  job hunting as a candidate
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        &lt;a href="/contactold"&gt;&#xD;
          
             Contact us
            &#xD;
        &lt;/a&gt;&#xD;
        
            for a fully featured personal demonstration showing you the full opportunity available to you, today
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We believe that Platformix is the next generation customer engagement platform for you.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/platformix-vacancies-map.png" alt="A computer screen shows a map of vacancies."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/platformix-logo.jpg" length="41302" type="image/png" />
      <pubDate>Thu, 30 May 2019 14:50:14 GMT</pubDate>
      <guid>https://www.trisys.co.uk/platformix-web-site-builder</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/platformix-logo.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/platformix-logo.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Recruitment Websites</title>
      <link>https://www.trisys.co.uk/recruitment-websites-blog</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         TriSys' Cloud technology began life in the late 1990's when the Internet and Web technologies started to bring real business benefits to recruiters. Following the subsequent golden era of 'static' web sites, TriSys began building interactive web sites, or job portals, culminating in TriSys Web Jobs, a database driven web site for recruitment agencies to engage with their clients and candidates. Today it is expected that a recruitment agency website is also a powerful content management system (CMS) allowing for instant content updates, integration with social media/job board platforms, advanced graphical performance metrics, and of course easy accessibility from mobile devices.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Our global recruiting platform has now reached a level of maturity and sophistication where we are confident that we can genuinely provide a one-stop-shop to recruitment agencies for all their technological needs, from front-to-back. Deal with a single supplier. Pay a fixed affordable monthly fee. No hidden extras. Continuity, year after year. Proven and demonstrable return on investment.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          If you are a recruitment agency with an existing web site, and you believe that you and your business can do better, then please contact us ASAP for a personal on-line demonstration. We guarantee that you will be totally amazed by how quickly we can re-imagine your website into a highly engaging interactive experience for your clients, candidates and consultants.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Welcome to your future. 01223 77 22 80.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1492515114975-b062d1a270ae.jpg" length="294979" type="image/jpeg" />
      <pubDate>Thu, 28 Mar 2019 16:03:13 GMT</pubDate>
      <guid>https://www.trisys.co.uk/recruitment-websites-blog</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1492515114975-b062d1a270ae.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1492515114975-b062d1a270ae.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Invitation to Web Designers/Developers</title>
      <link>https://www.trisys.co.uk/invitation-to-web-designers-developers</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         The TriSys Web Application Programming Interface is a suite of web services which exposes recruitment business functionality to client-side applications (mobile apps, voice apps, chatbots, web browser apps, windows applications) running on any operating system (Windows, MacOS, iOS, Android) on any type of device (phone, tablet, laptop, PC, television, Alexa, Siri, Cortana etc..). 
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          If you are a web designer/developer engaged by a recruitment agency to integrate their web site or mobile app with their TriSys candidates, jobs, timesheets &amp;amp; more, then the TriSys Web API is the live 24x7 always-on programmatic interface you can quickly deploy to provision rich business process interactivity.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This month, we have revised our documentation hosted at
          &#xD;
    &lt;a href="https://api.trisys.co.uk" target="_blank"&gt;&#xD;
      
           api.trisys.co.uk
          &#xD;
    &lt;/a&gt;&#xD;
    
          by adopting the
          &#xD;
    &lt;a href="https://www.getpostman.com/" target="_blank"&gt;&#xD;
      
           Postman
          &#xD;
    &lt;/a&gt;&#xD;
    
          platform for running automated tests and live documentation generation:
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/web-api.png" alt="A computer screen is open to a page that says trisys web api."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         You can generate your own code to authenticate, list, read, write and delete data in your favourite web programming language: cURL, JQuery, Ruby, Python, Node, PHP, Go:
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/api-vacancies-search-curl.png" alt="A computer screen with a bunch of tabs open on it."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         If you are familiar with Postman and have an account, you can run the full suite of API tests by clicking this button:
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/web-api-run-in-postman.png" alt="A screenshot of a web page for trisys web api"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         Our full suite of Web API tests will then be pushed into your Postman application, from where you can perform full CRUD (create, read, update, delete) operations via the Web API with no programming using the point and click environment:
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/web-api-postman-json.png" alt="A computer screen with a bunch of code on it."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         Upon request, we will supply you with secure public-key credentials to access your specific customers database running within our multi-tenant global cloud infrastructure. Postman calls these environment variables and they are referenced throughout the Web API documentation.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          All of our API methods are self-contained and each comprises a corresponding authenticate method so that the appropriate security level is obtained to interact with the customer live TriSys database. Each operation is also configured to perform pre and post tests to check the validity of the API sequences. This allows the full suite to be automated periodically as an hourly monitor, or manually using the Postman Collection Runner:
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/postman-runner.png" alt="A screenshot of a computer screen showing a list of messages."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         In summary, if you are a web designer/developer engaged by a customer of TriSys Business Software, you can quickly and and cost effectively tightly integrate with live data to enchant your customer and their clients and candidates. Please
         &#xD;
  &lt;a href="/contactold"&gt;&#xD;
    
          contact us
         &#xD;
  &lt;/a&gt;&#xD;
  
         for further details.
        &#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1504639725590-34d0984388bd.jpg" length="333154" type="image/jpeg" />
      <pubDate>Wed, 27 Feb 2019 16:30:36 GMT</pubDate>
      <guid>https://www.trisys.co.uk/invitation-to-web-designers-developers</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1504639725590-34d0984388bd.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1504639725590-34d0984388bd.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Product Portfolio</title>
      <link>https://www.trisys.co.uk/product-portfolio</link>
      <description>As we approach our 25th anniversary in May 2019, we have decided to briefly summarise our range of products which have been developed to maturity over the last quarter of a century</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         As we approach our 25th anniversary in May 2019, we have decided to briefly summarise our range of products which have been developed to maturity over the last quarter of a century:
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/apex-dashboard-wall.png" alt="A computer screen shows a dashboard with a pie chart"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;font&gt;&#xD;
    &lt;b&gt;&#xD;
      
           APEX WEB BROWSER APPLICATION
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/font&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Cross-Platform Cloud Recruitment Software
          &#xD;
    &lt;/span&gt;&#xD;
    
           
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Apex is a recruitment CRM application designed for modern recruitment agencies which works inside any web browser and on any device i.e. tablet, phone, laptop, desktop or TV.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Apex can be used by recruitment agencies of all sizes to provide convenient access to both on-premise or on-demand recruitment database at any time, and from any place.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Apex is a completely pay-as-you-go recruitment system allowing anyone to
          &#xD;
    &lt;a href="/apex-cloud-suite"&gt;&#xD;
      
           sign-up
          &#xD;
    &lt;/a&gt;&#xD;
    
          and subscribe in minutes.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/trisys-2020-windows-app.png" alt="A computer screen with a picture of a man on it"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;font&gt;&#xD;
    &lt;b&gt;&#xD;
      
           .NET APPLICATION (CLOUD &amp;amp; ONSITE)
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/font&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Recruitment Software for Microsoft Windows
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The TriSys recruitment desktop application can be installed on Windows computers to provide tight integration with both on-premise and on-demand SQL Servers, e-mail servers, file servers and active directory deployments. Runs onsite and also as a cloud service/thin client.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          It integrates tightly with locally installed Microsoft Office applications and comprises sophisticated recruiting functionality such as CV auto-recognition, booking sheet, and actions workflow.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/web-jobs-vacancy-search.png" alt="A screenshot of a web page that says &amp;quot; vacancy search &amp;quot;"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;font&gt;&#xD;
    &lt;b&gt;&#xD;
      
           CLIENT/CANDIDATE PORTALS
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/font&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Recruitment Portals and Website integration
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Timesheet portal, client and candidate online web portals with mobile and browser login, self-service recruitment and much more, all included with your TriSys database.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Maximise your returns, using TriSys Cloud Recruitment Software. Also available for onsite installations.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          A soon to be announced
          &#xD;
    &lt;a href="/website-builder"&gt;&#xD;
      
           revolutionary recruitment website solution
          &#xD;
    &lt;/a&gt;&#xD;
    
          .
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/outlook-desktop-add-in.png" alt="A screenshot of a computer screen with a map on it"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;font&gt;&#xD;
    &lt;b&gt;&#xD;
      
           OUTLOOK/OFFICE INTEGRATION
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/font&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Full CRM integration with Microsoft Office
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The TriSys add-in for Microsoft Office can be installed on Windows to provide tight integration between your Outlook e-mail and your recruitment database.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          You can generate clients and candidates by selecting e-mail messages as well as linking e-mails to existing contacts as note/history records.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/remote-desktop-connection.png" alt="A computer screen with the word recruit on it"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;font&gt;&#xD;
    &lt;b&gt;&#xD;
      
           REMOTE DESKTOP
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/font&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Fully Managed Cloud Desktop
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The TriSys remote desktop shortcut can be installed on Windows to provide an easy method of connecting to your TriSys recruiter remote desktop.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Once installed on your computer, the program will remember your login settings so that you can quickly reconnect each morning.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/support-portal-rdp-login.png" alt="A computer screen shows a screenshot of a windows computer"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;font&gt;&#xD;
    &lt;b&gt;&#xD;
      
           REMOTE DESKTOP (BROWSER)
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/font&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Fully Managed Cloud Desktop
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The TriSys remote desktop can be accessed directly from your web browser to connect to your TriSys recruiter remote desktop.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This mechanism allows you to connect to your desktop from any location without installing any software.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Fully compatible with all operating systems including Apple Mac.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/windows-store-app.png" alt="A computer screen shows a microsoft website"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;font color="var(--color_2)"&gt;&#xD;
    &lt;b&gt;&#xD;
      
           WINDOWS STORE APP
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/font&gt;&#xD;
  &lt;br/&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Recruitment CRM App in the Windows Store
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This TriSys Recruitment CRM application can be installed into your Windows desktop or Windows phone using the windows store.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Windows 10 users can quickly locate TriSys in the store and install it as a task bar and desktop shortcut.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/trisys-agency-mobile-app.png" alt="A diagram of a candidate and client mobile app"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;font&gt;&#xD;
    &lt;b&gt;&#xD;
      
           MOBILE APP
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/font&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Native Mobile App for Mobile Devices
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Install TriSys Recruitment CRM on your Android or iOS phone/tablet and experience TriSys recruitment software at it's best.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Work anywhere, anytime - manage full recruitment workflows, collaborate with your team and much more.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The TriSys Mobile Recruitment App provides convenient and fast access to your clients and candidates for the purpose of meeting, texting, calling and e-mailing and much more. The Mobile App is very easy to use and connects to your live TriSys database residing both on-premise and on-demand/cloud.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Simply search for 'TriSys' on your mobile App store (App Store or Google Play).
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/trisys-apex-multiple-devices.png" length="60034" type="image/png" />
      <pubDate>Wed, 30 Jan 2019 16:34:37 GMT</pubDate>
      <guid>https://www.trisys.co.uk/product-portfolio</guid>
      <g-custom:tags type="string">trisys,crm,recruitment,products,services</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/trisys-apex-multiple-devices.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/trisys-apex-multiple-devices.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Annual Roadmap for 2019</title>
      <link>https://www.trisys.co.uk/annual-roadmap-for-2019</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         We are planning some very exciting innovations and enhancements to the products and services of TriSys Business Software in 2019:
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys 2019
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The latest version of our premiere windows desktop recruitment CRM is now available to all existing customers. This application was first released in 1992 and is a rock-solid recruitment business app. For customers on the 2018 version, the application will automatically upgrade. All new features will be documented in the coming months.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys Cloud Platform
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Our cloud infrastructure platform was conceived and built in 2002. It has grown and matured to comprise literally hundreds of cloud servers distributed across the planet. Customers use our platform to store and process their large corporate data assets, via our software products and integrated API's.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys Apex Web Browser
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Our cross-platform web browser recruitment CRM was released in 2014 and uses the TriSys platform for all of its data and functionality. Customers with any type of computer, tablet or phone can access their recruitment data and conduct sophisticated workflows to drive their business forward, wherever they are and at any time.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys Mobile Suite
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Recruiters can access their recruitment database from their tablet and phone by installing our app. Recruitment agencies can also commission their own mobile app using our Vertex technology to engage with their clients and candidates.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys Web Jobs
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Web Jobs fully integrates, or replaces your existing web site, and the new Google Jobs, by providing powerful candidate and client engagement portals. These portals can serve as job finding platforms through to timesheet management and payroll facilitation.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys 2020 'Vision'
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The software industry has a new paradigm for building line of business applications called 'service workers'. These allow for the building of a new breed of software called progressive web apps (PWA). A PWA is installable from the web, but can run on a device even where there is no internet connection. TriSys is committed to building a PWA in time for maturation of this technology within the next 18 months.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Google Jobs
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This new service has the potential to disrupt the job board ecosystem, hence TriSys will have a fully compatible suite of tools to facilitate management of jobs posted to Google Jobs as well as managing the candidate applicant process via TriSys Web Jobs.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Should you wish to discuss your plans for implementing any of the above products and services, then please
          &#xD;
    &lt;a href="/contactold"&gt;&#xD;
      
           contact us
          &#xD;
    &lt;/a&gt;&#xD;
    
          .
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1543839482-a95d35fc5a77.jpg" length="821583" type="image/jpeg" />
      <pubDate>Fri, 21 Dec 2018 17:02:36 GMT</pubDate>
      <guid>https://www.trisys.co.uk/annual-roadmap-for-2019</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1543839482-a95d35fc5a77.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1543839482-a95d35fc5a77.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys Recruitment API Platform</title>
      <link>https://www.trisys.co.uk/trisys-recruitment-api-platform</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Many important developments have taken place since TriSys was first made available as a solution for recruitment agencies.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          One of the most significant developments has been the development of the
          &#xD;
    &lt;a href="https://api.trisys.co.uk" target="_blank"&gt;&#xD;
      
           TriSys Recruitment API
          &#xD;
    &lt;/a&gt;&#xD;
    
          (Application Programming Interface).
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The TriSys Recruitment API can be configured to run in a variety of scenarios, therefore fully aligned with your IT strategy:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Full Onsite - running within your corporate computer network/datacentre
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Hybrid - running in the TriSys cloud, connected to your onsite TriSys database
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Full Cloud  - the API and your TriSys database both running within the TriSys cloud
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The TriSys API is the market-leading platform for recruitment agencies looking to:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Deliver a range of services to their audience (users, candidates, clients, suppliers/partners) which are designed to streamline business processes and eliminate costly overheads
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Eliminate 3rd party costs such as website integrations, timesheet portals, onboarding solutions and others, replacing them with the API service
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Standardise business processes using a flexible, fully integrated platform which can be tailored to their everyday needs
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Maximise their return on investment with TriSys
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/web-api.png" length="38779" type="image/png" />
      <pubDate>Fri, 30 Nov 2018 13:17:56 GMT</pubDate>
      <guid>https://www.trisys.co.uk/trisys-recruitment-api-platform</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/web-api.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/web-api.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>September Update - TriSys Apex - Document Editors &amp; File Manager</title>
      <link>https://www.trisys.co.uk/september-update-trisys-apex-document-editors-file-manager</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         September has been yet another incredibly productive month at TriSys. 
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Our product engineering teams have just implemented full-blown Microsoft Office Document Editors within TriSys Apex,  a ground-breaking achievement!
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This means you are now able to edit Word/Excel documents within TriSys Apex (saving you considerable time and money) whilst streamlining document management processes including but not limited to:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Editing original CV's (even before importing the CV)
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Editing formatted CV's (within TriSys, therefore the days of downloading and uploading CV's are over)
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Editing any Word document attached to any database record
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Editing Excel documents stored against any database record
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Launching multiple document editors in separate browser tabs, for added productivity (especially in dual monitor scenarios)
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          In summary, the new Word/Excel document editors add further value to your TriSys database, also fully eliminating the need to use Microsoft Office Word/Excel on your computer, therefore negating the need to purchase/subscribe to document-editing software applications/services and enabling your CRM database to offer even better value for money, in a seamless way which works the way you do.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Also introduced in September, the new
          &#xD;
    &lt;b&gt;&#xD;
      
           TriSys File Manager
          &#xD;
    &lt;/b&gt;&#xD;
    
          allows you to create folders and files within TriSys, eliminating the need and risk associated with storing important documents within your computer (also eliminating the need to subscribe to 3rd party cloud storage services such as Dropbox and OneDrive).
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          In combination with the Microsoft Word/Excel document editors, the file manager is your perfect file repository, allowing you do even more within TriSys.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Please see the recently updated
          &#xD;
    &lt;a href="https://apex.trisys.co.uk/?UserGuide" target="_blank"&gt;&#xD;
      
           TriSys Apex User Guide
          &#xD;
    &lt;/a&gt;&#xD;
    
          where you will find a detailed visual overview of the new TriSys Microsoft Word/Excel document editors and the new TriSys File Manager.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          As always, we would like to thank you for your feedback and look forward for your continued feedback.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          On behalf of the TriSys team, I would like to wish you a very successful October with TriSys Recruitment Software.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1544655152-4dc3bc4df059.jpg" length="226832" type="image/jpeg" />
      <pubDate>Fri, 21 Sep 2018 12:13:26 GMT</pubDate>
      <guid>https://www.trisys.co.uk/september-update-trisys-apex-document-editors-file-manager</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1544655152-4dc3bc4df059.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1544655152-4dc3bc4df059.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>PWA and Service Workers</title>
      <link>https://www.trisys.co.uk/pwa-and-service-workers</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Our development team conducted some preliminary research into progressive web apps (PWA) and service workers in August 2018. This post documents the findings from this work.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The principal goal of PWA's is to effectively replace native apps with locally cached web sites by allowing users to add each web browser app to their phone/tablet/desktop device and launch this app even when no network is present. A secondary goal is to allow background alert handling.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          To do this, a new asynchronous layer called the service worker handles events such as 'install', 'activate' and 'fetch' to respectively setup cacheing and routing, and serve the app from either the local cache when off-line, or from the network when on-line. By adding 'sync' capabilities, it could also be possible for PWA's to hydrate their cache on a background thread.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Service workers cannot access the DOM and can only communicate with other layers using postMessage routing in order to maintain asynchronicity, however this will result in very complex PWA software applications.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Google has introduced additional libraries (e.g. Workbox) to make writing service workers easier, however these libraries, as for sophisticated production quality service worker example code, currently lack clarity and adequate documentation and support.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          By using a 'manifest', the PWA running on Chrome on Android will prompt the user to add the app to the home screen, from where it can be launched in future.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          All of this technology developed by Google, and some of it open sourced  (Service Workers and PWA), works today on their own mobile operating system (Android) and their web browser (Chrome). Unfortunately, support for PWA add to home screen is not supported on iOS/Safari or Microsoft Edge on Android. Off-line support does not work on the latest iOS/Safari.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We implemented a cache-versioning system to allow easy updates of our software on an hourly basis, and whilst this worked well when on-line, it did not work reliably when in off-line mode. This is a mandatory requirement for pushing out customer specific code to thousands of on-line users.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This lack of availability on non-Google platforms, plus random behaviour encountered with our own off-line induced sync errors, means that we will be waiting for future enhancements to the PWA sphere before committing further development resource to building our next version of TriSys as a cross-platform PWA to replace our native apps.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1516788875874-c5912cae7b43.jpg" length="134796" type="image/jpeg" />
      <pubDate>Wed, 15 Aug 2018 12:09:06 GMT</pubDate>
      <guid>https://www.trisys.co.uk/pwa-and-service-workers</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1516788875874-c5912cae7b43.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1516788875874-c5912cae7b43.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Artificial Intelligence Recruitment</title>
      <link>https://www.trisys.co.uk/artificial-intelligence-recruitment</link>
      <description>There is much growing hype about AI (artificial intelligence) and how it will impact society and business. This post discusses its potential impact upon our customers belonging to the global recruitment industry.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         There is much growing hype about AI (artificial intelligence) and how it will impact society and business. This post discusses its potential impact upon our customers belonging to the global recruitment industry.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Most professional recruiters are familiar with how AI is used in practical applications such as Apple Siri, Amazon Alexa, Google Translate and Microsoft Cortana. There is no doubt that much progress has been made in providing 'chat-bot' technology. Other innovations of late involve IBM Watson beating humans in the TV quiz show Jeopardy, and Deep Mind beating the world Go champion, as well as getting maximum scores on BreakOut and PacMan.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The most interesting recent innovation is Google Duplex which has been demonstrated making automated phone calls to book service appointments (e.g. hairdressers). Whilst this is interesting and fun, it has obvious limitations at present which perhaps indicate a glass-ceiling to the use of such technology.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Many recruitment technology suppliers are jumping on this bandwagon, notably those within the 'matching' space. Typically computers are faster and often more accurate when sifting through vast quantities of data, and this has practical applications when applying AI techniques such as machine-learning to trawl through large quantities of CV's or job descriptions. In this scenario, the use of AI represents an increase in quality (and cost, but not performance) when applied to this 'matching' process, however automatically compiling a better shortlist does not necessarily improve the overall recruitment workflow or the quality of candidates.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Many new AI systems, it is claimed, will replace the recruiter altogether, allowing sophisticated AI systems to conduct the entire recruitment process from marketing, sales, advertising, job management, placement, administration etc.. This will not happen soon. Even the most optimistic advocate of AI does not foresee this scenario until 2045 at the earliest, this date representing the so-called 'singularity' when machines create machines which automate all human work, whether white-collar or blue-collar. Around half of the AI experts believe it will be at least a hundred years before we reach the singularity, and some doubt whether true machine intelligence is even possible, given the sophistication of the human brain, the most complex system in the known universe.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          In conclusion, AI will continue to get better and evolve, but there will be no overnight revolution in recruitment, or any other predominantly cerebral business sector where human interaction based upon building and maintaining trustworthy personal relationships is literally where the money is.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/ai-city-girl-planet.jpg" length="350623" type="image/jpeg" />
      <pubDate>Wed, 04 Jul 2018 16:10:54 GMT</pubDate>
      <guid>https://www.trisys.co.uk/artificial-intelligence-recruitment</guid>
      <g-custom:tags type="string">trisys,ai,recruitment,hype,machine learning,duplex,siri,alexa</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/ai-city-girl-planet.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/ai-city-girl-planet.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Marketing Campaign Management</title>
      <link>https://www.trisys.co.uk/marketing-campaign-management</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         In order to help our customers deliver cost-effective GDPR compliant marketing communications, we designed and built a new innovative component within TriSys Apex called the Marketing Campaign Manager.
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/apex-marketing-campaign-clicks-35f61dbe.png" alt="A screenshot of a computer screen showing a popup window."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         This component has the following features:
         &#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Very tight integration between all contacts, companies, searches and your web site
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Full delivery, read, clicked, undelivered, bounced metrics
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Track every e-mail hyperlink click to build intelligence about the success ratios of your advertised information
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Supports any popular industry standard e-mail template from commercial suppliers
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Batch processing to merge up to 1 million e-mail messages per day
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Mass e-mail capability of 1 million delivered messages per day
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Can use your own SMTP e-mail delivery services which may have limits, or ours which has unlimited capacity
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            No need for 3rd party e-mail generation tools
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            No need to export and import
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          When this tool is used for GDPR, TriSys provides a number of additional services to help you get the best from e-mail marketing:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Data cleanse - remove legacy contacts from your database
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            E-Mail address validation - identify invalid e-mail addresses
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Web portal to allow your clients and candidates to opt-in to future marketing communications or to request removal of their data
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The marketing campaign manager is available now. Please contact your account manager to have this enabled for your company.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1557804506-669a67965ba0.jpg" length="441600" type="image/jpeg" />
      <pubDate>Mon, 30 Apr 2018 16:17:37 GMT</pubDate>
      <guid>https://www.trisys.co.uk/marketing-campaign-management</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1557804506-669a67965ba0.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1557804506-669a67965ba0.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Our Support Portal is GDPR Compliant</title>
      <link>https://www.trisys.co.uk/our-support-portal-is-gdpr-compliant</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         The general data protection registration becomes law on 25 May 2018. All TriSys' products and services are fully
         &#xD;
  &lt;a href="/gdpr"&gt;&#xD;
    
          GDPR compliant
         &#xD;
  &lt;/a&gt;&#xD;
  
         in advance of this date.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This blog presents our GDPR compliance solution implemented on our own
          &#xD;
    &lt;a href="https://support.trisys.co.uk" target="_blank"&gt;&#xD;
      
           support portal
          &#xD;
    &lt;/a&gt;&#xD;
    
          .
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Our support portal is available at
          &#xD;
    &lt;a href="https://support.trisys.co.uk"&gt;&#xD;
      
           support.trisys.co.uk
          &#xD;
    &lt;/a&gt;&#xD;
    
          , and anyone whose details are stored on our CRM database can securely login to their profile. Next month we will be sending out invites to everyone on our database using our new GDPR compliant marketing campaign management tool, which will be introduced in a blog post next month.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          After logging in, customers are able to:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            View their personally identifiable data
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Amend any details
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Manage their privacy preferences
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/GDPR-TriSys-Support-Portal-blog.png" alt="A computer screen shows a person 's profile page"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         Numerous fields and buttons specific to GDPR are available:
         &#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Gender: this includes provision for customers to decline to specify their gender using either the Other or Unknown options.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Change Company: this allows customers to request that their company details be changed. Because we may have legal or financial information linked to the company and address, this is a manual process conducted by our account management team upon your request.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Agree to receiving marketing communications: this allows customers to opt-in to receive marketing literature from TriSys. By default, this is off, meaning that customers will not receive marketing literature from TriSys unless they opt-in.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Agree to privacy policy: this allows customers to agree with our privacy policy which is available to read by clicking the privacy policy link in this option. By default, this is off, meaning that this customer does not agree with our privacy policy.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Restrict processing of details: this allows customers to request that TriSys cannot process their data under the GDPR legislation. This means that we many retain customer data, but will not be permitted to view, process or amend it.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Request Removal: this button allows customers to request that all their details are deleted. Whilst this can be effected quickly, there are some circumstances, such as legal or financial, where we must retain customer details for a period of time. Customers will be notified if this is the case.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Portability Request: this button allows customers to receive an e-mail containing a portable data file containing their contact details so that they can import these into another GDPR compliant computer system of their choosing.
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In some cases above, customers will receive a confirmation e-mail.
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The same approach can also be implemented within customers' client and candidate portals and mobile apps. This allows our customers to provide the same GDPR compliancy solution to their clients and candidates.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          With only 2 months to go before the introduction of GDPR, customers should act now by contacting us.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/gdpr.jpg" length="177027" type="image/jpeg" />
      <pubDate>Thu, 29 Mar 2018 16:29:14 GMT</pubDate>
      <guid>https://www.trisys.co.uk/our-support-portal-is-gdpr-compliant</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/gdpr.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/gdpr.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Annual Roadmap for 2018</title>
      <link>https://www.trisys.co.uk/annual-roadmap-for-2018</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         This year will see some very exciting innovations and enhancements to the products and services of TriSys Business Software:
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys 2018 Desktop
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The latest version of our premiere windows desktop recruitment CRM is now available to all existing customers. This desktop product was first released in 1992 and is a rock-solid recruitment business application. For customers on the 2017 version, the application should have automatically upgraded. A host of new features are now available by
          &#xD;
    &lt;a href="/recruitment-crm"&gt;&#xD;
      
           clicking here
          &#xD;
    &lt;/a&gt;&#xD;
    
          .
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys Cloud Platform
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Our cloud infrastructure platform was conceived and built in 2002. It has grown and matured to comprise literally hundreds of cloud servers distributed across the planet. Customers use our platform to store and process their large corporate data assets, via our software products and
          &#xD;
    &lt;a href="https://api.trisys.co.uk" target="_blank"&gt;&#xD;
      
           integrated API's
          &#xD;
    &lt;/a&gt;&#xD;
    
          .
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys Apex Web Browser
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Our cross-platform web browser
          &#xD;
    &lt;a href="/apex-cloud-suite"&gt;&#xD;
      
           recruitment CRM
          &#xD;
    &lt;/a&gt;&#xD;
    
          was released in 2014 and uses the TriSys platform for all of its data and functionality. Customers with any type of computer, tablet or phone can access their recruitment data and conduct sophisticated workflows to drive their business forward, wherever they are and at any time.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys Mobile Suite
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Recruiters can access their recruitment database from their tablet and phone by installing our app. Recruitment agencies can also commission their own mobile app using our
          &#xD;
    &lt;a href="/mobile-apps"&gt;&#xD;
      
           Vertex technology
          &#xD;
    &lt;/a&gt;&#xD;
    
          to engage with their clients and candidates.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys Web Jobs
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Web Jobs fully integrates, or replaces your existing web site by providing powerful candidate and client
          &#xD;
    &lt;a href="/website-builder"&gt;&#xD;
      
           engagement portals
          &#xD;
    &lt;/a&gt;&#xD;
    
          . These portals can serve as job finding platforms through to timesheet management and payroll facilitation.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          GDPR
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The general data protection registration becomes law on 25 May 2018. All TriSys' products and services will be fully GDPR compliant by this date. We are
          &#xD;
    &lt;a href="/gdpr"&gt;&#xD;
      
           building functionality
          &#xD;
    &lt;/a&gt;&#xD;
    
          specifically for our customers to help them adhere to this new legislation.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Should you wish to discuss your plans for implementing any of the above products and services, then please
          &#xD;
    &lt;a href="/contactold"&gt;&#xD;
      
           contact us
          &#xD;
    &lt;/a&gt;&#xD;
    
          .
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1486673748761-a8d18475c757.jpg" length="452211" type="image/jpeg" />
      <pubDate>Wed, 31 Jan 2018 12:58:06 GMT</pubDate>
      <guid>https://www.trisys.co.uk/annual-roadmap-for-2018</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1486673748761-a8d18475c757.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1486673748761-a8d18475c757.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys Cloud Monitoring</title>
      <link>https://www.trisys.co.uk/trisys-cloud-monitoring</link>
      <description>TriSys believes in absolute transparency so has created a completely separate and independent domain: trisyscloud.com which can be accessed from any web browser on any device including phones and tablets:</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Many cloud services have status pages which show the reliability (or otherwise) and availability of their global computing infrastructure.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Unfortunately, many run their own reporting from their own servers, or do not report (for political, marketing, legal and economic reasons) the actual status of their cloud.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys believes in absolute transparency so has created a completely separate and independent domain:
          &#xD;
    &lt;a href="https://www.trisys.co.uk/cloud-status" target="_blank"&gt;&#xD;
      
           trisyscloud.com
          &#xD;
    &lt;/a&gt;&#xD;
    
          which can be accessed from any web browser on any device including phones and tablets:
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/trisyscloud.com.png" alt="A screenshot of a web page showing a list of companies"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         The benefits of our
         &#xD;
  &lt;a href="https://www.trisys.co.uk/cloud-status" target="_blank"&gt;&#xD;
    
          cloud monitoring service
         &#xD;
  &lt;/a&gt;&#xD;
  
         are:
         &#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            We have dozens of live production servers as well as hundreds of on-demand cloud desktop computers and they need constant monitoring
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            We provide a secure suite of Web API's which are used to identify reliability on our network
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            We have partnered with a trusted 3rd party, Pingdom, to provide external monitoring of our services
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Our trisyscloud.com domain is held and hosted with another 3rd party partner, names.co.uk
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Our solution is truly independent in that when you view trisyscloud.com you are not using any of TriSys' cloud servers, infrastructure or network comms
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            All our essential 'always-on' 24x7 servers are listed, which allows our support engineers to help our customers in the case of an outage
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Our alert monitoring and escalation procedures ensure that our engineers will know of any potential problem long before our customers
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            We are fully transparent at all times about the health of our cloud infrastructure
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            We are realistic that cloud computing is very reliable, but not 100% reliable
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The
          &#xD;
    &lt;a href="https://www.trisys.co.uk/cloud-status" target="_blank"&gt;&#xD;
      
           web site
          &#xD;
    &lt;/a&gt;&#xD;
    
          went through configuration and testing during the last few days so at present is not yet showing a full array of green ticks.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1504608524841-42fe6f032b4b.jpg" length="781509" type="image/jpeg" />
      <pubDate>Thu, 21 Dec 2017 17:33:24 GMT</pubDate>
      <guid>https://www.trisys.co.uk/trisys-cloud-monitoring</guid>
      <g-custom:tags type="string">trisys cloud,monitoring,pingdom,trisyscloud.com</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1504608524841-42fe6f032b4b.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1504608524841-42fe6f032b4b.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys Vertex - Mobile App Framework</title>
      <link>https://www.trisys.co.uk/trisys-vertex-mobile-app-framework</link>
      <description />
      <content:encoded>&lt;div&gt;&#xD;
  &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/Vertex-Logo-Text-512x512.png" alt="A logo for trisys vertex mobile application framework"/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         Our first mobile apps for Apple iPhone, Google Android phones, Blackberry devices and Microsoft Windows Phone debuted in 2010. These apps allowed recruiters read-only access to their recruitment database.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Subsequently, with the development of our Web API, and the increasing use of iOS and Android, we released version 2.0 in August 2013. Recruiters were then able to have a more fluid experience optimised for popular mobile devices including tablets such as the iPad.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          With the development and release of our Apex web-browser recruitment CRM, we were then able to package that up as a native mobile app released in May 2017. TriSys Mobile 2017 has full-CRUD (create, read, update, delete) functionality and is a fully-functional recruitment CRM for tablets and phones.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The latest incarnation of TriSys Web Jobs is built entirely with our Web API and Apex technology, and is powering hundreds of recruitment agency web sites and job boards, giving both candidates and clients a powerful job hunting and administration platform including the provision of on-line timesheets.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          With the post-iPhone-2007 demise of both Blackberry and Windows Phone, and their respective proprietary operating systems, iOS and Android have emerged as the winners of both the mobile phone and tablet markets. Given the superiority of their respective platforms, mobile apps are becomingly increasingly sophisticated and powerful.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          To tap into the growing global adoption of mobile technology, polarised around iOS and Android, and to take advantage of the ever-increasing number of opportunities, we decided to design and build a new mobile-first app framework to allow us to quickly create industrial strength line of business (LoB) applications built on our, and partners', global cloud infrastructure.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys Vertex is our mobile app framework for building vertical market LoB business-to-business (B2B) and business-to-consumer (B2C) apps for a wide variety of customers and consumers in any industry.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The first B2C app we have built using Vertex is a recruitment agency mobile app to attract and retain high-quality candidates. The app is fully branded specifically for the recruitment agency and is both discoverable and installable from the respective app-store using the agency brand name.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Here are actual phone images from our demonstration agency mobile app:
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/vertex-recruitment-app-mosaic.png" alt="A screenshot of a cell phone with a dark background."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         You can
         &#xD;
  &lt;a href="https://irp-cdn.multiscreensite.com/f3b4d364/files/uploaded/Datasheet-Vertex-Candidate-Mobile-App.pdf" target="_blank"&gt;&#xD;
    
          view further details
         &#xD;
  &lt;/a&gt;&#xD;
  
         on our Vertex mobile app, or install it and try it for yourself using the following links for iPhone/iPad and Android respectively:
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a target="_blank" href="https://play.google.com/store/apps/details?id=co.uk.trisys.vertex&amp;amp;hl=en"&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/google-play.png" alt="A get it on google play button on a white background."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a target="_blank" href="https://itunes.apple.com/gb/app/trisys-vertex/id1282436790?mt=8&amp;amp;ign-mpt=uo%3D2"&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/appstore-logo.png" alt="A black button that says download on the app store"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/Vertex-Logo-Text-512x512.png" length="26389" type="image/png" />
      <pubDate>Thu, 30 Nov 2017 17:46:25 GMT</pubDate>
      <guid>https://www.trisys.co.uk/trisys-vertex-mobile-app-framework</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/Vertex-Logo-Text-512x512.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/Vertex-Logo-Text-512x512.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Support Innovations</title>
      <link>https://www.trisys.co.uk/support-innovations</link>
      <description>Customers can raise support issues, or 'tickets' via our support web site at support.trisys.co.uk, or by calling us on 01223 77 22 80.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Customers can raise support issues, or 'tickets' via our support web site at support.trisys.co.uk, or by calling us on 01223 77 22 80.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          When a support issue is raised, either by customers directly, or indirectly by our support technicians, the customer will receive a confirmation e-mail summarising the issue, for example:
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/Your-Support-Ticket.png" alt="A computer screen with an arrow pointing to the edit support issue button."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         Clicking on the "Your Support Ticket" button will open your browser, log you in, and show you the full history of the support issue. This will save you time.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          If one of our technicians requests a remote assistance session to allow her to view your screen, you will receive an e-mail with a link. 1 - Click this link to open your browser, 2 - When you get a prompt to install the screen sharing app, click Yes, 3 - the chat window will popup:
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/remote-assistance.png" alt="A screenshot of a computer screen with a few windows open."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         If the support technician makes a request to share your screen, please click the OK button at the prompt:
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/share-prompt.png" alt="A screen shot of a window that says &amp;quot; you are about to show your screen please close any windows showing confidential information &amp;quot;"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         Once we have completed the remote support session, we will close the app and you will remain in control of your computer.
        &#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/customer-support.jpg" length="99284" type="image/jpeg" />
      <pubDate>Tue, 31 Oct 2017 17:59:21 GMT</pubDate>
      <guid>https://www.trisys.co.uk/support-innovations</guid>
      <g-custom:tags type="string">trisys,remote support,support ticket,remote assistance,technical support</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/customer-support.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/customer-support.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys 2017 Desktop App Latest Features</title>
      <link>https://www.trisys.co.uk/trisys-2017-desktop-app-latest-features</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         We are proud to share with you all of the latest features of our premiere recruiting CRM desktop application.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Please
          &#xD;
    &lt;a href="https://irp-cdn.multiscreensite.com/f3b4d364/files/uploaded/TriSys-2017-Desktop-Application-Latest-Features.pdf" target="_blank"&gt;&#xD;
      
           click here to view the PDF
          &#xD;
    &lt;/a&gt;&#xD;
    
          .
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           Table of Contents
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
           
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Introduction 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Why Software Updates? 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Introducing the New Support Portal 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Check your TriSys version 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            How to Upgrade to TriSys Version 2017 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Customised TriSys V10 and Customised TriSys V8 Deployments 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Is the TriSys Version 2017 User Interface Different from TriSys V10? 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Login Screen 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Quick Lookup Area 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Dashboard Tabs 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Consultant Summary Dashboard 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Contact Preview Docking Panel 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Microsoft Outlook Contact Preview Panel 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Add Contact from Outlook 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Add Documents from Outlook to Contact Record 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Office 2016 Theme 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Alternative Contact Record Layout 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Google Maps Integration 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            LinkedIn Integration 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            LinkedIn/Twitter/Facebook docking panel 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            New LinkedIn Contact Import 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            References 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Automatic Outlook Calendar Invite Generation 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            One-Off Template Editing 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Automatic Telephone Calling within TriSys and Outlook 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Quick Longlisting / Shortlisting 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Add to Longlist/Shortlist from Within Contact Record 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Add to Longlist/Shortlist from Within Saved Contact Search 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Faster Boolean Searching &amp;amp; Faster Boolean Query Building 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Add to Longlist/Shortlist from CV Parser 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Automatic Trimming upon CV Parsing 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Import &amp;amp; Parse Candidates from Job Boards 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Automatic Trimming upon CV Parsing 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Colour Themes 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Office 2016 Visual Themes 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Document Expiry Date Tracking 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Search across a Document Library 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Update Existing Record with New CV + Archive Old CV 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Rate Card Auto-Populate 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Quick Cloning of Boolean Search Criteria 
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/dmip/dms3rep/multi/business-people-tech-work-office-laptops.jpg" length="430817" type="image/jpeg" />
      <pubDate>Fri, 22 Sep 2017 17:05:13 GMT</pubDate>
      <guid>https://www.trisys.co.uk/trisys-2017-desktop-app-latest-features</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/dmip/dms3rep/multi/business-people-tech-work-office-laptops.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/dmip/dms3rep/multi/business-people-tech-work-office-laptops.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Training Portal</title>
      <link>https://www.trisys.co.uk/training-portal</link>
      <description>Full range of TriSys training courses for recruiters, administrators and developers are available at support.trisys.co.uk/?TrainingCourses</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Our full range of training courses are available at support.trisys.co.uk/?TrainingCourses
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/support-portal-training-courses.png" alt="A computer screen shows a dashboard with a list of items"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         All our upcoming training courses are listed and are pulled in real-time from our training teams TriSys diary.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The full set of training courses are:
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/training-courses.png" alt="A blurred image of a list of words on a white background."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/training-class-whiteboard.jpg" length="84293" type="image/jpeg" />
      <pubDate>Wed, 30 Aug 2017 17:10:36 GMT</pubDate>
      <guid>https://www.trisys.co.uk/training-portal</guid>
      <g-custom:tags type="string">trisys training,courses,recruiters,administrators,developers</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/training-class-whiteboard.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/training-class-whiteboard.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Everything we do, we do it for you!</title>
      <link>https://www.trisys.co.uk/everything-we-do-we-do-it-for-you</link>
      <description>TriSys Business Software has been supplying technology to the recruitment industry for almost 25 years. We are a private UK business and totally independent - i.e. free from the shackles of any bank debt, business angel investment, venture capital or hedge-fund.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         TriSys Business Software has been supplying technology to the recruitment industry for almost 25 years. We are a private UK business and totally independent - i.e. free from the shackles of any bank debt, business angel investment, venture capital or hedge-fund.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This puts us in a very strong position as a supplier to our customers. These are the reasons why:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            We have no conflict of interest between the wishes of our shareholders or our customers
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            We do not sell or market our products or services to corporates, focussing only on recruitment agencies
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            We always listen to customers first, and only then the technology marketplace, including competitors
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Our tightly knit UK based team of experts speaks your language
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            We are personal and friendly, and always approachable
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            We have a proven track record of leading the field and bringing new technology to market
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Our product portfolio covers front , mid and back office recruitment functions, on-premise and on-demand
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            When industry paradigms change, we always adapt quickly
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Our cloud infrastructure is 'always-on' providing customers with 24x7 availabiity
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            We have over 600 customers worldwide, many who have been with us for twenty years or more
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            We can quickly migrate new customers from competitor systems quickly and accurately
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            We are financially strong and continually invest in our platform, products and services
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          If you have not done business with TriSys, then I'd like to hear from you. You can call me on 01223 77 22 80 or e-mail me at garry@trisys.co.uk.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1522202176988-66273c2fd55f.jpg" length="210032" type="image/jpeg" />
      <pubDate>Mon, 31 Jul 2017 17:15:56 GMT</pubDate>
      <guid>https://www.trisys.co.uk/everything-we-do-we-do-it-for-you</guid>
      <g-custom:tags type="string">trisys,honesty,integrity,software,personal,leaders,600 customers,worldwide</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1522202176988-66273c2fd55f.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1522202176988-66273c2fd55f.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Ten Years Since the iPhone Launch</title>
      <link>https://www.trisys.co.uk/ten-years-since-the-iphone-launch</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Steve Jobs personally announced and demonstrated the Apple iPhone on 29 June 2007 in California.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          It was indeed a game changer, and completely changed the direction of the global mobile technology market, making the iPhone one of the most successful products in the electronics industry. 
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Apple disrupted the then market leaders, such as Blackberry and Microsoft, and redefined the future direction of not only mobile phones, but also the apps, music, entertainment and ultimately tablet market (iPad in 2010).
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The iPhone was truly a revolutionary product, and Apple deserves credit where it's due.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Sadly, Steve Jobs died in 2011, aged 56, and it remains to be seen whether Apple can come up with another revolutionary product. Given the multiple versions of iMac, iPad and iPhone, plus the failure of iWatch, it indicates that they will not any time soon.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Since the launch of iPhone ten years ago, TriSys has achieved the following milestones:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Designed and built an entirely new .Net version of TriSys Recruitment CRM Software
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Migrated its cloud infrastructure away from physical hardware to remote virtual machines using the worlds largest scalable network
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Devised a software development kit (SDK) to allow partner and customer developers to build and customise their own recruiting software
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Released five new desktop CRM versions, the latest being TriSys 2017 which can support 100,000 simultaneous end users
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Designed and built an industrial scale microservices cloud architecture with the deployment of the TriSys Web API
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Augmented the SQL Server database schema and migrated to all subsequent versions
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Designed and built a cross platform generic software toolkit for constructing line of business web browser and mobile applications
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Built the Apex Recruitment CRM app using this toolkit and the Web API
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Deployed the Recruiting CRM Mobile app into the Apple and Google Play stores
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Designed and built a modern Web Jobs portal for recruitment agencies to display vacancies and capture applicants
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Launched the worlds first recruiter technology television channel
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Increased the number of software developers working for TriSys ten-fold 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Fully integrated with the most popular cloud services
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Maintained compatibility with all versions of operating systems, browsers, hardware and third party services
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Tightly integrated with major recruiting technology suppliers
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Devised and launched an industry agnostic cloud virtual desktop: WebPC
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Built Chrome specific recruiting apps and extension for LinkedIn
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Ported the original COM-Add-In to work as an Office Add-In for Outlook, Word and Excel
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Grown our consultancy business to include sophisticated front to back business processes to support complex workflows
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Trained thousands of recruiters worldwide
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Wrote, produced and recorded an on-line video training series for Apex
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Adopted and integrated advanced remote desktop technology to greatly enhance our support capabilities
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Built and launched a new support portal with centralised administration for customers including financials, invoicing and orders
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Grown its customer base five-fold
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We are very proud of the achievements of both ourselves and our loyal customers over these last ten years, and we thank you for your commitment to TriSys and our products and services.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1458862768540-8b091824fe2d.jpg" length="466597" type="image/jpeg" />
      <pubDate>Fri, 30 Jun 2017 17:19:26 GMT</pubDate>
      <guid>https://www.trisys.co.uk/ten-years-since-the-iphone-launch</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1458862768540-8b091824fe2d.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1458862768540-8b091824fe2d.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys Mobile 2017</title>
      <link>https://www.trisys.co.uk/trisys-mobile-2017</link>
      <description>Launch of the latest version of our mobile recruiting app for both phones and tablets. TriSys Mobile is available from either Apple for your iPhone or iPad, or from Google Play for your Android phone or tablet.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         This month sees the launch of the latest version of our mobile recruiting app for both phones and tablets:
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/iPad-JustinBieber.png" alt="A tablet with a purple screen and a picture of a man on it."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         We have produced a 3-minute YouTube video which shows the main product features of this app.
        &#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys Mobile is available from either Apple for your iPhone or iPad, or from Google Play for your Android phone or tablet:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;a href="/mobile-apps"&gt;&#xD;
      &lt;b&gt;&#xD;
        
            CLICK HERE
           &#xD;
      &lt;/b&gt;&#xD;
      
           to learn more
          &#xD;
    &lt;/a&gt;&#xD;
    
          .
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          As a recruiter, you can lookup all your existing data in your TriSys database including candidate, client contacts, companies, requirements, placements and tasks.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Unlike previous versions of TriSys Mobile, you can now create, read, update and delete data (CRUD). This is a full functionality recruitment CRM which has a suite of actions for running complex workflow such as sending candidate CV's and generating mail-merged paperwork.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/iPhone-Samsung-Window-Sunny-20170523-blog-edition.png" length="801960" type="image/png" />
      <pubDate>Mon, 22 May 2017 17:27:14 GMT</pubDate>
      <guid>https://www.trisys.co.uk/trisys-mobile-2017</guid>
      <g-custom:tags type="string">trisys mobile,recruiters,recruitment app,recruiting agency,cloud recruitment,tablet,apple,android</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/iPhone-Samsung-Window-Sunny-20170523-blog-edition.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/iPhone-Samsung-Window-Sunny-20170523-blog-edition.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Startup Advice - W52HM</title>
      <link>https://www.trisys.co.uk/startup-advice-w52hm</link>
      <description>TriSys Business Software has been in business since the early 1990's but was itself once  a 'startup'. Over the years, we have helped many startup recruitment agencies, as well as starting new products and services, each one a startup. This article introduces a simple framework of questions to which any startup company or project must answer: W52HM</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         TriSys Business Software has been in business since the early 1990's but was itself once  a 'startup'. Over the years, we have helped many startup recruitment agencies, as well as starting new products and services, each one a startup.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This article introduces a simple framework of questions to which any startup company or project must answer: W52HM:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          What, Why, When, Where, Who + How, How Much/Many
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          You should aim to answer each question:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          What? What is the general concept of this company or product or service i.e. what is it?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Why? Why is there a need in any market for such a product or service?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          When? Is this something that is needed today, next month, next year or in 5 years?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Where? Where will this product/service be designed and built, and where will it be distributed, sold, supported and maintained?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Who? Who will create and enhance the product/service and more importantly who will buy it?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          How? How will this all work? What are your key differentiators to ensure success? Will you be first to market with something new, or better than what exists already?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          How Much/Many? How much will it cost to get to market, and how much will you charge customers. How much money will you need from investors, and how much turnover and profit will you make? Or how many widgets will you manufacture, or how many staff will you need to hire?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          If you are planning to start a recruitment agency, here is the framework for your business plan:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          What: What is your specialisation? Are you targeting a particular industry/sector e.g. finance, insurance, manufacturing, or types of job roles e.g. scientific, or medical or engineering, or particular geography?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Why: Why is there a need or opportunity in this industry sector, or for this type of recruitment agency?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          When: Do you want to start today or will the new emerging market be ripe in 12 months? When do you need to start hiring, and finding office space and equipment?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Where: Where are you going to be based and where will your clients and candidates work and live? Can you find high quality staff where you locate and also find enough top quality clients and candidates in the target geography or market?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Who: Who are your investors, bankers, management team, colleagues. Who will be your clients and type of candidates you can attract?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          How: How will you start, build and grow your recruitment business. How will you win your first customers? How can you attract high quality candidates without a track record? How will you pay contractors and temps weekly if your clients pay on 90 day terms?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          How Much/Many: How many placements do you expect to make in year 1? How much contract/temp margin will you make? How much in permanent fees do you expect? How many recruiters will you need, or how many clients for each recruiter? How many high quality candidates do you need to put forward to interview to secure each placement?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          By answering all of the above questions, you will build your own W52HM oriented business plan and be able to more clearly understand the challenges that await you as an entrepreneur.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Good luck.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1556761175-5973dc0f32e7.jpg" length="362531" type="image/jpeg" />
      <pubDate>Mon, 20 Mar 2017 10:42:38 GMT</pubDate>
      <guid>https://www.trisys.co.uk/startup-advice-w52hm</guid>
      <g-custom:tags type="string">startup,w52hm,advice,concept,idea,what,why,when,where,who,how,how much,how many,recruitment agency,recruiting,recruiter</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1556761175-5973dc0f32e7.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1556761175-5973dc0f32e7.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Outlook Calendar Invites</title>
      <link>https://www.trisys.co.uk/outlook-calendar-invites</link>
      <description>Automated creation of Outlook calendar invites</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         TriSys Desktop has just been updated (release notes) and now includes the automated creation of Outlook calendar invites.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          How it works:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Open one or multiple contacts (yes you can have multiple meeting recipients!)
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Launch the "Meeting" Action
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Fill in the meeting details (location, date, time)
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Choose a meeting body template and add any other notes (such as the meeting agenda)
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Ensure you have set the "Calendar Invite" tickbox under "Meeting Details"
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Run the Action
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Outlook will automatically open the meeting calendar invite, ready to send out
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This is a fantastic functionality which will completely automate the process of scheduling meetings with clients and candidates, helping you focus on key activities rather than administrative work.
          &#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/trisys-meeting-1024.png" alt="A computer screen with a bunch of windows open on it"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1484627147104-f5197bcd6651.jpg" length="178189" type="image/jpeg" />
      <pubDate>Tue, 21 Feb 2017 10:45:51 GMT</pubDate>
      <guid>https://www.trisys.co.uk/outlook-calendar-invites</guid>
      <g-custom:tags type="string">trisys windows app,outlook,calendar invites</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1484627147104-f5197bcd6651.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1484627147104-f5197bcd6651.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Developing Custom Web and Mobile Apps</title>
      <link>https://www.trisys.co.uk/developing-custom-web-and-mobile-apps</link>
      <description>Introducing the TriSys Developer Studio. TriSys has built a platform and associated tools to allow customers, partners and our own staff, to build sophisticated line of business desktop, web and mobile applications, without having to be an expert professional software developer.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         I was inspired to write this blog post from a tweet I read this morning:
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/tweet-vs-code-editor.png" alt="A screenshot of a computer screen that says learning to code is an essential skill in the modern world"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         The numerous developer frameworks and tools available today can be overwhelming for even the most experienced and battle-hardened software developer.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Luckily, TriSys has built a platform and associated tools to allow customers, partners and our own staff, to build sophisticated line of business desktop, web and mobile applications, without having to be an expert professional software developer.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          If you have a developer account with TriSys, you can start programming web and mobile applications today inside your web browser, with no complex and time-consuming installers. Introducing the TriSys Developer Studio:
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/trisys-apex-dev-studio-js.png" alt="A computer screen is open to a web page"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         The developer studio provides access to custom files such as .html, .js, .json, .css and anything else. These files comprise the specific customsations required by the end-user community. The toolbox provides access to code snippets to generate markup, fields or scripting code to access databases, files, controls and much more.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We also have an open source alternative for authoring custom TriSys web and mobile apps: Visual Studio Code:
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/vs-code-for-blog.png" alt="A computer screen with a bunch of code on it"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         TriSys developers are granted secure access to their own custom files and can edit, publish and debug .html, .js, .json, .css files using the very best source code editor from Microsoft.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We have even created extensions to allow developers to easily insert code snippets when building custom apps:
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/vs-code-html-extension.png" alt="A computer screen with a blue t on it"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         TriSys Visual Studio Marketplace Extensions:
         &#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        &lt;a href="https://marketplace.visualstudio.com/items?itemName=TriSys-Business-Software.TriSys-Apex-Javascript-Snippets" target="_blank"&gt;&#xD;
          
             TriSys Apex Javascript Snippets
            &#xD;
        &lt;/a&gt;&#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        &lt;a href="https://marketplace.visualstudio.com/items?itemName=TriSys-Business-Software.TriSys-Apex-HTML-Snippets" target="_blank"&gt;&#xD;
          
             TriSys Apex HTML Snippets
            &#xD;
        &lt;/a&gt;&#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This approach lets designers and developers focus on solving real-world business problems rather than wrestling with complex web frameworks, thousands of libraries and bloated integrated development environments.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1511376777868-611b54f68947.jpg" length="193800" type="image/jpeg" />
      <pubDate>Fri, 17 Feb 2017 10:54:14 GMT</pubDate>
      <guid>https://www.trisys.co.uk/developing-custom-web-and-mobile-apps</guid>
      <g-custom:tags type="string">trisys developer studio,dev studio,html,css,javascript,cloud database,recruitment software,web api,developer,web app,mobile app</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1511376777868-611b54f68947.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1511376777868-611b54f68947.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>New Support Portal</title>
      <link>https://www.trisys.co.uk/new-support-portal</link>
      <description>Our new on-line technical support portal is now available at support.trisys.co.uk. You can login using your e-mail address and your TriSys web password.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Our new on-line technical support portal is now available at
         &#xD;
  &lt;a href="https://support.trisys.co.uk"&gt;&#xD;
    
          support.trisys.co.uk
         &#xD;
  &lt;/a&gt;&#xD;
  
         :
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/new-support-portal-jan-2017.png" alt="A computer screen shows a technical support login page."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         The new support portal is also available from the SUPPORT menu on our home page:
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/accessing-support-from-web.png" alt="A group of people standing next to each other on a trisys website"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         You can login using your e-mail address and your TriSys web password. If necessary, you can reset your password using the "Forgot Password" button on the login form, or using the "Forgotten Password" menu item in the navigation bar on the left hand side.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The following functions are available:
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/support-portal-functions-blog.png" alt="A screenshot of a website showing a list of functions."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         The new support portal is much more responsive and mobile friendly.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Our finance system is fully integrated allowing customers to view and pay invoices directly from the support portal.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/customer-support.jpg" length="99284" type="image/jpeg" />
      <pubDate>Tue, 31 Jan 2017 11:01:19 GMT</pubDate>
      <guid>https://www.trisys.co.uk/new-support-portal</guid>
      <g-custom:tags type="string">trisys support portal,secure login,technical support,portal,recruiters,recruitment crm support</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/customer-support.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/customer-support.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys Desktop Application</title>
      <link>https://www.trisys.co.uk/trisys-desktop-application</link>
      <description>TriSys Desktop CRM application truly delivers on the promise of configurable software</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         The TriSys Desktop CRM application truly delivers on the promise of configurable software.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            The user interface panels are completely adjustable using drag and drop
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            The application logic is 100% adjustable to your business process workflows
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Anything can be changed and security restrictions can be enabled by the system administrator
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          What's even better? The system is designed to work right out of the box, enabling an extremely fast user familiarisation and the highest placement ratios for your teams.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The TriSys CRM application is available for:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Microsoft Windows
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Apple Computers
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Other platforms
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Here is an example of the spectacular layouts which you can achieve in just a couple of seconds simply by dragging user interface panels into your preferred position on screen. Note how the left hand side panel contains a contact summary showing the skills/attributes of a selected contact and then followed by a CV preview which will highlight relevant keywords for your boolean search, and finally the LinkedIn navigator panel, allowing you to display all the information you need to know about a client or candidate (or clientcandidate) in a single screen. 
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/trisyscrmdesktop.png" alt="A computer screen with a trisys logo on it"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1496171367470-9ed9a91ea931.jpg" length="249436" type="image/jpeg" />
      <pubDate>Fri, 27 Jan 2017 11:12:46 GMT</pubDate>
      <guid>https://www.trisys.co.uk/trisys-desktop-application</guid>
      <g-custom:tags type="string">trisys,desktop,crm,configurable software,recruiting software</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1496171367470-9ed9a91ea931.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1496171367470-9ed9a91ea931.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Broadbean / Logicmelon Integration Workflows</title>
      <link>https://www.trisys.co.uk/broadbean-logicmelon-integration-workflows</link>
      <description>With TriSys you are able to immediately post live vacancies to any number of job boards, using Broadbean, Logicmelon, Idibu (offers advanced integration functionality)</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         With TriSys you are able to immediately post live vacancies to any number of job boards, using:
         &#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Broadbean
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Logicmelon
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Idibu (offers advanced integration functionality)
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          All our integrations also allow you to immediately and automatically import any applicants directly into longlists and shortlists, where applicant records are automatically created and ready for recruitment workflows.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/jobboardposting-013b6843.png" alt="A diagram of a job boards and social networks system"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         For recruitment agencies looking to enable a highly integrated job posting and applicant searching experience, TriSys recommends using the Idibu integration, which offers advanced integration with multiple job boards directly from the TriSys CRM applications, also allowing advanced boolean searching of candidates directly from within TriSys CRM for a fully integrated and highly productive experience.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          How to enable job posting:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        &lt;b&gt;&#xD;
          
             Broadbean
            &#xD;
        &lt;/b&gt;&#xD;
        
            : contact Broadbean directly and request a posting account. Once you have these details, add them to your TriSys user options. There is no cost to enable the integration, you only need a Broadbean account.
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        &lt;b&gt;&#xD;
          
             Logicmelon
            &#xD;
        &lt;/b&gt;&#xD;
        
            : contact Broadbean directly and request a posting account. Once you have these details, add them to your TriSys user options. There is no cost to enable the integration, you only need a Logicmelon account.
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        &lt;b&gt;&#xD;
          
             Idibu
            &#xD;
        &lt;/b&gt;&#xD;
        
            : contact Idibu directly and request an overview of the TriSys integration, after which you will be presented with the specifics of enabling your integration. The integration with Idibu requires some work by the TriSys team to ensure the Idibu posting module is fully enabled in your TriSys CRM user interface.
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1568598035424-7070b67317d2.jpg" length="214599" type="image/jpeg" />
      <pubDate>Thu, 26 Jan 2017 11:17:03 GMT</pubDate>
      <guid>https://www.trisys.co.uk/broadbean-logicmelon-integration-workflows</guid>
      <g-custom:tags type="string">Broadbean,Logicmelon,Idibu,trisys,crm,recruiting software</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1568598035424-7070b67317d2.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1568598035424-7070b67317d2.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Amazon Partnership</title>
      <link>https://www.trisys.co.uk/amazon-partnership</link>
      <description>The AWS Cloud operates 42 Availability Zones within 16 geographic Regions around the world, with five more Availability Zones and two more Regions coming online throughout the next year.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         AWS Global Infrastructure
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The AWS Cloud operates 42 Availability Zones within 16 geographic Regions around the world, with five more Availability Zones and two more Regions coming online throughout the next year.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;i&gt;&#xD;
      
           "Using TriSys has allowed our consultants to dramatically increase their performance as a result of instant hardware upgrades which we simply need to request as an on-demand service"
          &#xD;
    &lt;/i&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/amazongartner.png" alt="A gartner advertisement with a map of the world and a cloud."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         Source:
         &#xD;
  &lt;a href="https://aws.amazon.com/about-aws/global-infrastructure/" target="_blank"&gt;&#xD;
    
          https://aws.amazon.com/about-aws/global-infrastructure/
         &#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1523474253046-8cd2748b5fd2.jpg" length="66140" type="image/jpeg" />
      <pubDate>Tue, 17 Jan 2017 11:21:39 GMT</pubDate>
      <guid>https://www.trisys.co.uk/amazon-partnership</guid>
      <g-custom:tags type="string">aws,cloud,trisys,regions,availability zones,recruitment platform</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1523474253046-8cd2748b5fd2.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1523474253046-8cd2748b5fd2.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Social Media Marketing Automation</title>
      <link>https://www.trisys.co.uk/social-media-marketing-automation</link>
      <description>Recruitment agencies can now automate the broadcast of social media messaging to twitter, facebook and linkedin at scheduled times of the day</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Recruitment agencies can now automate the broadcast of social media messaging to twitter, facebook and linkedin at scheduled times of the day:
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/social-media-marketing.png" alt="A diagram showing the benefits of using facebook and linkedin"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         When coupled with TriSys Web Jobs, you can regularly broadcast your live jobs to the world at all hours of the day.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Here is an example of a series of automated scheduled job broadcasts via twitter:
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/social-posting-opus-blog.png" alt="A screenshot of a web page with a pink header"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         It is not just jobs which can be automated. TriSys uses the same technology to promote its brand globally in order to reach all timezones over a defined period of time:
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/social-posting-trisys-blog.png" alt="A screenshot of a facebook page with a bunch of pictures on it"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         This service is available to all TriSys customers from 2nd January 2017.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          To sign up for this service, please contact
          &#xD;
    &lt;a href="mailto:sales@trisys.co.uk"&gt;&#xD;
      
           sales@trisys.co.uk
          &#xD;
    &lt;/a&gt;&#xD;
    
          .
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1432888622747-4eb9a8efeb07.jpg" length="341644" type="image/jpeg" />
      <pubDate>Thu, 22 Dec 2016 11:27:32 GMT</pubDate>
      <guid>https://www.trisys.co.uk/social-media-marketing-automation</guid>
      <g-custom:tags type="string">social media,automation,recruiting,recruitment,post jobs,trisys,cloud crm</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1432888622747-4eb9a8efeb07.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1432888622747-4eb9a8efeb07.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Microsoft is the new Apple</title>
      <link>https://www.trisys.co.uk/microsoft-is-the-new-apple</link>
      <description>What a very interesting week it has been in the world of multi-billion dollar technology companies with both Microsoft and Apple making HARDWARE product announcements.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         What a very interesting week it has been in the world of multi-billion dollar technology companies with both Microsoft and Apple making HARDWARE product announcements.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We expect Apple to tweak and upgrade their numerous laptop, iMac, iPad and iPhone lines, but for Microsoft to announce two very expensive devices, and peripherals, and software, on the same day, is a very clear statement that they are attacking Apple's graphics &amp;amp; media oriented customers directly.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Microsoft has historically done keyboards and mice, but with upgrades to its surface line and a brand new top-end integrated desktop PC, they are drawing new battle lines. Their reasons to head in this direction is I suspect because they have failed in their phone efforts, with the acquisition of Nokia now seen as a waste of billions of dollars, and the planned new Google devices such as the Pixel phone and the rumoured Google PC/Tablet which will run their new (Chromium+Android) Andromeda operating system.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Microsoft is now backing the Windows 10 + Azure + Office combination plus the latest efforts to clean up the Windows Store, as a firm software foundation for the new devices.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Gartner this week has also estimated that Microsoft will return to profit in 2018, after the re-structuring brought about by Satya Nadella who replaced Steve Ballmer as CEO.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Yesterday Apple announced its own MacBook Pro upgrade with the new Touch Bar, but market response has been luke-warm, as it was with the iWatch, and subsequently analysts are worried that Tim Cook is unable to provide the innovation leadership of Steve Jobs and Microsoft is capitalising on this opportunity.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Interesting times indeed, as Microsoft fans delight in being proud once again, but remember to treat the imposters of triumph and disaster just the same.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/microsoft-squares.jpg" length="68863" type="image/jpeg" />
      <pubDate>Fri, 28 Oct 2016 10:29:44 GMT</pubDate>
      <guid>https://www.trisys.co.uk/microsoft-is-the-new-apple</guid>
      <g-custom:tags type="string">microsoft,apple,hardware</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/microsoft-squares.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/microsoft-squares.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>RSS Job Feeds</title>
      <link>https://www.trisys.co.uk/rss-job-feeds</link>
      <description>RSS (Really Simple Syndication) is an industry standard mechanism allowing recruitment agencies to view and expose all their active requirements to job seekers via the world wide web.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         RSS (Really Simple Syndication) is an industry standard mechanism allowing recruitment agencies to view and expose all their active requirements to job seekers via the world wide web. RSS feeds can be indexed by the major search engines and candidates can subscribe to content updates allowing them to get access to your very latest jobs.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys customers can view their jobs by specifiying the hyphenated-space company name in the following URL. For example our test agency is Opus Laboris Recruitment, so the RSS feed is:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;a href="https://api.trisys.co.uk/rss/LiveVacancies.ashx?CustomerID=opus-laboris-recruitment" target="_blank"&gt;&#xD;
      
           https://api.trisys.co.uk/rss/LiveVacancies.ashx?CustomerID=opus-laboris-recruitment
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/rss-opus-firefox.png" alt="A screenshot of a web page that says jobs live vacancies for opas laboria recruitment"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         The hyperlinks in the RSS feed point to the web jobs page which pulls the live job from the customer database:
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/apex-webjobs.png" alt="A computer screen shows a resume with a picture of a person on it."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         Candidates can view the job, send it to a friend, or apply to the job via registration.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;a href="/website-builder"&gt;&#xD;
      
           TriSys Web Jobs
          &#xD;
    &lt;/a&gt;&#xD;
    
          is an easy way to provide a high quality candidate engagement platform, which can be easily integrated into your existing web site.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Your web site designers have three choices to put your live vacancies on your web site:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ol&gt;&#xD;
      &lt;li&gt;&#xD;
        
             Use the RSS feed to pull data into a simple display widget
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
             Embed TriSys Web Jobs in an iFrame
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
             Program content delivery using our fully featured Web API: https://api.trisys.co.uk
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ol&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
           E-Mail us at
          &#xD;
    &lt;a href="mailto:sales@trisys.co.uk"&gt;&#xD;
      
           sales@trisys.co.uk
          &#xD;
    &lt;/a&gt;&#xD;
    
          to get your live jobs filled quickly.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/rss.jpg" length="78163" type="image/jpeg" />
      <pubDate>Fri, 30 Sep 2016 10:35:44 GMT</pubDate>
      <guid>https://www.trisys.co.uk/rss-job-feeds</guid>
      <g-custom:tags type="string">trisys,rss,jobs,crm,candidates,clients,web jobs,apex,platformix,site builder,website</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/rss.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/rss.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Development Studio</title>
      <link>https://www.trisys.co.uk/development-studio</link>
      <description>We have introduced the development studio to TriSys Apex to allow web designers and developers to extend the functionality of TriSys to build their own business functionality which can be delivered to recruiters, clients and candidates.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         We have introduced the development studio to TriSys Apex to allow web designers and developers to extend the functionality of TriSys to build their own business functionality which can be delivered to recruiters, clients and candidates.
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/apex-devstudio-700.png" alt="A computer screen with a bunch of text on it"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         Developers can create Javascript code to write business logic and HTML markup to design the graphical user interface for data capture and presentation.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Custom markup and business logic can be designed, tested and published to any device:
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/apex-publish.png" alt="A diagram of a system with a tablet and a phone"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         Existing functionality and data entry forms can be inherited and overriden allowing web developers to have their custom forms loaded at run-time. The custom forms run inside the Apex framework and can take full advantage of the entire cloud architecture to deliver global software as a service to both recruiters using the Apex application, as well as clients and candidates utilising TriSys Web Jobs:
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/apex-pyramid.png" alt="A diagram showing the layers of a windows operating system"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         The toolbox provides pre-built custom markup and code to quickly build and extend the existing application:
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/apex-devstudio-process.png" alt="Developers manage their own custom code and markup in js and html files respectively"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/apex-devstudio-process-points.png" alt="A screenshot of a program that says custom files can be added imported copied or deleted"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         In summary:
         &#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            TriSys Apex is a cross-platform cloud-based business computing platform encompassing a core CRM.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Apex runs on any operating system on any device and is available in all popular app stores.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            The AWS back-end has unlimited scalability and can store both SQL data and any type of file.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Apex has been built from the ground up to be a cloud based IDE facilitating unlimited customisability and integration with any third party web service. 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            It has been customised specifically for recruitment agencies who can extend their specific CRM using the cloud IDE.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Launched in June 2015, the Apex apps are stable and are used by thousands of recruiters, clients and candidates.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            We are opening up Apex to developers who wish to build interesting line of business applications using the TriSys platform.
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1551710029-607e06bd45ff.jpg" length="168958" type="image/jpeg" />
      <pubDate>Mon, 29 Aug 2016 10:43:13 GMT</pubDate>
      <guid>https://www.trisys.co.uk/development-studio</guid>
      <g-custom:tags type="string">trisys,development studio,dev studio,developer studio,html,css,javascript,software design,web apps,mobile apps,business apps,recruiting apps</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1551710029-607e06bd45ff.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1551710029-607e06bd45ff.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Apex Post-MVP</title>
      <link>https://www.trisys.co.uk/apex-post-mvp</link>
      <description>Our web browser recruitment CRM application Apex, has now exceeded the minimum viable product (MVP) phase of its development.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Our web browser recruitment CRM application Apex, has now exceeded the minimum viable product (MVP) phase of its development.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Timesheets have now been added to Apex, further extending its reach into the mid-office of recruitment agencies.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/apex-timesheet-blog.png" alt="A screenshot of a computer screen showing a dashboard."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         The timesheet framework has existed in desktop TriSys for many years, but increasing demand for Apex has driven the inclusion of this functionality into our web browser, tablet and mobile phone application.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Existing customers who have contract or temporary placements can maintain timesheets for multiple pay and charge rates from both the Apex application for recruitment consultants, and also allow self-service access to timesheets for both clients and candidates using
          &#xD;
    &lt;a href="https://apex.trisys.co.uk/?CandidateVacancySearch/0/opus-laboris-recruitment" target="_blank"&gt;&#xD;
      
           TriSys Web Jobs
          &#xD;
    &lt;/a&gt;&#xD;
    
          .
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We have thus joined up the timesheet capabilities for recruiters and their clients and candidates to provide a truly end to end mid-office system.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/apex-landing.png" length="272764" type="image/png" />
      <pubDate>Tue, 26 Jul 2016 10:52:50 GMT</pubDate>
      <guid>https://www.trisys.co.uk/apex-post-mvp</guid>
      <g-custom:tags type="string">trisys,apex,crm,recruitment software,mvp,development,timesheets</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/apex-landing.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/apex-landing.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Enterprise/Established vs Apex/Starter</title>
      <link>https://www.trisys.co.uk/enterprise-established-vs-apex-starter</link>
      <description>'TriSys Everywhere' is a strategy which we embarked upon a couple of years ago to allow our customers to access and manipulate their recruitment business data wherever they were in the world.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         'TriSys Everywhere' is a strategy which we embarked upon a couple of years ago to allow our customers to access and manipulate their recruitment business data wherever they were in the world.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Our original recruitment software was conceived in the early 1990's to run on departmental windows computers including PC's and more recently servers. As the internet, broadband communications, cloud computing and mobile evolved over time, and more and more non-windows devices and operating systems became popular, it was therefore imperative that TriSys too evolved to ensure that our customers were able to procure their phone or tablet or web browser of choice, and still get access to their recruitment database, from anywhere.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Making TriSys work everywhere however, whilst ensuring our existing customers were not inconvenienced in any way, guided us in the direction of designing and building a completely new cross-platform client-side software application called 'Apex' which was released in 2015. The Apex application was designed to work with our existing cloud infrastructure using our new Web API which gives our customers full CRUD (create, read, update, delete) functionality using any of our TriSys products.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          As Apex has matured, both new and existing customers have been attracted to its simplicity and convenience of access from any computer, tablet, phone or web browser.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          As a result, this blog post is intended to summarise the important differences between our legacy enterprise windows desktop application ideally suited to established or sophisticated recruitment agencies, and our newer Apex cross-platform application ideally suited to startup recruitment agencies.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/enterprise+versus+starter+apex.png" alt="A blue and white table with a list of features"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1470075801209-17f9ec0cada6.jpg" length="796615" type="image/jpeg" />
      <pubDate>Tue, 10 May 2016 10:56:52 GMT</pubDate>
      <guid>https://www.trisys.co.uk/enterprise-established-vs-apex-starter</guid>
      <g-custom:tags type="string">TriSys Everywhere,cloud enablement,cloud crm,cloud database,recruiting technology,enterprise software,erp,starter edition</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1470075801209-17f9ec0cada6.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1470075801209-17f9ec0cada6.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Windows Store App</title>
      <link>https://www.trisys.co.uk/windows-store-app</link>
      <description>TriSys Apex Recruitment CRM is now available in the Microsoft Windows Store.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         TriSys Apex Recruitment CRM is now available in the Microsoft Windows Store.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Apex is designed for startup recruitment agencies, but can also be used by established agencies to access all of your recruitment information from any device.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          You can view the Windows Store listing by
          &#xD;
    &lt;a href="https://www.microsoft.com/en-us/store/apps/trisys-apex-recruitment-crm/9nblggh4n72f" target="_blank"&gt;&#xD;
      
           clicking here
          &#xD;
    &lt;/a&gt;&#xD;
    
          .
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/apex-store-600.png" alt="A screenshot of a microsoft website showing a recruitment software called trisys apex recruitment crm."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         We have also published a simple 'how-to'
         &#xD;
  &lt;a href="https://www.youtube.com/watch?v=maNCgrPzWlc" target="_blank"&gt;&#xD;
    
          video on YouTube
         &#xD;
  &lt;/a&gt;&#xD;
  
         to explain how to install this on your windows device:
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/apex-youtube-600.png" alt="A computer screen is open to a youtube video."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         To watch an overview of
         &#xD;
  &lt;a href="/apex-cloud-suite"&gt;&#xD;
    
          Apex
         &#xD;
  &lt;/a&gt;&#xD;
  
         , and the problems it solves, please watch
         &#xD;
  &lt;a href="https://www.youtube.com/watch?v=aBcaokqf7TA" target="_blank"&gt;&#xD;
    
          this YouTube video
         &#xD;
  &lt;/a&gt;&#xD;
  
         .
        &#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1556740738-b6a63e27c4df.jpg" length="239261" type="image/jpeg" />
      <pubDate>Fri, 29 Apr 2016 11:08:55 GMT</pubDate>
      <guid>https://www.trisys.co.uk/windows-store-app</guid>
      <g-custom:tags type="string">trisysapex,windows store,recruitment crm,mobile app,desktop app,windows app</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1556740738-b6a63e27c4df.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1556740738-b6a63e27c4df.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Apex on Android and iOS</title>
      <link>https://www.trisys.co.uk/apex-on-android-and-ios</link>
      <description>TriSys Apex Recruitment CRM is available for all mobile devices running both Android and iOS.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         TriSys
         &#xD;
  &lt;a href="/apex-cloud-suite"&gt;&#xD;
    
          Apex
         &#xD;
  &lt;/a&gt;&#xD;
  
         Recruitment CRM is available for all mobile devices running both Android and iOS. As well as the iPhone and iPad, Apex can now be installed on over 10,000 Android phones, ensuring that TriSys customers can get full functionality recruitment database access from anywhere in the world.
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/Mobile-Phones-Hand-Cambridge-x600.png" alt="A person is holding two cell phones in their hands"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         These apps are available in both iTunes, the Apple App Store and the Google Play Store:
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/apex-ios-android.png" alt="A screenshot of a google play store app"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         If you have an Apple iPhone or iPad, then please
         &#xD;
  &lt;a href="https://itunes.apple.com/us/app/trisys-apex-recruitment-crm/id1105581996?mt=8" target="_blank"&gt;&#xD;
    
          click here
         &#xD;
  &lt;/a&gt;&#xD;
  
         .
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          If you have an Android phone or tablet, then please
          &#xD;
    &lt;a href="https://play.google.com/store/apps/details?id=com.developer.trisys&amp;amp;hl=en" target="_blank"&gt;&#xD;
      
           click here
          &#xD;
    &lt;/a&gt;&#xD;
    
          .
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          To watch an overview of
          &#xD;
    &lt;a href="/apex-cloud-suite"&gt;&#xD;
      
           Apex
          &#xD;
    &lt;/a&gt;&#xD;
    
          , and the problems it solves, please watch
          &#xD;
    &lt;a href="https://www.youtube.com/watch?v=aBcaokqf7TA" target="_blank"&gt;&#xD;
      
           this YouTube video
          &#xD;
    &lt;/a&gt;&#xD;
    
          .
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1490012991172-69c0052d029c.jpg" length="220696" type="image/jpeg" />
      <pubDate>Fri, 29 Apr 2016 11:03:38 GMT</pubDate>
      <guid>https://www.trisys.co.uk/apex-on-android-and-ios</guid>
      <g-custom:tags type="string">trisys,crm,mobile,android,ios,phone,tablet,recruiting app,recruitment agency,trisys cloud,cloud database</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1490012991172-69c0052d029c.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1490012991172-69c0052d029c.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Chrome Desktop App</title>
      <link>https://www.trisys.co.uk/chrome-desktop-app</link>
      <description>The 'TriSys Everywhere' initiative is gathering pace with the latest addition to the Google Chrome Store of "TriSys Apex Recruitment CRM".</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         The 'TriSys Everywhere' initiative is gathering pace with the latest addition to the Google Chrome Store of "TriSys
         &#xD;
  &lt;a href="/apex-cloud-suite"&gt;&#xD;
    
          Apex
         &#xD;
  &lt;/a&gt;&#xD;
  
         Recruitment CRM".
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This application can be installed into the Chrome browser and made available in the apps page:
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/chrome-apps-apex-600.png" alt="A computer screen with a bunch of icons on it."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         Right click on TriSys to create a desktop shortcut, and copy this into your startup folder to automatically start TriSys when you start your computer.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys starts as a completely separate application on your operating system which can be repositioned, resized and maximised to provide a fast and responsive native application experience:
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/apex-chrome-app-newsletter.png" alt="A screenshot of a computer screen with a woman on it."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         Existing on-demand/cloud customers may use their existing TriSys credentials to login.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Existing on-premise customers will require the provision of their own specific
          &#xD;
    &lt;a href="https://api.trisys.co.uk/" target="_blank"&gt;&#xD;
      
           TriSys Web API
          &#xD;
    &lt;/a&gt;&#xD;
    
          key.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          New customers may register for the
          &#xD;
    &lt;a href="https://apex.trisys.co.uk/#freetrial" target="_blank"&gt;&#xD;
      
           free trial
          &#xD;
    &lt;/a&gt;&#xD;
    
          and subsequently subscribe to a
          &#xD;
    &lt;a href="/apex-cloud-suite"&gt;&#xD;
      
           provisioned service
          &#xD;
    &lt;/a&gt;&#xD;
    
          .
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          If you require access, or would like to learn more, please contact our sales department.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1520333789090-1afc82db536a.jpg" length="170634" type="image/jpeg" />
      <pubDate>Thu, 31 Mar 2016 12:00:57 GMT</pubDate>
      <guid>https://www.trisys.co.uk/chrome-desktop-app</guid>
      <g-custom:tags type="string">google,chrome,store,trisys,crm,apex,trisys everywhere,cloud crm,browser app,web browser</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1520333789090-1afc82db536a.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1520333789090-1afc82db536a.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys Web Jobs in Parallax</title>
      <link>https://www.trisys.co.uk/trisys-web-jobs-in-parallax</link>
      <description>TriSys Web Jobs can be easily hosted inside any web site with minimal work and cost. Recruitment agencies do not need to spend money on web designers to re-invent the wheel by building yet another content management system (CMS) for their web site.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         TriSys Web Jobs can be easily hosted inside any web site with minimal work and cost. Recruitment agencies do not need to spend money on web designers to re-invent the wheel by building yet another content management system (CMS) for their web site.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys Web Jobs is your real-time jobs portal designed specifically for your candidates to search and apply to your jobs.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          To demonstrate how well this works, please visit the following web sites:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          http://webjobs.trisys.co.uk
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/webjobs-nl-jan-2016.1.png" alt="A screenshot of a job / vacancies website."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         http://www.trisys.co.uk/development/test/pluton
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/webjobs-nl-jan-2016.2.png" alt="A web page that says take our word for it"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         http://www.trisys.co.uk/development/test/squadfree/
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/webjobs-nl-jan-2016.3.png" alt="A screenshot of a website that says `` get in touch ''."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         As you can see, whatever your web site design, TriSys Web Jobs will easily fit into it, providing your candidates and consultants with power and convenience.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Please contact your account manager, sales or technical support to get started.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/webjobs-nl-jan-2016.2.png" length="46243" type="image/png" />
      <pubDate>Fri, 29 Jan 2016 13:08:13 GMT</pubDate>
      <guid>https://www.trisys.co.uk/trisys-web-jobs-in-parallax</guid>
      <g-custom:tags type="string">trisys,web jobs,cms,jobs,widgets,search,portal,recruitment,recruiting</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/webjobs-nl-jan-2016.2.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/webjobs-nl-jan-2016.2.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Merry Christmas 2015 and Happy New Year 2016</title>
      <link>https://www.trisys.co.uk/merry-christmas-2015-and-happy-new-year-2016</link>
      <description>We would like to thank you once again for your trust and congratulate you on your successes in 2015. We would also like to share some of our plans with you, letting you know in advance what’s happening in 2016 and how this will benefit your business.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Merry Christmas to all our customers, partners and suppliers.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We would like to thank you once again for your trust and congratulate you on your successes in 2015. We would also like to share some of our plans with you, letting you know in advance what’s happening in 2016 and how this will benefit your business. 
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We are happy to pre-announce the following technical updates to the TriSys CRM Platform:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Release of TriSys 2016
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Adoption of Apex 
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Web Jobs 2016 and Wordpress Site Designer
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            New Outlook CRM integration, fully compatible with MS Office &amp;amp; Office 365
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Enhanced searching and a brand new cross-entity searching system
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Google Chrome integration with TriSys CRM / Web CRM
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Updated Mobile App for Google Android, Apple iOS and Windows Phone
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Candidate self-service web portal &amp;amp; real time job alerts
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Updated free CV parsing subsystem
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Updated Web integration API
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Enhanced social integration
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys CRM is a seriously powerful CRM fully developed and maintained in the UK by a team of highly specialised consultants who are always here to help you. You are the reason for our success and we are deeply committed to helping you succeed and together stay ahead of the competition by constantly innovating, better and faster. 
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We look forward to continue working with you and would like to take this opportunity to express our sincere THANK YOU.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Merry Christmas 2015 and a Happy New Year 2016!
          &#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1512911122913-094837b6fd2f.jpg" length="460312" type="image/jpeg" />
      <pubDate>Wed, 23 Dec 2015 13:11:04 GMT</pubDate>
      <guid>https://www.trisys.co.uk/merry-christmas-2015-and-happy-new-year-2016</guid>
      <g-custom:tags type="string">merry christmas,trisys,customers,2015,2016,apex,crm,erp,cv parsing,web jobs,web api</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1512911122913-094837b6fd2f.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1512911122913-094837b6fd2f.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys Web Jobs 2016</title>
      <link>https://www.trisys.co.uk/trisys-web-jobs-2016</link>
      <description>The latest TriSys Web Jobs is currently in development and will be released on 1st January 2016.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         The latest TriSys Web Jobs is currently in development and will be released on 1st January 2016.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys Web Jobs is a candidate search web browser and mobile/tablet portal allowing TriSys live/active requirements to be searchable as vacancies by candidates. Candidates can apply and favourite vacancies, with full login/registration/forgotten password functionality, all driven by automated e-mail templates. Registered candidates are automatically added to the requirement shortlist after applying to vacancies, allowing the full workflow processes of TriSys to be used.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Agencies can advertise each vacancy as a URL, or embed TriSys Web Jobs as an iframe in their existing web sites.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/webjobs-vacancy-search.png" alt="A screenshot of a web page showing a list of jobs."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         The demonstration site is at
         &#xD;
  &lt;a href="https://opus-laboris-recruitment.trisys.co.uk"&gt;&#xD;
    
          opus-laboris-recruitment.trisys.co.uk
         &#xD;
  &lt;/a&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Contact details are pulled out of your TriSys database including photo, e-mail and both work and mobile telephone numbers.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/webjobs-261115.700.png" alt="A screenshot of a website with a picture of a person on it."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         Please
         &#xD;
  &lt;a href="/contactold"&gt;&#xD;
    
          contact us
         &#xD;
  &lt;/a&gt;&#xD;
  
         to learn more and to connect both your cloud or on-premise TriSys databases to this system.
        &#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1482449609509-eae2a7ea42b7.jpg" length="195549" type="image/jpeg" />
      <pubDate>Mon, 30 Nov 2015 13:17:21 GMT</pubDate>
      <guid>https://www.trisys.co.uk/trisys-web-jobs-2016</guid>
      <g-custom:tags type="string">trisys web jobs,vacancies,crm,cloud database</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1482449609509-eae2a7ea42b7.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1482449609509-eae2a7ea42b7.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys Cloud Infrastructure Upgrade</title>
      <link>https://www.trisys.co.uk/trisys-cloud-infrastructure-upgrade</link>
      <description>As a direct result of the success of our customers' operations, the TriSys cloud infrastructure has grown year on year.</description>
      <content:encoded>&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/trisys-cloud-desktop-for-recruitment-agencies.png" alt="A computer screen with a trisys logo on it"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         As a direct result of the success of our customers' operations, the TriSys cloud infrastructure has grown year on year. By utilising the TriSys cloud, our customers benefit from a complete, always-on recruitment system available in the cloud, accessible anywhere, anytime and on any device. This is what's commonly known as SaaS or Software-as-a-Service.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          During the month of October, a significant infrastructure upgrade has been completed by our cloud infrastructure team, as a proactive approach to the continuous growth of our client’s requirements. This upgrade also lays the foundation for the introduction of the newest Microsoft Office package, therefore allowing even higher levels of productivity by using the latest Microsoft technologies.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Due to the modular nature of the TriSys cloud service, upgrading the cloud desktop infrastructure has had zero impact on our customers' businesses: all services have remained fully operational, ensuring the highest levels of uptime in the industry. This modular nature also makes it possible to quickly resolve any issues for any users, as well as upgrading our clients to the latest edition of TriSys, quickly and free of charge upon request.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The TriSys cloud infrastructure is a global-scale array of virtualised servers running 24x7x365 offering the best levels of security and availability for recruitment agencies choosing to completely eliminate the cost of local IT support as well as hardware and software licensing costs. With TriSys cloud desktops, there is no need to worry about backing up your data either, as this is a fully managed service.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys Customers are welcome to
          &#xD;
    &lt;a href="/contactold"&gt;&#xD;
      
           get in touch
          &#xD;
    &lt;/a&gt;&#xD;
    
          and request further information about the newest version of TriSys (version 2015).
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Prospective TriSys Customers are welcome to to
          &#xD;
    &lt;a href="/contactold"&gt;&#xD;
      
           get in touch and request
          &#xD;
    &lt;/a&gt;&#xD;
    
          a dedicated TriSys demonstration.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1513002749550-c59d786b8e6c.jpg" length="394118" type="image/jpeg" />
      <pubDate>Fri, 30 Oct 2015 13:20:51 GMT</pubDate>
      <guid>https://www.trisys.co.uk/trisys-cloud-infrastructure-upgrade</guid>
      <g-custom:tags type="string">trisys cloud,remote desktop,recruitment system,crm software,hosted database</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1513002749550-c59d786b8e6c.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1513002749550-c59d786b8e6c.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Building Recruitment Agency Websites with TriSys Web API</title>
      <link>https://www.trisys.co.uk/building-recruitment-agency-websites-with-trisys-web-api</link>
      <description>The TriSys Web API is the solution to the problem of integrating recruitment agency websites to the CRM database.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Whilst TriSys for Websites provides a highly functional out of the box recruitment agency web site, many recruitment agencies prefer to appoint and work with a professional web/app designer and build their own web site/mobile app. This works well for static, or brochure, sites, however at some point, the web designer will need to provide interactivity with the recruitment agency CRM.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Such interactions could be a vacancy search of live jobs, or a contact us page, or candidate registration. In this scenario, delivering the web request as an (yet another) e-mail to the recruiter is not acceptable as it creates more work for the recruiter and results in poor quality data and a sub-standard candidate experience.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The TriSys Web API is the solution to this problem. It provides an easy to use, cross platform, programmatic interface allowing web designers to pull and push live recruiting data from/to the back end TriSys recruitment CRM database. The API exposes vacancies which can be searched for, favourited, applied to and also candidate registration methods allowing candidate records to be created directly inside the TriSys database with full template driven automated e-mails and task alarms for recruitment consultants.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Web designers are able to make use of the API for data-oriented transactions only. They are then free to focus upon the usability of the web site or mobile app.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          To make integration easy, we have created four very useful things:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ol&gt;&#xD;
      &lt;li&gt;&#xD;
        
            A fully documented Web API.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            A quick-start guide to live code samples editable and testable on jsfiddle.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            A step by step guide web site at jobs.trisys.co.uk which demonstrates each step to integrate the Web API.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            An open source Github project containing all of the code from the step by step guide.
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ol&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Web designers are invited to take this for a spin to build compelling recruitment agency web sites for their clients.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The TriSys Web API can be used to build any type of sophisticated recruitment oriented systems such as:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Agency Web sites
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Corporate Jobs Portals
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Applicant Tracking Systems (ATS)
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Job Boards
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Customer Relationship Management (CRM)
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Mobile Apps
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Human Resources
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We are excited to see what you can build.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/opuslaboris-live-vacancies.png" length="47960" type="image/png" />
      <pubDate>Mon, 07 Sep 2015 17:31:20 GMT</pubDate>
      <guid>https://www.trisys.co.uk/building-recruitment-agency-websites-with-trisys-web-api</guid>
      <g-custom:tags type="string">trisys web api,crm,recruitment,website,agency</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/opuslaboris-live-vacancies.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/opuslaboris-live-vacancies.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>The TriSys Cloud</title>
      <link>https://www.trisys.co.uk/the-trisys-cloud</link>
      <description>I wrote an article published in Recruitment International in 2008 which forecast the state of cloud computing as we know it today. TriSys has had its own cloud infrastructure since 2002 when our first ASP (application service provider) customers took advantage of a sophisticated remote recruitment desktop without having to install anything on their PC or purchase expensive servers.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         As a recruitment agency, you have probably heard the term 'cloud' from technology people or indeed recruitment CRM salesmen?
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          I wrote an article
          &#xD;
    &lt;b&gt;&#xD;
      &lt;a href="https://irp-cdn.multiscreensite.com/f3b4d364/files/uploaded/April%202008%20Recruitment%20International%20Article.pdf" target="_blank"&gt;&#xD;
        
            published in Recruitment International in 2008
           &#xD;
      &lt;/a&gt;&#xD;
    &lt;/b&gt;&#xD;
    
          which pretty much forecast the state of cloud computing as we know it today.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The cloud in 2015 is an array of millions of server computers working together in a large data centre supplying data and processing to subscribers all over the world. The major business cloud suppliers are Amazon, Google and Microsoft, and they each have data centres here in Europe - their Dublin data centres serve the United Kingdom and Ireland. These vendors between them have invested literally hundreds of billions of dollars in building global cloud infrastructures supplying businesses offering the most popular web and mobile services such as entertainment, finance, logistics, manufacturing and of course recruitment.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys has had its own cloud infrastructure since 2002 when our first ASP (application service provider) customers took advantage of a sophisticated remote recruitment desktop without having to install anything on their PC or purchase expensive servers.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Thirteen years later, the TriSys cloud has almost unlimited power and scalability, effectively scaling up and down during the day as our customers login and logout. Each customer has their own dedicated set of cloud resources, which they only pay for what they use through a monthly subscription. This is true on-demand cloud computing.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys customers benefit from a powerful, highly functional and low cost recruiting platform which they can access 24x7 from anywhere in the world. Our support team provide world-class help to recruiters everywhere, and you can be sure that our account management and business analysis teams deliver highly bespoke and competitive edge to your recruitment busines.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          As a recruitment agency, you can use our cloud by installing TriSys 2015, or running Apex in your browser/tablet/phone, or using TriSys for Websites to engage with clients and candidates, or program your own applications using our Web API.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          See what recruiters are saying about TriSys, and please contact us where we can discuss how the TriSys cloud can transform your recruitment business.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1443694910004-3567042689f5.jpg" length="305384" type="image/jpeg" />
      <pubDate>Fri, 28 Aug 2015 17:38:16 GMT</pubDate>
      <guid>https://www.trisys.co.uk/the-trisys-cloud</guid>
      <g-custom:tags type="string">trisys cloud,cloud hosted,recruitment cloud,recruitment platform,cloud computing,cloud infrastructure,web api,programmable,sdk</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1443694910004-3567042689f5.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1443694910004-3567042689f5.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>2015 Release Track</title>
      <link>https://www.trisys.co.uk/2015-release-track</link>
      <description>We launched the new version of our desktop recruitment, TriSys 2015, our eleventh version of TriSys recruitment software which maintains our record of bringing a new version to market every two years since our debut at the Recruitment '94 exhibition. TriSys 2015 is completely backwards compatible with version 10.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Today at mid-day, we launched the new version of our desktop recruitment, TriSys 2015. This will be our eleventh version of TriSys recruitment software which maintains our record of bringing a new version to market every two years since our debut at the Recruitment '94 exhibition. TriSys celebrated its 20th year in business last year.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys 2015 is our most powerful software release to date, incorporating a fully 64-bit client-side application which can take advantage of massively multi-processor operating systems with very large memory. It is particularly suited to both public or private terminal server farms serving thousands of concurrent recruiters. TriSys can thus scale and perform in line with the expectations of larger, established recruitment agencies.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys 2015 has also been successfully deployed to the new Windows 10 operating system from Microsoft due in the next few months.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys 2015 will be gradually rolled out to our remote desktop cloud customers over the next few weeks, and existing smart-client customers will be supplied with easy-upgrade instructions during this same time frame.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys 2015 is completely backwards compatible with version 10, allowing customers to run both versions side by side with a fully automated database migration eliminating upgrade costs. TriSys 2015 is effectively a free upgrade for customers with a paid up annual support agreement or those on a monthly hosted plan.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Also launched today, is our new TriSys Apex cloud hosted recruitment system designed specifically for recruiters who wish to use their web browser or mobile device, to access their front-office recruitment database. TriSys Apex is a zero-footprint software application which runs on popular web browsers (Chrome, Safari, Firefox, Internet Explorer) on all operating systems (Windows, Mac OS/x, iOS, Android) which connects to TriSys cloud hosted back-end systems running at Amazon, Google and Microsoft.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys Apex is specifically designed for startup recruitment agencies who wish to progress from manual or spreadsheet style recruiting processes to a more sophisticated and powerful on-line multi-user database accessible from anywhere, at any time. TriSys will manage and back up this database service for a fixed monthly fee of £45 per user. There are no setup costs.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys Apex is available at apex.trisys.co.uk immediately.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/apex-cvar.png" length="72762" type="image/png" />
      <pubDate>Tue, 30 Jun 2015 17:55:54 GMT</pubDate>
      <guid>https://www.trisys.co.uk/2015-release-track</guid>
      <g-custom:tags type="string">trisys 2015,release,recruitment software,recruitment agency software</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/apex-cvar.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/apex-cvar.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>One Month to Go</title>
      <link>https://www.trisys.co.uk/one-month-to-go</link>
      <description>We have been very busy engineering our web and mobile recruitment products and services to complement our existing Windows desktop and internet hosted products and services. We predicted future economics of the mobile web. Here we summarise the progress of project Apex.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         If you have been reading our blogs for the last three years, you will be aware that we have been very busy engineering our web and mobile recruitment products and services to complement our existing Windows desktop and internet hosted products and services. We have used our blog to communicate our progress to customers, and this blog post is a summary of this journey with respect to our forthcoming announcements on 30 June 2015.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We first hinted at things to come in our April 2008 article for Recruitment International entitled 'The Future of Business Computing. Our subsequent Feb 24 2012 blog post entitled 'Exciting Times for Technologists', was followed by our analysis and customer questionnaire blog of 30 March 2012 where we predicted future economics of the mobile web.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We first introduced project Apex in a blog on 13 August 2012 entitled 'Project Apex: Part 1'. This was followed by numerous blogs posts summarising the progress of project Apex:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            16 August 2012: Project Apex: Part 2
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            17 August 2012: Project Apex: Part 3
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            22 August 2012: Project Apex: Part 4
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            29 August 2012: Project Apex: Part 5
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            04 September 2012: Project Apex: Part 6
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            12 September 2012: Project Apex: Part 7
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            18 September 2012: Project Apex: Part 8
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            26 September 2012: Project Apex: Part 9
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            19 October 2012: Project Apex: Part 10
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We announced our plans for Version 10 in 19 December 2012: TriSys 10 Versions and Release Procedures
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The first manifestation of a true internet recruitment product was supported by the 23 March 2013 blog 'Starter Edition is now Smart Client'.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Our second generation mobile recruitment system was previewed on 07 August 2013 'TriSys Mobile: Version 2.0'.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The roadmap for 2014 was announced on 23 December 2013: 'Q4 2013 and beyond'.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Based on customer feedback throughout 2013, we announced a redesign of our web/mobile products on 08 January 2014 'Project Apex in 2014'. This incorporated the new Web API which offers remote secure access to data from any device.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We re-iterated our vision on 16 April 2014 'All Things Web', and announced the new version of TriSys for Websites on 30 June 2014 entitled 'TriSys Web 2014' which utilised our cloud platform, Web API and Apex codebases.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          On 30 January 2015, we announced TriSys 2015, and supplied links to all necessary products and services which are included. This was followed by the 27 February 2015 blog entitled 'Project Apex in 2015' in which we supplied screenshots of the forthcoming products for web and mobile.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          On 31 March 2015, we announced our release schedule for both TriSys 2015 and Apex culminating in the 30 June 2015 release of our new web site, desktop, web and mobile recruitment software products and services.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We are now one month away from the completion of the journey summarised in this blog post.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Thank you to all our customers, partners and staff for your efforts in helping us achieve this very important milestone.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1515045439353-77895ccfec23.jpg" length="223067" type="image/jpeg" />
      <pubDate>Fri, 29 May 2015 18:02:06 GMT</pubDate>
      <guid>https://www.trisys.co.uk/one-month-to-go</guid>
      <g-custom:tags type="string">trisys apex,windows desktop recruitment system,trisys cloud,hosted recruitment technology</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1515045439353-77895ccfec23.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1515045439353-77895ccfec23.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Thoughts on Smart Watches</title>
      <link>https://www.trisys.co.uk/thoughts-on-smart-watches</link>
      <description>Smart watches are pure hype in 2015, and not ready for mass market. I am not an Apple fan Boi. Battery life is going to be a problem, The price is higher than a good rolex. Needs to be tethered to your phone</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Apple introduced their iWatch this month and Apple Luvvies are predicting mass shortages across the world. This is pure hype, don't believe it. We are a technology company and do not know a single person or company who has bought one.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The tech press love the concept of a smart watch and have been writing in general positive things about this. I did pop into the Apple store to take a test drive and it looks and feels nice, but would I buy one? No!
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The reason I would not buy a smart watch from any vendor today is because of these reasons:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The watch is not independent - it needs to be tethered to your phone
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          There is nothing that important in my life that I need constant updates to my wrist watch
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          My fingers are man-size
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          I am not an Apple fan Boi - I prefer open systems, not closed and expensive proprietary tech
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          I already have a watch which I use to tell the time, for other stuff I have other devices
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Battery life is going to be a problem
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The price is higher than a good rolex
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Sorry, but I think that smart watches are not here to stay en-mass and much like the recent demise of Sky 3D TV, is a passing fad I'm afraid.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          If you have bought one, please drop me a line and let me know how you like it?
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/dmip/dms3rep/multi/smart-watch.jpg" length="102705" type="image/jpeg" />
      <pubDate>Thu, 30 Apr 2015 18:06:13 GMT</pubDate>
      <guid>https://www.trisys.co.uk/thoughts-on-smart-watches</guid>
      <g-custom:tags type="string">smart watch,rolex,apple,battery life,tethered to phone</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/dmip/dms3rep/multi/smart-watch.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/dmip/dms3rep/multi/smart-watch.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Onwards and Upwards</title>
      <link>https://www.trisys.co.uk/onwards-and-upwards</link>
      <description>Pre-announcing the formal release of our TriSys Apex and TriSys 2015 products on Tuesday 30th June 2015. TriSys 2015 is the next version of our Windows desktop and smart-client enterprise recruitment CRM (customer relationship management) system. TriSys Apex is a completely new recruitment CRM product designed specifically for recruitment agencies using any type of device such as tablets and phones or desktop or laptop computers where the web browser or installed app is the preferred mechanism of accessing cloud data services.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Our big news this month is that we are pre-announcing the formal release of our TriSys Apex and TriSys 2015 products on Tuesday 30th June 2015.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We have a new landing page designed as an introduction to the new Apex release and this will allow customers to sign-up and register their interest in using the service when it is launched.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/apex-landing.png" alt="A screenshot of the trisys apex recruitment software website."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         In summary, TriSys 2015 is the next version of our Windows desktop and smart-client enterprise recruitment CRM (customer relationship management) system. Our current production version is 10 however from this year onwards, all releases will carry the year as the version number. Full details of this release can be found here. TriSys Apex is a completely new recruitment CRM product designed specifically for recruitment agencies using any type of device such as tablets and phones or desktop or laptop computers where the web browser or installed app is the preferred mechanism of accessing cloud data services. Full details of this release can be found here.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Our goals are to give our existing and new customers more choice of how to deploy and access their recruitment technology. From June 30th, you will be able to use TriSys on any of the following devices:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Desktop Computer/PC: Windows XP, Vista, Windows 7, Windows 8, Windows 10, Mac O/S, Linux
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Server: Windows 2003, 2008, 2012
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Laptop: Chromebook, Windows, Mac O/S
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Tablet: iPad (iOS), any Android tablet, Microsoft Surface or any Windows notebook, Apple Macbook (Pro+Air)
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Phones: iPhone (iOS), any Android phone, Windows Phone 8+
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Browsers: Chrome, Firefox, Safari, Internet Explorer, Spartan, Opera
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Existing V10 customers will also be able to upgrade to TriSys 2015 or Apex at no additional cost i.e. these additional software capabilities are available free of charge for existing customers. You will also be able to use both V10, 2015 and Apex at the same time, choosing the most appropriate app for your current device.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Whether you are an on-premise (you host your own IT infrastructure) or an on-demand (we host your IT systems in the cloud) recruiter, TriSys supplies or will supply, a truly cross-platform suite of recruitment CRM apps which you can use on any of your devices wherever you are located.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Our web site will also be completely revamped on 30th June so please come back and visit on this date.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/apex-landing.png" length="272764" type="image/png" />
      <pubDate>Tue, 31 Mar 2015 18:37:51 GMT</pubDate>
      <guid>https://www.trisys.co.uk/onwards-and-upwards</guid>
      <g-custom:tags type="string">trisys apex,launch,recruitment system,web browser CRM,trisys cloud</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/apex-landing.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/apex-landing.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Project Apex in 2015</title>
      <link>https://www.trisys.co.uk/project-apex-in-2015</link>
      <description>The TriSys Apex initiative was conceived in order to 'Webify Everything' at TriSys. It has been a massive R&amp;D project resulting in our production ready Web API and TriSys for Websites, plus a host of additional products and services in development.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         The TriSys Apex initiative was conceived in order to 'Webify Everything' at TriSys.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          It has been a massive R&amp;amp;D project resulting in our production ready Web API and TriSys for Websites, plus a host of additional products and services in development.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The current focus of the Apex team comprising many developers from around the world, is preparing our new web site, web browser and mobile products for release together with our new TriSys 2015 desktop product in Q2 2015.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We are excited to be able to share with you a selection of screen shots from both popular web browsers (Chrome, Firefox, Safari, Internet Explorer), tablets and phones:
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/Apex-Blog-Feb15.4.png" alt="A collage of computer screens and a cell phone"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         TriSys Apex 2015 is truly ground-breaking and will have functionality specifically designed for todays recruiter.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We will be announcing the availability of this product/service in our March 2015 newsletter on 31st March 2015. In order to get access, please follow us on twitter or subscribe to our newsletter.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1451187580459-43490279c0fa.jpg" length="256937" type="image/jpeg" />
      <pubDate>Fri, 27 Feb 2015 19:45:41 GMT</pubDate>
      <guid>https://www.trisys.co.uk/project-apex-in-2015</guid>
      <g-custom:tags type="string">trisys apex,recruiting crm,trisys cloud,web api,trisys websites,recruitment agency software</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1451187580459-43490279c0fa.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1451187580459-43490279c0fa.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Announcing TriSys 2015</title>
      <link>https://www.trisys.co.uk/announcing-trisys-2015</link>
      <description>Pre-announcement of forthcoming release of TriSys expected in Q2 2015. This will be our eleventh version of TriSys recruitment software which maintains our record of bringing a new version to market every two years since our debut at the Recruitment '94 exhibition.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         We are delighted to pre-announce our forthcoming release of TriSys expected in Q2 2015. This will be our eleventh version of TriSys recruitment software which maintains our record of bringing a new version to market every two years since our debut at the Recruitment '94 exhibition.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Due to the rapidly increasing rate of innovation in the technology sector, and the TriSys applications' ability to self-update, we will also be moving to a more frequent release cycle. This will allow us to push business critical enhancements to our customers, greatly enhancing their capacity to supply great service to their clients and candidates.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Many new features will be added to TriSys which build upon the innovations we have progressively built into our current version 10 including our new Web API, SDK, mobile toolkits, TriSys for web sites, document library, image/photo capture, booking sheet, internationalisation and many more.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Expect to see major new enhancements designed to take advantage of the increasing power of both desktop and mobile devices, a new range of add-ins, tighter integration with social media and job board ecosystems. You can also directly import data from your legacy recruitment software directly into TriSys, saving you time and money.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys 2015 will be completely backwards compatible with our current version allowing customers to run both versions side by side with a fully automated database migration elminating upgrade costs.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Microsoft will release Windows 10 this year and we already have TriSys running on a beta version of this platform, but wish to ensure that TriSys 2015 is optimised for all supported windows versions 7, 8, 8.1, 10, 2008, 2012.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Further details and access to pre-release versions will be made available to selected customers in the coming months.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          You can get started today by installing the free trial of our current version 10.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1467810563316-b5476525c0f9.jpg" length="113314" type="image/jpeg" />
      <pubDate>Fri, 30 Jan 2015 19:48:57 GMT</pubDate>
      <guid>https://www.trisys.co.uk/announcing-trisys-2015</guid>
      <g-custom:tags type="string">trisys recruitment software,trisys recruiting crm,recruitment agency software,trisys cloud</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1467810563316-b5476525c0f9.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1467810563316-b5476525c0f9.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Don't Let Technology Eat Your Time and Rule Your Life</title>
      <link>https://www.trisys.co.uk/don-t-let-technology-eat-your-time-and-rule-your-life</link>
      <description>As we arrive at the festive season, and we are all thinking less about work and more about friends and family, and perhaps those less fortunate than ourselves, please give a little thought to what I am about to say.</description>
      <content:encoded>&lt;div&gt;&#xD;
  &lt;img src="https://irp-cdn.multiscreensite.com/md/dmip/dms3rep/multi/group-friends-fun-together-outdoors.jpg" alt="A group of young people are taking a selfie together."/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         As we arrive at the festive season, and we are all thinking less about work and more about friends and family, and perhaps those less fortunate than ourselves, please give a little thought to what I am about to say.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Simply ask yourself how much time you have spent in 2014 watching on-line video, texting, listening to music, taking selfies, snap-chatting, playing games, reading tweets, discussing random irrelevances on facebook, composing pointless e-mails, chasing dead leads on LinkedIn, downloading apps on your phone, learning stuff you didn't need to know (and now cannot remember any of it anyway), and probably a whole load of other 'time-sink' activities which did not actually help your effectiveness either from a business perspective, or even socially.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Did you just 'exist' during these wasted hours - I'm guessing it is more than hours - probably days if not weeks of lost time which you could have spent doing or planning something either more enjoyable or more constructive.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;div&gt;&#xD;
    
          If this point of view resonates with you, then don't be alarmed. You have been a victim of 'techno-gobble' where technological gadgets increasingly gobble up your time and fool your brain into thinking it is busy, whilst what is actually happening is that you are becoming (or have become) addicted to being a modern 21st century consumer.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          21st century consumers are now spending more time on-line than their parents generation watched TV, often twice as much or more. The previous TV-obsessed 'couch-potato' generation were often criticised for wasting their own lives by watching other people live theirs. This is so true of many 21st century consumers, although the content is more varied, faster moving and arguably more interesting, often interactive, with so much more choice.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          There are health issues here too. Sitting at a desk during work time, and then sitting somewhere else in leisure time consuming content, is also going to impact your health, even if you don't sucumb to the habit of grazing whilst you consume, play or share content.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Do not let this situation get worse. Restrict your social technology and entertainment activities to a specified number of minutes per hour, or hours per day. Allocate time - your precious time - to achieving what you want to achieve in life by being pro-active, not re-active to whatever trends seem to be popular with your friends or colleagues or the media.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          They used to say that being good at snooker was a sign of a mis-spent youth. In other words, dedicating 10,000 hours of practice at the expense of an education was acceptable to certain sportsmen who had 'a gift'. 
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Think about the potential 10,000 hours you may lose by letting technology consume your time and attention. Could you not put those hours to good use and excel at something in life, which you enjoy, for which you and your friends and family will be really proud someday?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Don't succumb to wasting time being an entertainment obsessed consumer; spend your time creating or being part of something you enjoy which will make you proud of using your valuable time wisely.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/dmip/dms3rep/multi/friends-cafe.jpg" length="89566" type="image/jpeg" />
      <pubDate>Mon, 22 Dec 2014 19:57:56 GMT</pubDate>
      <guid>https://www.trisys.co.uk/don-t-let-technology-eat-your-time-and-rule-your-life</guid>
      <g-custom:tags type="string">friends,family,love,life,happiness,joy,laughter,fortune,couch-potato,loser</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/dmip/dms3rep/multi/friends-cafe.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/dmip/dms3rep/multi/friends-cafe.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Web App Development IDE</title>
      <link>https://www.trisys.co.uk/web-app-development-ide</link>
      <description>Developing our Apex single page application HTML, CSS, JSON, Javascript etc..  using Microsoft Visual Studio.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Visual Studio 2013 is not very clever when used to open a web site containing our Apex single page application HTML, CSS, JSON, Javascript etc.. It seems to try and launch a 'localhost' type of environment and because our source code files are cloud hosted, this takes minutes to just even load the project. Then it periodically just hangs momentarily even editing simple files.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          What's a dev to do? Well, I looked at alternative IDE's (integrated development environments) to test the market. This article is recommended reading as it highlights alternative IDE's such as Netbeans, Eclipse, Komodo, Notepad++ and WebStorm. They all are very good and in many cases superior to VS, however there is one aspect which turned out to be critical. This is that we still use Visual Source Safe (VSS) internally. Although this has been superceded by Team Foundation Server at Microsoft, we have so much code in VSS tied to automated build scripts, and do not think that TFS will not add further complications to our control and build processes. For a small ISV, why spend extra cash fixing what already works?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Visual Studio 2013 defaults to TFS, however we were able to change that and point at VSS for seamless source code check-in/out and diff analysis. No other IDE seems to support VSS. Maybe I am missing something, but no google help on this.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          So, we wanted a straight single page application (SPA) which does not rely upon ASP.Net, C# or VB.Net or the .Net Framework. Unfortunately VS 2013 does not provide such a simple project. We had to settle on an empty ASP.Net project and then drag in all our existing code folders which works recursively thank heavens, and then set the index.html as the start page.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          So now we have an ASP.Net web application which does not need or use ASP.Net. This is a drag, but not a major problem. What about debugging support? So we ran it and got an error where IIS 8 complained about .json files. Although we set the .json mime type in IIS manager, it seems VS2013 ignores that and requires a web.config change. Luckily the solution was documented here.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Running our SPA application using Internet Explorer as the default browser now allows full debugging of the project javascript (JS), without having to use the browser integrated debuggers. This is another major benefit of using VS2013. Interestingly, no JS debugging is available when using alternative default browsers when running the debugger. You can even edit-and-continue, but of course also have to refresh your browser to accept source code changes.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We also get full intellisense on our javascript object hierarchies which helps Apex developers fully utilise the framework.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/VS2013-web-debugger-apex.png" alt="A screen shot of a microsoft visual studio program"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         We will now be able to utilise separate worldwide teams to develop Apex using a single IDE with an integrated source code control system, javascript framework intellisense and debugging which promotes a more structured approach for QA and rollout allowing greater scalability in our development efforts.
        &#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1578923157263-9dba6e3e6739.jpg" length="371852" type="image/jpeg" />
      <pubDate>Wed, 12 Nov 2014 20:04:33 GMT</pubDate>
      <guid>https://www.trisys.co.uk/web-app-development-ide</guid>
      <g-custom:tags type="string">spa,single page application,Ajax,HTML,CSS,JSON,Javascript,Apex,recruitment software,visual studio</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1578923157263-9dba6e3e6739.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1578923157263-9dba6e3e6739.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys Web API Browser Compatibility, JQuery, CORS, XDR</title>
      <link>https://www.trisys.co.uk/trisys-web-api-browser-compatibility-jquery-cors-xdr</link>
      <description>TriSys partners and developers building business applications with the TriSys Web API should take note of the following advisory. We made TriSys Web API as powerful, extensible, efficient and secure as possible. To achieve this however we have to let go of supporting legacy browsers which are not compatible due to well accepted inadequacies in their respective designs.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         TriSys partners and developers building business applications with the TriSys Web API should take note of the following advisory:
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We have put in a lot of work to make the TriSys Web API as powerful, extensible, efficient and secure as possible. To achieve this however we have to let go of supporting legacy browsers which are not compatible due to well accepted inadequacies in their respective designs.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          You are not able to use the TriSys Web API from Microsoft Internet Explorer (IE) 6, 7, 8 or 9 for these reasons:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            No support for CORS - this is the cross origin resource sharing, which allows web sites to be hosted on separate domains from their data and other services.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            No support for the industry standard XMLHTTPRequest (XHR) asynchronous mechanism. Instead, IE 6, 7, 8, 9 use their own variant called XDomainRequest which has been deprecated in IE 10.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            IE 6, 7, 8, and 9 do not support XHR2 CORS. It is not possible to make generalized cross-domain requests in these browsers.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            IE 8, 9 support an ActiveX control called XDomainRequest that only allows limited cross-domain requests compared to XHR2 CORS.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            jQuery does not include XDomainRequest support because there are numerous and serious limitations to XDR (external data representation).
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            XDomainRequest does not support complex JSON objects or secure custom headers which are essential design features of the TriSys Web API.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            XDomainRequest allows only intranet zone i.e. on-premise as opposed to geographically dispersed on-demand such as TriSys global services.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            JQuery 2.0 and other third party open source offerings is not going to support legacy IE.
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          You are able however to fully utilise the TriSys Web API from the following:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           HTML5 compliant web browsers, including:
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;br/&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Internet Explorer 10, 11
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Firefox
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Chrome
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Safari
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Opera
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           All modern tablets, including:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            iPad
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Android
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Windows RT
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           All modern phones, including:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            iPhone
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Android
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Windows Phone
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Blackberry
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          If you are a web designer or programmer utilsing the TriSys Web API, please contact us for further information, or visit the API at api.trisys.co.uk
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1518932945647-7a1c969f8be2.jpg" length="202474" type="image/jpeg" />
      <pubDate>Tue, 11 Nov 2014 20:10:49 GMT</pubDate>
      <guid>https://www.trisys.co.uk/trisys-web-api-browser-compatibility-jquery-cors-xdr</guid>
      <g-custom:tags type="string">TriSys Web API advisory,CORS,XMLHTTPRequest (XHR),JQuery,Web API,Apex,recruitment software,trisys cloud,web browser,phones,tablets</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1518932945647-7a1c969f8be2.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1518932945647-7a1c969f8be2.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Web Frameworks</title>
      <link>https://www.trisys.co.uk/web-frameworks</link>
      <description>Many of our customers and partners are web designers and developers, and use TriSys technologies to construct web sites, job boards and mobile applications. All of these people will have come into contact with web frameworks which is a tool, or style, for constructing web sites by solving one or more problems which would otherwise have to be hand-crafted.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Many of our customers and partners are web designers and developers, and use TriSys technologies to construct web sites, job boards and mobile applications.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          All of these people will have come into contact with web frameworks which is a tool, or style, for constructing web sites by solving one or more problems which would otherwise have to be hand-crafted. A framework is generally an excellent idea as it allows much of the lower level detail to be abstracted away to let the developer/designer focus on actual content or presentation and manipulation of data.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          There are a host of popular web frameworks such as jquery, sencha, kendoui, bootstrap, angular, ember, backbone, knockout, meteor, ionic, cappuccino, spine, qooxdoo, eyeballs to name just a few.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Should you use a web framework?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Just this week, google announced version 2.0 of Angular.js and this met with a very strong reaction from the community. It seems that we expect web framework designers to get it right first time and provide continual backward compatibility to preserve our existing and historic code bases. Is this unreasonable?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          At TriSys, we have always used frameworks as they are now known. Historically, these would have been called 'components' and indeed all TriSys software is built using third party components from vendors such as Microsoft, DevExpress, Telerik, Infragistics etc..
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          More recently the concept of a component has been augmented with services such as those TriSys utilises from Google, Amazon, Microsoft etc..
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Does TriSys use web frameworks?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Absolutely, but with great care. We also build our own responsive frameworks to solve the unique challenges our customers face. Sometimes our frameworks are built, or indeed inspired, by web frameworks from other vendors. This is an active and vibrant community where innovation is the only constant. Currently we are utilising KendoUI, Bootstrap and JQuery, and constructed our Apex framework to deliver the client-side functionality of Web API cloud data binding to provide feature rich recruitment technology to our customers.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          In the future, we will use other vendors for sure. The web framework niche is going to get even bigger as the 'mobile web' increases in importance and apps become more sophisticated and connected.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          You can expect TriSys to continue to be at the forefront of the leading egdes of software development.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1487492547841-8504faad40cf.jpg" length="939754" type="image/jpeg" />
      <pubDate>Fri, 31 Oct 2014 20:14:37 GMT</pubDate>
      <guid>https://www.trisys.co.uk/web-frameworks</guid>
      <g-custom:tags type="string">web framework,angular,react,jquery,web api,apex,trisys cloud,sencha,kendoui,bootstrap,ember,backbone,knockout,meteor,ionic,cappuccino,spine,qooxdoo,eyeballs</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1487492547841-8504faad40cf.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1487492547841-8504faad40cf.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Observations from a Technologist</title>
      <link>https://www.trisys.co.uk/observations-from-a-technologist</link>
      <description>Personal observations of things which are of interest in July 2014. Thank you to the team here at TriSys in Cambridge. Secondly, thanks to all of our customers, new and old, who are further investing heavily in TriSys' products &amp; services.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         This post is really more of a diary entry noting some personal observations of things which are of interest in July 2014.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          First of all, a great thank you to the team here at TriSys in Cambridge. We have been ultra-busy during the last quarter, moving offices and coping well with the significant increase in demand of our services. James is really flying now managing the full development and maintenance teams involved in TriSys' desktop applications. Joanne is coping admirally with the challenges involved in project managing numerous, global delivery projects we are now running concurrently. Peter is as robust as ever, working closely with our global infrastructure partners in continuing to deliver a reliable and industrial strength recruitment service, whilst running the ever-expanding help desk team. Alex is doing a great job designing web solutions using our new CMS and Web API. Jack and Wendy are both getting through an enormous amount of sales related work, and Sue is doing a splendid job dealing with our social media output for marketing. A warm welcome to Francisco who has joined the team in Cambridge this month.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Secondly, thanks to all of our customers, new and old, who are further investing heavily in TriSys' products &amp;amp; services.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Our products and services are very competitively priced, for a variety of reasons. We operate a profitable business at TriSys, and this requires us to balance out our workloads to accomodate multiple concurrent work items, which I believe we do very well considering the complexity of the systems we support and procure. We welcome feedback from customers who may disagree.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We have ploughed ahead with our R&amp;amp;D efforts during this month with both our CMS, Web and Mobile products benefitting from the investments we have made in the Apex framework, SDK and API. We have significantly more world-wide expertise in web technologies such as HTML, CSS &amp;amp; JavaScript, and these will stand us in good stead to cope with the changing universe of computer software as it continues to 'eat the world'
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          I will update you with further details on all our exciting new products and services in due course. 
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1518770660439-4636190af475.jpg" length="472985" type="image/jpeg" />
      <pubDate>Thu, 31 Jul 2014 19:19:17 GMT</pubDate>
      <guid>https://www.trisys.co.uk/observations-from-a-technologist</guid>
      <g-custom:tags type="string">trisys customers,technology,CMS,web api,sdk,html,css,javascript</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1518770660439-4636190af475.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1518770660439-4636190af475.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys Web 2014</title>
      <link>https://www.trisys.co.uk/trisys-web-2014</link>
      <description>TriSys Web is a client and candidate web browser portal to allow candidates to search for jobs, and apply on-line, and for clients to maintain their own vacancies, search for candidates and arrange interviews. The new version is described here.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         TriSys Web is a client and candidate web browser portal to allow candidates to search for jobs, and apply on-line, and for clients to maintain their own vacancies, search for candidates and arrange interviews. Where web timesheets are deployed, candidates can enter their timesheets and clients can authorise these.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The first version of TriSys Web was written in the 1990's using common gateway interface (CGI) protocols. Subsequent versions used web classes, active server pages and then ASP.Net in 2000 - 14 years ago. TriSys defined its own web browser framework called Ideometrix to provide an abstraction over the complexities of ASP.Net and make TriSys Web more desktop-like in both usability and for TriSys and partner developers. 
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Much has changed since those early days. Many of the original design goals are still very relative today, however many are consigned to the legacy category and are less important today than back then.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The 2014 version of TriSys Web is nearing completion and has the following characteristics:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Platform agnostic - TriSys Web runs on any server (or client) platform and is not dependent upon any Microsoft software.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            It can be deployed on Linux, or any cloud based operating system, or any desktop or mobile device operating system such as Mac OS or iOS or Android.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            It does not rely or use ASP.Net or any other server side framework or special services.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Because of its non-reliance on resource hungry server based 3rd party application servers, it is much more efficient and scalable.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Clear separation of presentation logic, business logic and data-bound access and storage. This allows for greater functionality, easier maintenance and greater scalability.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Full integration on-the-fly with popular content management solutions (CMS) from a variety of vendors. This allows TriSys Web components to be simply dropped-in to existing web sites.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Open Source - the code to TriSys Web will be available on Github and can be re-used by any of our partners.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Partner-friendly implementation - it can easily be used by our web design focused partners to bring full interactivity to agency web sites.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Adherance to industry standards such as HTML/CSS/JQuery/Javascript/JSON for client side.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Uses the highly secure and sophisticated TriSys Web API which provides highly concurrent and powerful cloud data services integrated with TriSys cloud components such as active directory, SQL Server, massive data storage, application business logic etc..
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Uses the TriSys Apex framework which is a modern replacement for the legacy ASP.Net-centric Ideometrix framework. Apex is entirely written in Javascript and utilises sophisticated data-binding using the TriSys meta-database used throughout TriSys desktop recruitment software applications.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Apex data binding to popular data oriented 3rd party client-side widgets such as KendoUI, JQuery Widgets or twitter Bootstrap.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Generates white-labelled recruitment agency native mobile apps providing TriSys customers with their own iOS/Android/Windows Phone mobile apps which can be used for customer engagement and operational management of jobs, timesheets, payments, invoicing etc..
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            A range of new features such as job alerts, social network integration, job board posting and application management, 3rd party cloud application integration (e.g. SalesForce, Microsoft Dynamics, SAP, Oracle etc..)
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          In summary, TriSys Web has undergone a complete re-write, and is now a modern recruitment agency job portal framework which can be easily deployed inside existing web sites.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Here is a screenshot of the prototype showcase opuslaboris.com currently in development:
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/TriSys-Web-2014.png" alt="A screenshot of the opus laboris recruitment website"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         Please keep and eye out for the full release later this summer.
        &#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/web-jobs-custom-page.png" length="2708407" type="image/png" />
      <pubDate>Mon, 30 Jun 2014 19:25:52 GMT</pubDate>
      <guid>https://www.trisys.co.uk/trisys-web-2014</guid>
      <g-custom:tags type="string">trisys web,recruitment software,agency portal,jobs,candidates,clients,database,crm,trisys cloud,web api</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/web-jobs-custom-page.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/web-jobs-custom-page.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>20 Year Anniversary</title>
      <link>https://www.trisys.co.uk/20-year-anniversary</link>
      <description>On 5th May 1994, Technical Recruitment Industry Systems Ltd was officially registered with Companies House and began life designing and building software for recruitment agencies. The first version of TriSys debuted at the Recruitment '94 exhibition at the Barbican in London in October 1994 and was the worlds first windows recruitment software application - competing head to head with 'green-screen' dumb terminal and very expensive legacy systems from the 80's.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         During the early 90's, the IT contract market was booming and I was approached by one of my preferred recruitment agencies to supply them with a modern, cost effective recruitment management system to help them cope with the demands of both their customers and candidates. The concept of TriSys was born.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          On 5th May 1994, Technical Recruitment Industry Systems Ltd was officially registered with Companies House and began life designing and building software for recruitment agencies. 
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The first version of TriSys debuted at the Recruitment '94 exhibition at the Barbican in London in October 1994 and was the worlds first windows recruitment software application - competing head to head with 'green-screen' dumb terminal and very expensive legacy systems from the 80's.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          20 Years later to this day, and one name change later, TriSys Business Software remains at the forefront of recruitment technology, having poineered the packaged windows recruitment software market, SQL Server adoption and laterly cloud computing over a decade ago.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          As we begin our third decade in business, we have numerous exciting products and services to announce this year, and we look forward to bring these to market soon.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          To celebrate our 20th anniversary, we have now completed an extensive upgrade of our global cloud computing network, providing faster and more powerful remote desktops to our existing customers, as well as a multimedia video and a press release thanking our customers for their business over the last 20 years.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1530103862676-de8c9debad1d.jpg" length="123592" type="image/jpeg" />
      <pubDate>Mon, 05 May 2014 19:29:13 GMT</pubDate>
      <guid>https://www.trisys.co.uk/20-year-anniversary</guid>
      <g-custom:tags type="string">trisys,1994,recruitment 94,worlds first,windows recruitment software,floppy disks,exhibition,recruiters,barbican,london,legacy,expensive</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1530103862676-de8c9debad1d.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1530103862676-de8c9debad1d.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>All Things Web</title>
      <link>https://www.trisys.co.uk/all-things-web</link>
      <description>Almost everything that TriSys is developing or integrating with these days has some kind of web component, whether it is a cloud database service, cloud storage, e-mail sync, social networks, job boards, open source code repositories and even cloud accounting software.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Almost everything that TriSys is developing or integrating with these days has some kind of web component, whether it is a cloud database service, cloud storage, e-mail sync, social networks, job boards, open source code repositories and even cloud accounting software.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This is proof that almost everything new in technology is targetting the web - in particular the mobile web, or those products making use of web services.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Luckily we embarked on our webification of TriSys technology over 14 years ago with the launch of the first version of TriSys Web in 2000 as a client/candidate jobs oriented portal for recruitment agencies.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Now, as we approach our official 20th birthday on 5th May 2014, we have reliable and scalable industrial strength internet services delivering true business benefit to our customers all around the world.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Our latest R&amp;amp;D projects are being developed with a web-first approach, targetting multiple devices including phones, tablets, laptops, desktops, servers and TV. The days of desktop windows dominating the technology landscape are gone. Even Microsoft has this month released its Office for iPad, and announced that its new SQL Server 2014 is the most widely tested release yet - having been used in production on its SQL Azure cloud service with over 1 million databases.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Expect numerous exciting product/services announcements from us in the forthcoming months.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/web_search.jpg" length="153033" type="image/jpeg" />
      <pubDate>Wed, 16 Apr 2014 19:31:50 GMT</pubDate>
      <guid>https://www.trisys.co.uk/all-things-web</guid>
      <g-custom:tags type="string">trisys,developing,web technology,SQL Server,Web API,recruitment,recruiting agency,trisys cloud</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/web_search.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/web_search.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Version 10 Adoption</title>
      <link>https://www.trisys.co.uk/version-10-adoption</link>
      <description>As more and more customers adopt the TriSys Version 10 platform, we often get asked questions about why software vendors such as TriSys Business Software, drop a small number of older, legacy features from their newer products.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         As more and more customers adopt the TriSys Version 10 platform, we often get asked questions about why software vendors such as TriSys Business Software, drop a small number of older, legacy features from their newer products. The following information may help answer that question:
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys continually invests significant R&amp;amp;D in bringing new versions to the recruitment software market. As the world changes, legacy features which were popular or useful in a previous technological era will be sacrificed for newer, more contemporary and valuable features. All of our work integrating with web services, social networks, job boards and CV services reflect the fact that TriSys is no longer an isolated departmental CRM system, rather it is part of a growing and powerful recruiting ecosystem which is accessible from a range of devices, not just a PC.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Version 10 is a new product which carries forward all of the design and usability principles of previous iterations, but has been re-written to take advantage of both modern and future computing platforms, both on-premise and on-demand. In particular, we have replaced our legacy and proprietary forms designers and programming languages with those which are industry standard and best of breed. Our software development kit is the only SDK in the recruitment software industry to build recruitment forms, actions and workflow, and our web application programming interface is the only API in the industry to offer access to TriSys for third party web and mobile designers.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Our latest roadmap is published here: https://apex.trisys.co.uk/support/blogs/Summary-of-Q4-2013
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys will never stop innovating or listening to both customers, partners, business leaders and worldwide technology industries to engineer and deliver the best contemporary recruiting system in the market for the immediate and future benefit of our customers.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We are delighted that you are with us on this journey.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1567628960657-dff331f2b9f9.jpg" length="373038" type="image/jpeg" />
      <pubDate>Wed, 12 Mar 2014 20:42:48 GMT</pubDate>
      <guid>https://www.trisys.co.uk/version-10-adoption</guid>
      <g-custom:tags type="string">trisys recruitment software,version 10,.net framework,windows,trisys cloud,recruiting agency,recruiter technology</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1567628960657-dff331f2b9f9.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1567628960657-dff331f2b9f9.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Microsoft in 2014 and Beyond</title>
      <link>https://www.trisys.co.uk/microsoft-in-2014-and-beyond</link>
      <description>On 4th February Satya Nadella was appointed as the new CEO of Microsoft, replacing Steve Ballmer who was with Microsoft since the 1970's after being a Harvard dorm friend of the undergraduate Bill Gates.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         On 4th February Satya Nadella was appointed as the new CEO of Microsoft, replacing Steve Ballmer who was with Microsoft since the 1970's after being a Harvard dorm friend of the undergraduate Bill Gates.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Steve Ballmer was seen by many as an under-performing CEO, however the revenues streams and share price of Microsoft during his time as CEO remained strong, despite some very poor strategic mistakes leading to loss of ground to both Apple and Google.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Satya is a 20 year Microsoft veteran, was born in India, has recently been in charge of the cloud and enterprise groups, and is married with three children. He has wisely chosen to convince Bill Gates to spend one day per week working with Microsoft to help shape its future.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Microsoft faces some enormous challenges in the coming years. It has to deal with aftermath of the Windows 8 debacle in which versions of windows were released which did not run most windows programs (Surface/RT), and the much hated 'metro' interface (Microsoft wants us to call this 'modern' but this seems laughable given that it will soon be history).
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Microsoft continues to lag behind Apple iOS and Google Android in the mobile operating system wars, and it's purchase of Nokia has come under recent scrutiny now that some Nokia mobile phones are going to run Google's Android operating system. This is a kick in the teeth for the Windows Phone teams.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          With the 'death of the PC' being predicted by many commentators, Microsoft has to balance its existing revenue streams from Windows which drive sales of many other products such as Office, Exchange, Sharepoint etc.. Microsoft has already announced much cheaper embedded versions of windows for small devices, but I feel that they will have to effectively sacrifice this revenue in order to make Android less attractive for device manufacturers.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys will continue to utilise the Microsoft technology stack, whilst of course embracing other platforms as the market continues to thrive. Microsoft needs however to re-engage with its army of partners and developers and greatly improve its communications and strategic direction which have both been very detrimental to partners over the last couple of years.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Good luck Mr Nadella.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/microsoft-squares.jpg" length="68863" type="image/jpeg" />
      <pubDate>Fri, 28 Feb 2014 20:47:19 GMT</pubDate>
      <guid>https://www.trisys.co.uk/microsoft-in-2014-and-beyond</guid>
      <g-custom:tags type="string">microsoft,bill gates,Satya Nadella,Steve Ballmer,apple,google,pc,development</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/microsoft-squares.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/microsoft-squares.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Project Apex in 2014</title>
      <link>https://www.trisys.co.uk/project-apex-in-2014</link>
      <description>It has been a while since we blogged about our Project Apex initiative to effectively 'Webify Everything' at TriSys. Since the last blog post and subsequent update in 2013, the worldwide economy has picked up further and the recruitment industry is also beginning to grow once again. This adds additional fuel to Project Apex and coupled with the maturation of the TriSys Web API, this means that the Apex technology is on-schedule for release in H1 2014.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         It has been a while since we blogged about our Project Apex initiative to effectively 'Webify Everything' at TriSys.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Since the last blog post and subsequent update in 2013, the worldwide economy has picked up further and the recruitment industry is also beginning to grow once again. This adds additional fuel to Project Apex and coupled with the maturation of the TriSys Web API, this means that the Apex technology is on-schedule for release in H1 2014.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The current status of the project is that our designers have now built the new user interface to use a flat theme popular in current web and mobile software applications. Our back-end cloud developers have almost completed the Web API which provides full CRUD (create, read, update, delete) programmatic, secure, cross platform and firewall friendly access to the TriSys SQL Server, file system and e-mail stores. Our web developers have chosen bootstrap as the basis for the web/mobile SDK (software development kit) to build the cloud-connected RAD (rapid application development) methodology we are using for all internal and customer facing products and services.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The net result of all this development over the last 24 months can now be revealed as a sneak peek in this screenshot:
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/Apex-08-Jan-2014-blog.png" alt="A computer screen shows a contact form and a list of contacts"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         This is very much an alpha release as of January 2014, but over the coming weeks we expect to be able to invite existing cloud customers on-line with their 'phablet' devices and increase their effectiveness now that we are well into the Post-PC era of business computing.
        &#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1503470292355-d6d0c0223c0d.jpg" length="283969" type="image/jpeg" />
      <pubDate>Wed, 08 Jan 2014 20:52:48 GMT</pubDate>
      <guid>https://www.trisys.co.uk/project-apex-in-2014</guid>
      <g-custom:tags type="string">trisys apex,recruitment software,web browser,spa,jquery,html,css,bootstrap,web api,trisys cloud,amazon web services,microsoft azure,google cloud</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1503470292355-d6d0c0223c0d.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1503470292355-d6d0c0223c0d.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Q4 2013 and beyond</title>
      <link>https://www.trisys.co.uk/q4-2013-and-beyond</link>
      <description>The last quarter of 2013 has proved to be very important for both TriSys and the Recruitment Industry.
After a gradual decline since the 2008 global financial meltdown, the worldwide recruitment industry has seen high growth reaching its peak over these last 3 months. This is great news for TriSys and its customers.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         The last quarter of 2013 has proved to be very important for both TriSys and the Recruitment Industry.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          After a gradual decline since the 2008 global financial meltdown, the worldwide recruitment industry has seen high growth reaching its peak over these last 3 months. This is great news for TriSys and its customers.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Well done to all the recruitment agencies who have stuck it out over the last few years.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          As a result of this increase in demand for our customers services, we too have been in demand by those recruitment agencies who are now investing in their future recruitment technologies. We are most grateful for your ongoing business.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys' marketing has lapsed over the last couple of months whilst we plan for 2014 and of course deal with the increased business opportunities that have come our way.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We have re-engineered, or are currently re-engineering, many of our existing products and services, and this will significantly increase our portfolio in 2014 where we will be releasing the following:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Fully functional cross platform cloud based Web API
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Upgrades to the TriSys Mobile suite of products for phones and tablets
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            SDK support for Visual Studio 2013 and Windows 8.1
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Full support for SQL Server 2014
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            64-bit Native versions of TriSys for Windows Server using .Net 4.5.1
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Release of Starter Edition to complement our Enterprise offerings
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Upgrade of TriSys Web technology under our 'Apex' umbrella
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We are very excited about 2014 and what we can do for our customers.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We wish you all a very Merry Christmas and a Happy New Year.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/5049dacb.jpg" length="241981" type="image/jpeg" />
      <pubDate>Mon, 23 Dec 2013 20:57:26 GMT</pubDate>
      <guid>https://www.trisys.co.uk/q4-2013-and-beyond</guid>
      <g-custom:tags type="string">trisys,recruitment industry,2008 financial crisis,growth</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/5049dacb.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/5049dacb.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Microsoft buys Nokia Mobile Phone Unit</title>
      <link>https://www.trisys.co.uk/microsoft-buys-nokia-mobile-phone-unit</link>
      <description>Today marks a new era in the computing industry. The worlds largest software company has purchased the mobile phone unit of Nokia for £4.6bn. 32,000 Nokia employees will transfer to Microsoft in 2014 including of course the Nokia CEO Stephen Elop who used to be a Microsoft executive up until 2010, and stills lives with his family in Redmond Washington, the home of Microsoft.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Today marks a new era in the computing industry. The worlds largest software company has purchased the mobile phone unit of Nokia for £4.6bn. 32,000 Nokia employees will transfer to Microsoft in 2014 including of course the Nokia CEO Stephen Elop who used to be a Microsoft executive up until 2010, and stills lives with his family in Redmond Washington, the home of Microsoft.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          With existing Microsoft CEO Steve Ballmer due to retire in 2014, this latest aquisition positions Stephen Elop as a front runner to replace him.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Microsoft will now go head to head in terms of software/hardware for mobile devices with Apple. Google bought Motorola mobile last year and they will also be competing in this space. Where does this leave Samsung, LG and the other manufacturers? And what about Blackberry - surely someone must gobble them up?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Microsoft can now redefine the mobile market, rather than continue fighting, and losing, in the existing battlefield - they can change the goalposts.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Here is one way they could do it..
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Strike a deal with telecoms companies i.e. Verizon, AT&amp;amp;T, Vodafone, O2 etc.. to allow Microsoft customers to purchase SIM bundled working phones directly from Microsoft's web site. When the phone arrives, the customer simply turns it on and it works - they can top up the balance (having paid for 1 month up front) at any time - true pay as you go.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This will eradicate the complexity, inconvenience and cost for customers and therefore drive down the price that Microsoft can sell their phones at. The price point for this phone should be around £100. Customers can buy a high end smart phone on-line, with no hassle.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This will redefine the market, attract new young customers and relegate expensive phones from Apple, Samsung etc.. to a smaller market share.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          There are many more opportunities to engage with younger people, such as making a single Nokia XBox device which can be connected to the home TV and wireless controllers to multi-play, but unplugged and popped in the pocket/handbag to use as a phone.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Over to you Microsoft.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1530388684420-55a62e95ed82.jpg" length="714076" type="image/jpeg" />
      <pubDate>Tue, 03 Sep 2013 08:21:48 GMT</pubDate>
      <guid>https://www.trisys.co.uk/microsoft-buys-nokia-mobile-phone-unit</guid>
      <g-custom:tags type="string">microsoft,nokia,aquisition,steve ballmer,stephen elop,google,motorola,blackberry,sim,xbox</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1530388684420-55a62e95ed82.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1530388684420-55a62e95ed82.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>www.webPC.co.uk</title>
      <link>https://www.trisys.co.uk/www-webpc-co-uk</link>
      <description>The Web PC is your own personal computer running in the cloud, and is available through
your web browser from any device.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Our new WebPC brand is now live. - www.webpc.co.uk
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/WebPC-website.jpg" alt="A screenshot of a web pc home page"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         What is WebPC I hear you ask, well ....
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The Web PC is your own personal computer running in the cloud, and is available through
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          your web browser from any device.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          It is designed to be a virtual replacement of your local desktop PC, saving you the cost of
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          upgrading hardware and licensed software.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          You can connect your Web PC to your favourite cloud data provider and run all your favourite
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          windows applications from anywhere.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Lower your IT Spend and have no more up-front costs by replacing capital infrastructure expenses with low variable costs that scale with your business. No need to plan ahead and wait for servers to be built
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          and individually configured, you can have as many preconfigured servers instantly available and
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          fully scalable whenever you need them.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          With Pay-As-You-Go computing, you can Instantly deploy new applications and scale up or down,
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          depending on your current work load or demand, and you only pay for what you use.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          How does this differ from the TriSys remote desktop ?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Application installation is unrestricted, so you can have your own personalised desktop and have this
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          backed up to ensure that if anything goes wrong, then everthing that you have installed will still be there.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          You can set up a default desktop, configured exactly as you want it, then mass deploy the desktop to other employees.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Full scalability means that you can have your desktop configured as an average PC power today, then have the exact same desktop configured as a multi core server tomorrow for high data or number crunching, and scale back down when complete only paying for what you use at that scalbility level.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Have a look at our new service at:- www.webpc.co.uk
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Don’t see anything that fits with your needs?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Then call us and we can discuss and provide any bespoke configurations to meet your specifications.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/WebPCWindowsDesktop.jpg" alt="A computer screen with a webpc logo on it"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1573162915877-b08d86c58ed5.jpg" length="96991" type="image/jpeg" />
      <pubDate>Wed, 21 Aug 2013 08:28:35 GMT</pubDate>
      <guid>https://www.trisys.co.uk/www-webpc-co-uk</guid>
      <g-custom:tags type="string">webpc,web pc,trisys cloud,remote desktop,web browser,windows desktop</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1573162915877-b08d86c58ed5.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1573162915877-b08d86c58ed5.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys Mobile: Version 2.0</title>
      <link>https://www.trisys.co.uk/trisys-mobile-version-2-0</link>
      <description>With development of the full read-write TriSys Web API now underway, the mobile team has been working on an upgrade to our existing mobile app suite currently available in the Apple App Store, Google Play, Blackberry World and Windows Store.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         With development of the full read-write TriSys Web API now underway, the mobile team has been working on an upgrade to our existing mobile app suite currently available in the Apple App Store, Google Play, Blackberry World and Windows Store.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Of course, they insisted that they had a new device to test out the latest cool features of Android Jelly Bean, preferably one which was more of a mini-tablet than our existing collection of full tablet iPads and iPhone/Galaxy phones.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          As we love gadgets, our CEO caved in and agreed to purchase a new Google nexus 7, provided we threw in the new Google Chromecast into the mix. We can now therefore stream HD YouTube [TriSys] movies from the nexus 7 directly onto the wall mounted office HDMI TV.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Here is a picture of the current TriSys Mobile V2 running on a nexus 7:
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/Nexus7-and-TriSys-Mobile.png" alt="A nexus 7 tablet is displayed on a white background"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         We are not giving too much away here as we expect the released app to adopt a more 'flat UI' theme in keeping with current contemporary trends, so please stay tuned to learn about the expected release dates (multiple app stores ;-).
        &#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1472067195688-b67d6141dc79.jpg" length="100423" type="image/jpeg" />
      <pubDate>Wed, 07 Aug 2013 08:33:09 GMT</pubDate>
      <guid>https://www.trisys.co.uk/trisys-mobile-version-2-0</guid>
      <g-custom:tags type="string">trisys mobile,web api,Apple App Store,Google Play,Blackberry World,Windows Store,nexus,chromecast</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1472067195688-b67d6141dc79.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1472067195688-b67d6141dc79.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>E-Mail Marketing</title>
      <link>https://www.trisys.co.uk/e-mail-marketing-blog</link>
      <description>TriSys does not expect its customers to pay more for e-mail marketing, or have to resort to the inconvenience of moving data out into these islands. We therefore provide, at no extra cost, a fully functional industrial strength marketing engine built right into TriSys Version 10.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         CRM systems typically ignore the importance of marketing, in particular e-mail marketing. Many CRM vendors such as SalesForce, Microsoft and Oracle rely upon the third party ecosystem such as ConstantContact and MailChimp to supply add-ons which suffer from two major drawbacks:
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Cost - users have to pay more to get e-mail marketing functionality
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Island of Information Syndrome - the marketing data has to be exported and imported shredding your data everywhere
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys does not expect its customers to pay more for e-mail marketing, or have to resort to the inconvenience of moving data out into these islands.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We therefore provide, at no extra cost, a fully functional industrial strength marketing engine built right into TriSys Version 10.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys customers are able to do the following using our application:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Import data from e-mail marketing agencies in spreadsheet format - for example XLS
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Assign attributes/skills to all imported data to track the success of the marketing campaign
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Create full template-driven e-mail marketing campaigns using Actions
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Generate e-mail templates in .DOCX format merging ANY field from the TriSys database
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Include in-line images, hyperlinks, tables, headers, footers, fonts - everything that Word can do
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Create highly personalised e-mails using TO or via BCC as desired
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Conduct sophisticated smart searching using the tags assigned to imported contacts
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Preview the generated e-mail merge in the TriSys action
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Specify note/history and scheduled follow-up tasks to be merged/generated and linked to contacts
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Assign attributes/skills to all generated action tasks
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Send via Outlook with or without confirmation dialogue or for large bulk, send directly via SMTP to G-Mail, Office 365 etc..
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Capture all recipient clicks and record which link was clicked, by who and at what time
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Allow recipients to opt-out of future e-mails to comply with data protection and e-mail marketing legislation
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Provide a comprehensive anayisys of e-mail marketing campaigns using our built in business intelligence engine
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Cross reference all future business transactions against the success of historic marketing campaigns
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Keep ALL customer related data in one place at all times, like any modern CRM system should
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Please take a test drive of our smart client to see this in action and try it for yourself.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1562577308-9e66f0c65ce5.jpg" length="118838" type="image/jpeg" />
      <pubDate>Wed, 17 Jul 2013 08:36:44 GMT</pubDate>
      <guid>https://www.trisys.co.uk/e-mail-marketing-blog</guid>
      <g-custom:tags type="string">trisys,recruitment,crm,marketing,SalesForce,Microsoft,Oracle,ConstantContact,MailChimp</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1562577308-9e66f0c65ce5.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1562577308-9e66f0c65ce5.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Build Process</title>
      <link>https://www.trisys.co.uk/build-process</link>
      <description>We have a very powerful automated build process internally to compile and publish successive releases of our software application and associated utilities and libraries. This has proven invaluable during both development and maintenance.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         We have a very powerful automated build process internally to compile and publish successive releases of our software application and associated utilities and libraries. This has proven invaluable during both development and maintenance.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Any software application will spend 90% of its lifetime in maintenance i.e. only 10% of its lifetime will it be 'in development' which is always at the beginning of any software project. By automating the build process during this early phase, we have ensured that future releases are easy to build and therefore the software becomes easier to both maintain and deliver to customers.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Our automated build process uses a sophisticated workflow tool which does the following:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Retrieve latest checked-in versions of all source code
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Compiles each library in correct order
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Compile each component
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Gather correct versions of re-distributable third party libraries
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Compile full application as a downloadable smart client
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Compile full application as a terminal services setup EXE
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Distribute both applications to the web
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Compile all industry specific libraries comprising industry business rules
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Compile numerous customer specific libraries comprising customer business rules
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Distribute all industry and customer specific libraries to the web
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Compile customer specific ribbons
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Publish customer specific ribbons and user interface libraries to the web
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Send completion e-mail to development, support and some customer developers
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Our current automated build time for all of the above comprising over 1 million lines of source code is around 12 minutes. We do this build on a quad-core Windows 7 machine with 8Gb RAM using Visual Studio 2010.
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We also follow the Microsoft 'best practice' of building our software at least once a day so that we can always get an emergency release out quickly should a problem arise in the field.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Once our software is built, the application quickly auto-upgrades itself when started including taking responsibility for its own database upgrades and ancilliary file management. This approach was once considered the holy grail of enterprise software. Many enterprise software companies gave up and decided to build web browser applications just to skirt around this problem. Unfortunately for them, they lost so much functionality and productivity which TriSys still enjoys by using the WinForms paradigm.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          At TriSys, we tackled this problem head-on, resulting is a fully cloud enabled application platform which installs and automatically upgrades native smart-client software onto customer computers for maximum usability, functionality, performance and responsiveness.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1549692520-acc6669e2f0c.jpg" length="365945" type="image/jpeg" />
      <pubDate>Fri, 21 Jun 2013 08:41:11 GMT</pubDate>
      <guid>https://www.trisys.co.uk/build-process</guid>
      <g-custom:tags type="string">software build,compile,automated build,release cycle,visual studio,microsoft .net,vb.net,c#,libraries,ribbons,gui,winforms,windows app,microsoft office,recruitment software,recruitment agency technology</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1549692520-acc6669e2f0c.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1549692520-acc6669e2f0c.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>HTML5 Browser Access to RDP</title>
      <link>https://www.trisys.co.uk/html5-browser-access-to-rdp</link>
      <description>TriSys has now adopted HTML5 as a standard access mechanism to our remote desktop service.
Access from Apple Mac or perhaps an iOS or Android tablet such as an iPad or Nexus.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         The latest standard of the hypertext markup language published by the World Wide Web Consortium (W3C) is called HTML5.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          HTML5 has already been adopted as an industry standard by all popular modern web browsers such as Google Chrome, Apple Safari, Mozilla Firefox and Microsoft Internet Explorer.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys has now adopted HTML5 as a standard access mechanism to our remote desktop service.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This will be particularly appealing to customers who do not have a Windows PC such as an Apple Mac or perhaps an iOS or Android tablet such as an iPad or Nexus, who can from today, connect directly into their remote desktop without the use of any third party software.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This new technology is both convenient and inexpensive - it now comes as part of your monthly subscription, at no extra cost.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          To start using this, simply click the "Connect via Windows Browser" link on the remote desktop page:
          &#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/RDP-Browser-Page-Link-2015.png" alt="A screenshot of a website that says connect via web browser"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         We have some example screenshots of this in action from these newly supported web browsers:
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Apple Mac:
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/RDP-via-Safari-40pc.png" alt="A computer screen with a trisys v10 advertisement on it"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         Chrome:
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/RDP-via-Chrome-40pc.png" alt="A computer screen is open to a website that says trisys"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         Firefox:
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/RDP-via-Firefox-40pc.png" alt="A computer screen with the word insys on it"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         If you currently login to RDP using your desktop shortcut, you can continue to do so as this is unaffected by this new technology.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We hope you enjoy this new and convenient connection mechanism in future.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1493119508027-2b584f234d6c.jpg" length="656002" type="image/jpeg" />
      <pubDate>Tue, 30 Apr 2013 17:47:36 GMT</pubDate>
      <guid>https://www.trisys.co.uk/html5-browser-access-to-rdp</guid>
      <g-custom:tags type="string">HTML5,remote desktop,web browser access,trisys cloud</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1493119508027-2b584f234d6c.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1493119508027-2b584f234d6c.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Recruitment Tools</title>
      <link>https://www.trisys.co.uk/recruitment-tools-blog</link>
      <description>What is defined as a "Recruitment Tool"? Is it the database system they use? Is it Social Media - LinkedIn, Facebook etc.? There are so many but here are a few  "tools" to add extra benefit to recruiters.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         What is defined as a "Recruitment Tool"?  
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Is it the database system they use?  
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Is it Social Media - LinkedIn, Facebook etc.?  
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          There are so many but here are a few  "tools" to add extra benefit to recruiters.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          To help build those LinkedIn networks while you browse try WhoWorks.At a quick and simple plug in.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          HootSuite allows you to manage and measure multiple social networks.  Direct integration from TriSys to Hootsweet is also available for job posting across different social media.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Assignments by HootSuite quickly and easily assign Tweets and Facebook messages within your team.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Google Alerts lets you receive update e-mails based on your queries allowing you to monitor news, competitors or even a little bit of celebrity watching!
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Let me know any other great tools that you may have come across.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1530124566582-a618bc2615dc.jpg" length="174603" type="image/jpeg" />
      <pubDate>Tue, 30 Apr 2013 08:45:19 GMT</pubDate>
      <guid>https://www.trisys.co.uk/recruitment-tools-blog</guid>
      <g-custom:tags type="string">recruiting tools,recruitment tool,social media,linkedin,hootsuite,twitter,facebook,google alerts</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1530124566582-a618bc2615dc.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1530124566582-a618bc2615dc.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Industrial Sabotage - a light hearted tale!</title>
      <link>https://www.trisys.co.uk/industrial-sabotage-a-light-hearted-tale</link>
      <description>A short story about why our automated build failed.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Our developers did another build this evening, but could not wait for it to finish. Instead of locking the PC however, they turned off the monitor of the build machine whilst it was still running. This ought to have been no problem as we have a secure office, in a secure building, manned by security guards.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Upon returning home, and not receiving the automated build e-mail notification, they did a quick sanity check by remotely connecting to the build PC, only to find that the build had failed.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Upon further investigation, it turned out that the office cleaner had wiped the keyboard with a cloth, inadvertently pressing the 'space' bar causing the build to pause. The result was that the build did not complete as planned, no automated e-mail was sent and the software did not automatically upgrade our global network.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We simply un-paused the build and it completed correctly.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Not the most exciting industrial espionage or sabotage I guess we have seen, but nevertheless, a good example of the 'threat from within'.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          In future, we vow to lock our PC's before we go home - honest guv!
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1511954404553-67ad24c63441.jpg" length="237964" type="image/jpeg" />
      <pubDate>Mon, 15 Apr 2013 08:49:02 GMT</pubDate>
      <guid>https://www.trisys.co.uk/industrial-sabotage-a-light-hearted-tale</guid>
      <g-custom:tags type="string">automated build,software,sabotage,espionage,office cleaner,lock pc</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1511954404553-67ad24c63441.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1511954404553-67ad24c63441.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Paradigm Shift Alert!</title>
      <link>https://www.trisys.co.uk/paradigm-shift-alert</link>
      <description>I was recently drawn to revisit some musings by someone I greatly respect in the software development world, Mr Daniel Appleman. Much of what he says resonates with me, as we both cut our teeth on the Microsoft Visual Basic, SQL Server and Windows platforms in the 1990's, having come from different backgrounds prior to that point (mine was in embedded systems programming and Unix/C in academia/research).</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         I was recently drawn to revisit some musings by someone I greatly respect in the software development world, Mr Daniel Appleman. Much of what he says resonates with me, as we both cut our teeth on the Microsoft Visual Basic, SQL Server and Windows platforms in the 1990's, having come from different backgrounds prior to that point (mine was in embedded systems programming and Unix/C in academia/research).
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Dan talks about a 'paradigm shift' with respect to building enterprise line of business (LOB) applications and in particular how Microsoft has continuously re-invented the same technologies it invented in the 90's, making older versions obsolete as required. In my view this is because there are not enough of the younger generation of 'bright young things' who have the foresight and capabilities (time/money) to break free from the established concepts and paradigms.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Many of these new clever developers end up at Microsoft or Google or Facebook etc.. and there is no question that they are great software engineers, however you really need experience to be driving true innovation which changes the world of software development, and these young guys don't have it, obviously.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          I am frankly sick to death of yet another data access technology, forms designer, or markup language, or scripting language or design pattern etc.. Too many of these simply re-invent the same wheel which travels along the same old road. In many cases they fix what was broken, but leave holes where there were none.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          You only have to look around at the complete lack of depth in what was in the 90's called the 4th generation language market (Informix 4GL, Ingres 4GL etc..). These tools provided a much higher level of abstraction than with a traditional 3rd level programming language like C, C++ or even C# and VB/Net, and allowed designers to build entire systems with a back end database, front end screens and reports. Because the 'desktop is dead' according to many commentators, and single page web applications with a complex mixture of markup, styles and scripting frameworks are all the rage, there are very few LOB frameworks comparable to yesteryears 4GL's.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The time is right for a new paradigm - one that capitalises on the innovations in web, cloud and mobile technologies, and provides a more intuitive and lower required skill level for designers/developers, otherwise we are going to have a major shortage of LOB apps and expertise in the coming years.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          I know Dan has a hunch or two about what product(s) may be the answer to these problems, but I have now spent over two decades designing my own sophisticated, rapid application development business framework, and TriSys remains the best I have used so far.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1548691905-57c36cc8d935.jpg" length="64238" type="image/jpeg" />
      <pubDate>Wed, 10 Apr 2013 08:53:06 GMT</pubDate>
      <guid>https://www.trisys.co.uk/paradigm-shift-alert</guid>
      <g-custom:tags type="string">Daniel Appleman,Microsoft Visual Basic,SQL Server,Windows,line of business (LOB) applications,C,C++,C#,VB/Net,Informix 4GL,Ingres 4GL,Unix</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1548691905-57c36cc8d935.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1548691905-57c36cc8d935.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Paging Results In TriSys</title>
      <link>https://www.trisys.co.uk/paging-results-in-trisys</link>
      <description>The grids in TriSys are designed to return information a page at a time.  Paging is designed to speed up the return of results allowing a user to work with large data sets.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Within the TriSys application where a user runs a Look up or Search for certain record types the information is returned as a list within a grid.  
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The grids in TriSys are designed to return information a page at a time.  Paging is designed to speed up the return of results allowing a user to work with large data sets.  
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          In the top left of the results grid the user will see “Page X of Y” followed by the total number of records that match the criteria in the example shown below Page 1 of 12 is displayed with the first 50 rows, the total number records that match the criteria is 597.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/Paged-Grid.png" alt="A screenshot of a computer screen showing a list of people"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         The User can step forwards and backwards through the pages of the results using the forward and back arrows. 
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          On occasions a user requires the full data set in one page such as for mail merging everyone in one go.  NB: Normal e-mail protocol should still be followed to avoid getting reported as SPAM or blocked by e-mail servers.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          To increase the number of rows per page from the Ribbon the user needs to go to Tools&amp;gt;User Options.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/Ribbon-blog.png" alt="A screenshot of a computer screen showing the tools tab"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         Within the User Options select Grid Management click on the dropdown shown to select the number of rows per page that are returned in the results grid.
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/User-Options-blog.png" alt="A screenshot of a computer screen showing grid management"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         It is advisable to close TriSys and reopen it then rerun the Lookup or Search to populate the results grid again.  Having run the same search as earlier notice how the top right of the grid now shows “Page 1 or 1” with the same total of 597 records.
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/Unpaged-Grid-blog.png" alt="A blurred image of a computer screen showing a list of people"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         NB: Removing Paging when working with large datasets is likely to slow the speed at which the results are returned to the grid.
        &#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1564836950107-5f27e818f7bb.jpg" length="214535" type="image/jpeg" />
      <pubDate>Mon, 25 Mar 2013 10:06:34 GMT</pubDate>
      <guid>https://www.trisys.co.uk/paging-results-in-trisys</guid>
      <g-custom:tags type="string">grid paging,trisys crm,large datasets,SQL server,performance,speed,cloud database</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1564836950107-5f27e818f7bb.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1564836950107-5f27e818f7bb.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>More Snow, Pi Revisited And The Death Of Starter Edition</title>
      <link>https://www.trisys.co.uk/more-snow-pi-revisited-and-the-death-of-starter-edition</link>
      <description>When Garry saw the last Pi blog I did, he went out and brought a Pi case.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Hasn't the weather once again challenged us
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Deep snow hit again over the weekend, so I thought I would revisit the Raspberry Pi for a while
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          When Garry saw the last Raspberry Pi blog I did, he went out and brought a Pi case
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/Picase.jpg" alt="A clear case with a raspberry pi inside of it"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         What my altered iPod case did show was the relative size of the Pi
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          And after taking some stick for my tablecloth (Whats wrong with my tablecloth?)
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          I wanted to test with a standard Microsoft Desktop (Tablecloth Not Included)
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/pi-rdp-ControlPanel.jpg" alt="A computer screen with a raspberry on it"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         Windows 2008 R2 Small
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Disclaimer: No Tablecloths were harmed in the making of this blog
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The breaking news over the weekend was the end of life of our Version 10 Starter Edition
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Version 10 starter edition is dead, "Long live Version 10 Starter Editon"
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The developer guys have been hard at work over the last 18 months and Version 10 is now an Enterprise product, and is being released as "Smart Client"
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We will still support our current Version 10 Starter edition customers, however new customers will now get "Version 10 Smart Client".
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Garry's blog explains this :-
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys Version 10 is now available as a 'smart client', which is downloadable and installable on a windows desktop computer, however all data is held in the cloud at either Amazon, Microsoft or Google. TriSys V10 Smart Client is highly integrated with Microsoft Office and performs very responsively, even where broadband speeds are mediocre. No web browser, security restrictions or complex add-ins are required. It just works.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          That explains it in a nutshell.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           For further information and videos on our "Version 10 Smart Client", see:- https://www.trisys.co.uk/
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          To download the trial version click here
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          To view the release notes click here
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Were all excited at the features included in Version 10 Smart Client and we hope you will be too.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1565958011703-44f9829ba187.jpg" length="257256" type="image/jpeg" />
      <pubDate>Mon, 25 Mar 2013 09:59:26 GMT</pubDate>
      <guid>https://www.trisys.co.uk/more-snow-pi-revisited-and-the-death-of-starter-edition</guid>
      <g-custom:tags type="string">raspberry pi,trisys asp,remote desktop,recruitment desktop,trisys crm,recruitment agency software,cheap computer</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1565958011703-44f9829ba187.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1565958011703-44f9829ba187.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Starter Edition is now Smart Client</title>
      <link>https://www.trisys.co.uk/starter-edition-is-now-smart-client</link>
      <description>We are no longer offering TriSys V10 Starter Edition to new customers. Existing customers however will be able to continue to enjoy the starter edition and subscription prices have been frozen.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         We are no longer offering TriSys V10 Starter Edition to new customers. Existing customers however will be able to continue to enjoy the starter edition and subscription prices have been frozen.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Starter edition was first released 18 months ago, and during that time we have continued innovating at a rapid pace and as a result, Version 10 is no longer an entry level recruitment software CRM application, rather it is a sophisticated and extremely powerful enterprise business system.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We recognise that in todays economy, the majority of startup recruitment agencies require a basic, rudimentary, easy to use, non-customisable and most importantly for them, a low cost recruitment system. Whilst the original TriSys starter edition fitted into this model very well indeed, the current offering is now too sophisticated and no longer matches the requirements of one or two man startup recruitment agencies.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Now that Version 10 has evolved into an enterprise capable product with a large and growing customer base demonstrating extensive return on investment (ROI), we are therefore going to focus on recruitment agencies which would most benefit from a comprehensive, powerful, scalable and highly customisable recruitment software system which addresses their sophisticated business model and helps them compete and win in their chosen area of specialisation.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We recognise that there are a small number of startup recruitment agencies who have the ambition and foresight to invest in a comprehensive recruitment system, and it is these customers together with those more established and successful recruitment agencies to which we wish to deliver TriSys Version 10 in future.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys Version 10 is now available as a 'smart client', which is downloadable and installable on a windows desktop computer, however all data is held in the cloud at either Amazon, Microsoft or Google. TriSys V10 Smart Client is highly integrated with Microsoft Office and performs very responsively, even where broadband speeds are mediocre. No web browser, security restrictions or complex add-ins are required. It just works.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We will continue to deliver TriSys both on-premise and on-demand and will be working hard over the next few months to innovate in this space and deliver yet higher levels of customer service by way of both technology products, support and consultancy. In particular we will be offering Version 10 to our existing remote desktop customers via our new universal client access mechanism which will enable customers using Apple Mac, iOS, Android, Windows phone or Blackberry to access their TriSys system from any device in any location.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Please follow our progress on twitter or our V10 release notes in order to understand the amount of innovation we have engineered into V10 over the last 18 months.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1454789415558-bdda08f4eabb.jpg" length="233249" type="image/jpeg" />
      <pubDate>Sat, 23 Mar 2013 10:10:24 GMT</pubDate>
      <guid>https://www.trisys.co.uk/starter-edition-is-now-smart-client</guid>
      <g-custom:tags type="string">trisys crm,recruitment software,v10,starter edition,smart client,.net,windows,desktop,enterprise,recruiting agency technology</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1454789415558-bdda08f4eabb.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1454789415558-bdda08f4eabb.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys Internationalisation</title>
      <link>https://www.trisys.co.uk/trisys-internationalisation</link>
      <description>This month we have tackled internationalisation - the process of adding support for multiple languages worldwide.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         This month we have tackled internationalisation - the process of adding support for multiple languages worldwide.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This is not just about translating text into non-English character strings, it also involves upgrading encryption algorithms, documentation, web services compatibility, social media and of course a lot of testing.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We are currently working with some international clients/prospects and can demonstrate a number of these in our release notes:
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/ChineseLogin.png" alt="A computer screen with a padlock on it"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         We look forward to welcoming more clients from all over the world.
        &#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1521295121783-8a321d551ad2.jpg" length="242915" type="image/jpeg" />
      <pubDate>Thu, 28 Feb 2013 10:13:35 GMT</pubDate>
      <guid>https://www.trisys.co.uk/trisys-internationalisation</guid>
      <g-custom:tags type="string">trisys,crm,recruitment software,international,languages,chinese,login</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1521295121783-8a321d551ad2.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1521295121783-8a321d551ad2.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys-Berry Pi</title>
      <link>https://www.trisys.co.uk/trisys-berry-pi</link>
      <description>Building a Raspberry Pi as a remote desktop for TriSys Recruitment Software.</description>
      <content:encoded>&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/raspberry-pi-logo.png" alt="A raspberry pi logo on a white background"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/PiPod-1.jpg" alt="Two black leather cases are sitting on a white table cloth."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         Which One Is The Raspberry Pi?
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/PiPod-2.jpg" alt="Two cell phones are laying side by side on a table"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         It's The One On The Left
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/PiBasics.jpg" alt="A keyboard a mouse and a raspberry pi are on a table"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         The Basics:- Keyboard, Mouse, HDMI Cable, Network Cable,
         &#xD;
  &lt;div&gt;&#xD;
    
          USB Power Cable, Raspberry Pi, 4gb SD Card
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/PiConnected.jpg" alt="A computer monitor with a raspberry on the screen"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         The End Result:- TriSys Recruitment Software on the Rasberry Pi
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/PiV10-2.jpg" alt="A computer screen with a raspberry pi logo on it"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/1200px-Raspberry_Pi_Logo.svg.png" length="48197" type="image/png" />
      <pubDate>Sat, 16 Feb 2013 10:25:40 GMT</pubDate>
      <guid>https://www.trisys.co.uk/trisys-berry-pi</guid>
      <g-custom:tags type="string">raspberry pi,remote desktop,recruitment software,trisys,hardware,cambridge</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/1200px-Raspberry_Pi_Logo.svg.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/1200px-Raspberry_Pi_Logo.svg.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>New Windows RDP 8 For Windows 8 and Windows 7 SP1</title>
      <link>https://www.trisys.co.uk/new-windows-rdp-8-for-windows-8-and-windows-7-sp1</link>
      <description>Microsoft has released a Remote Desktop Protocol for Windows 8 which is also included in Windows 7 Service Pack 1</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Microsoft has released a Remote Desktop Protocol for Windows 8 which is also included in Windows 7 Service Pack 1
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The "Added Security" introduces a new warning level "A website is trying to start a remote connection" window which tends to override any previous settings.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          If you have configured the TriSys Remote Desktop Login Tool to share local drives, then this new security feature overrides this setting and you must check the box "Drives" for this to still be active.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/RDP8-7.jpg" alt="A computer screen shows a website is trying to start a remote connection"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         Yet another "Security Feature" adding more complexity and button pressing to a simple process.
        &#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1491975474562-1f4e30bc9468.jpg" length="856208" type="image/jpeg" />
      <pubDate>Mon, 28 Jan 2013 10:29:01 GMT</pubDate>
      <guid>https://www.trisys.co.uk/new-windows-rdp-8-for-windows-8-and-windows-7-sp1</guid>
      <g-custom:tags type="string">microsoft,remote desktop,rdp,trisys remote desktop login tool,recruitment software</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1491975474562-1f4e30bc9468.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1491975474562-1f4e30bc9468.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Return of the Mainframe Era</title>
      <link>https://www.trisys.co.uk/return-of-the-mainframe-era</link>
      <description>I have written about this topic before - please click here to read my article published in Recruitment International magazine April 2008 edition. In that article I discussed cloud computing and how things had evolved up to that time.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         I have written about this topic before - please
         &#xD;
  &lt;a href="https://irp-cdn.multiscreensite.com/f3b4d364/files/uploaded/April%202008%20Recruitment%20International%20Article.pdf" target="_blank"&gt;&#xD;
    
          click here
         &#xD;
  &lt;/a&gt;&#xD;
  
         to read my article published in Recruitment International magazine April 2008 edition. In that article I discussed cloud computing and how things had evolved up to that time.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          In this short article, I want to bring things up to date now that almost 5 years have gone by.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          During and after the second world war, the modern computing industry was born with code breaking machines and government sponsored initiatives (culminating in the internet via Darpa in the 80's) . This was followed by commercialisation of big mainframe computers by companies like IBM, Unisys and ICL in the 50's and 60's.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          In the mainframe era, each company manufactured their own hardware and also designed and wrote their own operating system and application software to take advantage of their own hardware. Re-read this sentence - it is important later.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          When the mini-computer industry was born in the 70's with machines like the PDP-11, hardware companies still made their own software such as operating systems, but allowed new 'software companies' to develop application software for these platforms. Software companies wrote applications for a variety of business uses, such as the Oracle database.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          When the micro-computer industry was born in the 80's with the IBM PC kick-starting the industry, hardware companies used operating systems developed by software companies e.g. Digital Research CPM or Microsoft DOS so that these standard operating systems would attract other software companies to develop applications to help attract customers. Lotus was the most successful of these application software companies with their 1-2-3 spreadsheet.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Whilst software companies flourished, Moores law dictated that whilst the power of hardware would double every 18 months, the price would half in that time also. This meant it was very difficult for hardware only companies to be viable as we entered the 21st century.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Couple that with the rise of the internet and subsequent cloud computing, the IT industry was a very different beast to that in the 70's, 80's and 90's.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Now in 2013, Microsoft is rumoured to be buying DELL very soon. A couple of years back, Oracle bought Sun. Both Apple and Google build their own software and hardware.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Given that todays geo-cluster-clouds are comprised of effectively millions of computers, they are the mainframes of today. Millions of users today use the cloud computer mainframes of Google, Amazon, Microsoft, Apple (and soon Oracle).
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          What does this mean? It means that the worlds biggest software companies are going to operate just like the worlds biggest mainframe companies of the 50's and 60's.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          They want us to connect to their hardware and run their operating systems and use their application software.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          They are also manufacturing client-side-devices such as phones, tablets and PC's, which also run their own software.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Who says history does not repeat itself?
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1574027542338-98e75acfd385.jpg" length="175915" type="image/jpeg" />
      <pubDate>Sat, 26 Jan 2013 10:31:48 GMT</pubDate>
      <guid>https://www.trisys.co.uk/return-of-the-mainframe-era</guid>
      <g-custom:tags type="string">mainframe,cloud computing,recruitment international,IBM,Unisys,ICL</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1574027542338-98e75acfd385.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1574027542338-98e75acfd385.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Customise Your Outlook Ribbon To Have What You Use Easily Accessible</title>
      <link>https://www.trisys.co.uk/customise-your-outlook-ribbon-to-have-what-you-use-easily-accessible</link>
      <description>How to guide on customising the ribbon</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         As a TriSys User did you know you can add short cuts to the Home Tab on the Ribbon in Outlook such as the CV Auto Recognition button or the Open Contact Record? This will make it even quicker and easier to pull a CV in to TriSys or open a contact record from an e-mail you have just received:
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/customising-ribbon.png" alt="A blurred image of a page of a website."/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1509024102370-fd7802f4a7a7.jpg" length="350613" type="image/jpeg" />
      <pubDate>Wed, 23 Jan 2013 10:37:54 GMT</pubDate>
      <guid>https://www.trisys.co.uk/customise-your-outlook-ribbon-to-have-what-you-use-easily-accessible</guid>
      <g-custom:tags type="string">trisys,ribbon,customisation,recruitment software,windows desktop</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1509024102370-fd7802f4a7a7.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1509024102370-fd7802f4a7a7.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Tidying Up The "G Drive"</title>
      <link>https://www.trisys.co.uk/tidying-up-the-g-drive</link>
      <description>At this time of year "A Tidy Up" of files can happen with our customers. However, the TriSys application can fail if files or folders are not where they are expected to be after the Tidy up.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         At this time of year "A Tidy Up" of files can happen with our customers. However, the TriSys application can fail if files or folders are not where they are expected to be after the Tidy up.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          These Are Main TriSys Version 7 and Version 8 Folders
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           ActionsV7
          &#xD;
    &lt;/b&gt;&#xD;
    
          Contains Action template files
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           Back Office
          &#xD;
    &lt;/b&gt;&#xD;
    
          Contains Back Office files
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           CVArchive
          &#xD;
    &lt;/b&gt;&#xD;
    
          Contains Archived CVs
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           CVData
          &#xD;
    &lt;/b&gt;&#xD;
    
          Contains all CVs
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           Dashboard
          &#xD;
    &lt;/b&gt;&#xD;
    
          Contains Dashboard files
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           E-Mail
          &#xD;
    &lt;/b&gt;&#xD;
    
          Contains copies of emails processed to TriSys via Outlook
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           Exchange Export
          &#xD;
    &lt;/b&gt;&#xD;
    
          Holds history attachments for emails synchronized to TriSys
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           Formatted CVs
          &#xD;
    &lt;/b&gt;&#xD;
    
          Contains Formatted CV files
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           Help
          &#xD;
    &lt;/b&gt;&#xD;
    
          Contains Help Files
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           Icons
          &#xD;
    &lt;/b&gt;&#xD;
    
          Contains Icon files for TriSys
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           Images
          &#xD;
    &lt;/b&gt;&#xD;
    
          Contains image files
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           Incoming CVs
          &#xD;
    &lt;/b&gt;&#xD;
    
          Folder for Incoming CV Files
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           Ini
          &#xD;
    &lt;/b&gt;&#xD;
    
          Contains login configuration files for TriSys
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           Job Descriptions
          &#xD;
    &lt;/b&gt;&#xD;
    
          Contains any Job Description files
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           Macro
          &#xD;
    &lt;/b&gt;&#xD;
    
          Contains TriSys Word macro files
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           Multimedia
          &#xD;
    &lt;/b&gt;&#xD;
    
          Contains any Multimedia files
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           Setup
          &#xD;
    &lt;/b&gt;&#xD;
    
          Contains TriSys setup files
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           TriSysWeb
          &#xD;
    &lt;/b&gt;&#xD;
    
          Contains email templates for the TriSys web module
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Please do not Move, Remove or Rename any of these folders
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1496128858413-b36217c2ce36.jpg" length="242705" type="image/jpeg" />
      <pubDate>Thu, 20 Dec 2012 10:52:35 GMT</pubDate>
      <guid>https://www.trisys.co.uk/tidying-up-the-g-drive</guid>
      <g-custom:tags type="string">trisys,g drive,folders,files,tidy up,recruitment agencies</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1496128858413-b36217c2ce36.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1496128858413-b36217c2ce36.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys 10 Versions and Release Procedures</title>
      <link>https://www.trisys.co.uk/trisys-10-versions-and-release-procedures</link>
      <description>We are in a very busy period in the transitioning of the new TriSys version 10 recruitment software application from a starter-edition product to an enterprise level service. This blog post explains what we are doing, why and how.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         We are in a very busy period in the transitioning of the new TriSys version 10 recruitment software application from a starter-edition product to an enterprise level service. This blog post explains what we are doing, why and how. It provides further detail to our roadmap which was published in March 2012.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          V10 SDK
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We built the software development kit for version 10 in 2010 and have been enhancing this ever since. It is a full visual studio 2010 toolbox and framework for building .Net cloud based line of business (LOB) windows applications. This SDK is the basis for all version 10 software applications including our CRM application we use in-house for managing our sales &amp;amp; marketing, support ticketing, web site, cloud services, invoicing and accounts integration. We also used this SDK to build starter edition and are using it for enterprise too. Sophisticated recruitment agencies, and partners, are also using our SDK to build complex recruitment products and services.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          V10 Starter Edition
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This product was released to market in 2011 and is designed for startup recruitment agencies who require very basic front-office recruitment software functionality. This is an 'off-the-shelf' software application which is downloaded from the internet and installed on a windows PC. All data services are held in the cloud. The retail price is £50 per user per month. Starter edition is available on-demand only.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          V10 Enterprise Edition
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This product uses the enhanced SDK and starter edition as its core platform, however it is designed for mature recruitment agencies who wish to benefit from a full agency management system to orchestrate their entire recruitment activities from a powerful CRM/ERP packaged service. Enterprise edition is available both on-demand and on-premise. On-demand prices will be between £75 and £150 per user per month depending upon additional services required (e.g. remote desktop, e-mail, additional disk space, 3rd party integration etc..). On-premise pricing will be between £750 and £995 per license. We will be going live with a number of enterprise customers in Q1 2013, after which this product will be officially available to all customers.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          V10 ASP/Remote Desktop
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Existing V8 ASP customers will be able to start using V10 at the end of Q1 2013 when it is made available on TriSys remote desktops. Existing customers with Microsoft Office on their PC are also be able to choose to use the V10 smart client, obviating the need to use RDP, and saving money whilst increasing performance.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          V10 Release Procedure
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We are agressively releasing updates to V10 which are automatically installed on startup. We are documenting all enhancements in our release notes, as well as showing some new features on our YouTube channel. Our approach is to release often; every day during busy periods. Our automated build system ensures that we are able to quickly test enhancements and deliver these to our cloud systems for rapid deployment to our customers. In 2013, this will enable us to support our large customer base as they all transition to V10 from legacy versions of TriSys.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1443304895043-ef30921332c5.jpg" length="574882" type="image/jpeg" />
      <pubDate>Wed, 19 Dec 2012 10:55:32 GMT</pubDate>
      <guid>https://www.trisys.co.uk/trisys-10-versions-and-release-procedures</guid>
      <g-custom:tags type="string">trisys,release procedures,build,starter edition,smart client,enterprise edition</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1443304895043-ef30921332c5.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1443304895043-ef30921332c5.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Traceroute - A Great Diagnostic Tool On Every PC and MAC</title>
      <link>https://www.trisys.co.uk/traceroute-a-great-diagnostic-tool-on-every-pc-and-mac</link>
      <description>Traceroute or “Tracert” is a command line utility that measures the speed and the route that the data takes to a reach a destination server.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Traceroute or “Tracert” is a command line utility that measures the speed and the route that the data takes to a reach a destination server.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Traceroute will send several test data packets to the destination server and will record each router that it goes throughand the time it takes to reach the destination server.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Each router can be owned by a different network provider.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Each router is known as a “Hop” and the data will have to go through many “Hops” on its journey to the destination server.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Traceroute is a useful tool for diagnosing network problems, most often speed issues. 
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          For example, if your remote desktop is slow to respond, then it might mean that there is a network problem somewhere between you and the desktop. 
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Browsing may be fine, but because the amount of traffic flow is substantially different to that of a web browser, and the route taken will be different, this may not be a clear indication that all is well with the line connection to your desktop.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Open a Command Prompt window
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          From your local PC, NOT the remote desktop, open a Command Prompt window to use the “tracert” command.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This is also available for Mac users in the Terminal.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The process is slightly different depending upon which version of Windows you are using.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           Windows Vista and Windows 7
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/start-run.jpg" alt="A computer screen with a search bar that says cmd"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         All other versions of Windows
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Click Start, then Run. A new text box will appear. Enter cmd into this box and click OK.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/run-cmd.jpg" alt="A computer screen that says run type the name of a program folder document or internet resource and windows will open it for you"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;span&gt;&#xD;
    
          Example
         &#xD;
  &lt;/span&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This example will demonstrate how to perform a “tracert” for services.trisysglobal.com and explain the output that you will see.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          To perform a trace open a Command Prompt window as above, and enter the following, and press &amp;lt;enter&amp;gt; on your keyboard.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;b&gt;&#xD;
      
           tracert services.trisysglobal.com
          &#xD;
    &lt;/b&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The trace may take a few moments to complete.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          C:\&amp;gt;tracert services.trisysglobal.com
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Tracing route to services.trisysglobal.com [79.125.118.112]...
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         1    	&amp;lt;1ms   &amp;lt;1ms   &amp;lt;1ms   61.d3.5446.static.theplanet.com [70.84.211.97]
         &#xD;
  &lt;div&gt;&#xD;
    
          2    	20ms   20ms   20ms   po101.dsr02.dllstx5.networklayer.com [70.87.254.5] 
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          3    	19ms   19ms   19ms   po52.dsr02.dllstx3.networklayer.com [70.85.127.109]
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          4    	19ms   19ms   20ms   ae17.bbr02.eq01.dal03.networklayer.com [173.192.18.230]
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          5    	29ms   24ms   25ms   dls-bb1-link.telia.net [80.239.195.177]
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          6    	24ms   21ms   21ms   nyk-bb2-link.telia.net [213.155.130.208]
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          7    	29ms   19ms   19ms   ldn-bb2-link.telia.net [213.155.135.66]
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          8    	22ms   21ms   22ms   dln-b2-link.telia.net [80.91.247.69]
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          9    	25ms   25ms   27ms   amazon-ic-150369-dln-b2.c.telia.net [80.239.167.146]
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          10     32ms   31ms   31ms   [178.236.0.208] 
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          11     33ms   32ms   31ms   [178.236.0.213] 
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          12     33ms   32ms   32ms   ec2-79-125-0-139.eu-west-1.compute.amazonaws [79.125.0.139]
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          13    *   *	*    
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          14    *   *	*
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          15    *   *	*		Request Timed Out
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          16    *   *	*		Request Timed Out
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          What does the output mean?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          There are 5 columns.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
           Hop Count
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
           Three packets of data columns
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
           Name of the router and ipaddress
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          1 &amp;lt;1ms &amp;lt;1ms &amp;lt;1ms   61.d3.5446.static.theplanet.com [70.84.211.97]
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Traceroute will actually send three packets of data, and measure the time taken for each. 
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          At hop 1 you can see that each packet took less than a millisecond, (&amp;lt;1 ms ) This is normally your local network and Internet router. You would expect any packet on your local network to take less than 1 millisecond to reach your router.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          You can see that the server at hop 1 is called 61.d3.5446.static.theplanet.com, and its address on the Internet is 70.84.211.97.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We have seen slowness happen when anything greater than 40-50ms is seen at multiple hops
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          A real customer trace was recently taken recently when slowness on the desktop was seen.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          (Addresses have been removed to protect the customer location)
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Tracing route to services.trisysglobal.com [79.125.118.112] over a maximum of 20 hops: 
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          1    &amp;lt;1 ms    &amp;lt;1 ms    &amp;lt;1 Local.Router 
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          2   303 ms   308 ms   309 ms  
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          3   390 ms   354 ms   367 ms  
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          4   265 ms   375 ms   405 ms  
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          5   384 ms   357 ms   343 ms  
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          6   291 ms   341 ms   411 ms  
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          7   448 ms   549 ms   287 ms 
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          8   123 ms    79 ms   223 ms  
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          9   348 ms   367 ms   373 ms  
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          10   464 ms   495 ms   546 ms  
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          11   408 ms   473 ms   287 ms  
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          12   401 ms   421 ms   435 ms  
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          13   501 ms   585 ms   525 ms  
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          14   309 ms   277 ms   190 ms  
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          15   663 ms   527 ms   372 ms  ec2-79-125-0-4.eu-west-1.compute.amazonaws.com [79.125.0.4] 
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          16     *        *        *     Request timed out.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          17     *        *        *     Request timed out.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          18     *        *        *     Request timed out.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          19     *        *        *     Request timed out.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          20     *        *        *     Request timed out.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          As you can see the 1st hop is the internal router (less than 1 millisecond) and then the lag on each hop indicates a line issue.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
           
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           What does Request timed out mean?
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Hop number 16 onwards shows no response or “Request timed out”
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
           This is because the server at those hops is not accepting Internet Control Message Protocol (ICMP) traffic. As this is what traceroute uses to get the results. 
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          A Request timed out message is usually nothing to worry about, as many network providers may disable ICMP traffic.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
           
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Destination net unreachable
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Traceroute can detect if a packet has been stopped on the network. If this occurs you will see the error Destination net unreachable. This error is often caused by a misconfiguration in someone’s router settings, or an IP address that doesn't exist.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
           
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          You can use “tracert” to diagnose line connection issues by running the command as described above or by downloading our “trace,bat” file, which will run this command and output to a test file for you.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          “http://www.trisys.co.uk/support/documents/downloads/trace.zip”
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Unzip the contents to your LOCAL PC’s desktop NOT TRISYS and run, the output filename is “trace.txt”.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1496757599126-f1c4e20dc15d.jpg" length="509207" type="image/jpeg" />
      <pubDate>Mon, 26 Nov 2012 11:02:31 GMT</pubDate>
      <guid>https://www.trisys.co.uk/traceroute-a-great-diagnostic-tool-on-every-pc-and-mac</guid>
      <g-custom:tags type="string">traceroute,tracert,windows,network,router,packet,terminal</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1496757599126-f1c4e20dc15d.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1496757599126-f1c4e20dc15d.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Announcing the TriSys SDK</title>
      <link>https://www.trisys.co.uk/announcing-the-trisys-sdk</link>
      <description>We began developing the next generation of cloud enabled recruitment software in 2010 - version 10. In the two years since commencing this groundbreaking project, we have completely re-engineered our technology by building a recruitment software development kit (SDK) using the Microsoft .Net Framework as its foundation.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         We began developing the next generation of cloud enabled recruitment software in 2010 - version 10. In the two years since commencing this groundbreaking project, we have completely re-engineered our technology by building a recruitment software development kit (SDK) using the Microsoft .Net Framework as its foundation.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Our SDK is a suite of tools which are completely integrated into Microsoft Visual Studio, and they provide a robust framework to quickly build cloud enabled recruitment software functionality using advanced point and click smart tags. Developers are able to work alongside designers to write business logic code in C# or Visual Basic and use the full intellisense and debugging capabilities of Visual Studio.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The current version of TriSys is actually built using this same SDK. This is the ultimate in 'eating our own dogfood' and we are now making this SDK available to customers and partners to build their own advanced fully cloud enabled recruitment software systems.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Please
          &#xD;
    &lt;a href="/sdk"&gt;&#xD;
      
           click here
          &#xD;
    &lt;/a&gt;&#xD;
    
          to learn more about the TriSys SDK.
          &#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/SDK-Logo.jpg" length="192245" type="image/jpeg" />
      <pubDate>Sun, 25 Nov 2012 11:06:41 GMT</pubDate>
      <guid>https://www.trisys.co.uk/announcing-the-trisys-sdk</guid>
      <g-custom:tags type="string">trisys,sdk,recruitment software,visual studio,winforms,.net,microsoft,windows,sql server,bol,visual basic,c#,enterprise software</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/SDK-Logo.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/SDK-Logo.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Project Apex: Part 10</title>
      <link>https://www.trisys.co.uk/project-apex-part-10</link>
      <description>The last few weeks has seen enormous activity in the web development group, as they tackled ths most challenging aspect of TriSys - providing run-time form designing of complex business forms.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         The last few weeks has seen enormous activity in the web development group, as they tackled ths most challenging aspect of TriSys - providing run-time form designing of complex business forms. Whilst this is a tough enough engineering exercise in a traditional windows application, it is much more difficult to do this in a web browser using HTML, Ajax and CSS.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We started off by utilising multiple nested splitters to allow the designer to draw field regions as shown below:
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/Apex-Part-10.1.png" alt="A computer screen with a t risys logo on it"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         We then progressed to provide draggable and dockable field boxes which could be positioned and docked inside any splitter region:
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/Apex-Part-10.2.png" alt="A screenshot of a computer screen with a few tabs open"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         In order to allow designers to create the splitter layout, we wrote components for splitter design:
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/Apex-Part-10.3.png" alt="A computer screen with a trisys logo on it"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         We are now working on bringing the SDK toolbox into the browser based form designer to allow true drag/drop business form design.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Stay tuned.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;font&gt;&#xD;
      
           UPDATE 2013:
          &#xD;
    &lt;/font&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Apex was put on-hold because browser technology is not yet performant or reliable enough for an industrial strength line of business application - take a look at todays competing browser CRM systems - they simply do not come close to the reliability, speed, extensibility and functionality of TriSys desktop solutions or TriSys delivered as a remote desktop via an HTML5 web browser. It is likely that this project will be resurrected in 2014 when the TriSys Web API and Mobile V2 technologies are completed and browser innovations improve todays issues.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1520500807606-4ac9ae633574.jpg" length="202949" type="image/jpeg" />
      <pubDate>Fri, 19 Oct 2012 10:12:54 GMT</pubDate>
      <guid>https://www.trisys.co.uk/project-apex-part-10</guid>
      <g-custom:tags type="string">trisys apex,recruitment crm,javascript,html,css,form designer,sql server,web api,trisys cloud</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1520500807606-4ac9ae633574.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1520500807606-4ac9ae633574.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>The times, they are a changin'</title>
      <link>https://www.trisys.co.uk/the-times-they-are-a-changin</link>
      <description>We have changed our web site and company branding to reflect our new approach to marketing and delivering our products and services.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         We have changed our web site and company branding to reflect our new approach to marketing and delivering our products and services.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys Business Software has been providing business software to the recruitment industry for 20 years. Our software has matured greatly during this time, and because we have listened to our customers, TriSys has evolved to be much more than traditional customer relationship management. We provide a host of other software products such as applicant tracking systems, mobile apps, web apps, software development kits and application programming interfaces.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          During this time, the world of recruitment has also changed greatly, and we have had to build a range of complementary services to the recruitment industry such as cloud hosted desktops, business analysis, customisation, data conversion, training and of course support.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Social networking provides great opportunities, and threats to recruitment agencies, and TriSys has built software connectors to integrate with all of the major players in this space.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We are thus in future, going to focus on what a modern day recruitment agency requires from a technology supplier. This is simply much more than CRM. We are now offering a comprehensive suite of complementary technology services which will help recruitment agencies tackle the more complex issues of the current and future world of recruitment.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          By taking this approach, we hope to really help our existing and prospective customers to succeed in this changing climate, and to greatly improve the efficiency of your organisation by thinking outside and beyond your perceived current constraints.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We look forward to engaging with you in fulfilling our objectives for your benefit in the coming months.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Please visit our new web site at www.trisys.co.uk
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1548943468-babf66c01664.jpg" length="315916" type="image/jpeg" />
      <pubDate>Thu, 31 May 2012 10:51:30 GMT</pubDate>
      <guid>https://www.trisys.co.uk/the-times-they-are-a-changin</guid>
      <g-custom:tags type="string">trisys recruitment software,trisys web site,technology,cloud</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1548943468-babf66c01664.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1548943468-babf66c01664.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys ASP is now TriSys Remote Desktop</title>
      <link>https://www.trisys.co.uk/trisys-asp-is-now-trisys-remote-desktop</link>
      <description>We are dropping the ASP (application service provider) name and replacing it with Remote Desktop in line with changes of nomenclature within the cloud computing industry.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         The new web site is now live.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We are dropping the ASP (application service provider) name and replacing it with Remote Desktop in line with changes of nomenclature within the cloud computing industry.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          There will be no change to functionality, or price, only the branding of the web access portal.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Here is how it now looks:
          &#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/edited-rdp-1.jpg" alt="A screenshot of a website for trsys remote desktop"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         and here is the post-authentication connection process: 
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/rdp-2.jpg" alt="A screen shot of a website for trisys remote desktop"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         There are a lot of other goodies to show, so stay tuned to other posts by TriSys staff.
        &#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1486312338219-ce68d2c6f44d.jpg" length="183242" type="image/jpeg" />
      <pubDate>Mon, 28 May 2012 10:56:05 GMT</pubDate>
      <guid>https://www.trisys.co.uk/trisys-asp-is-now-trisys-remote-desktop</guid>
      <g-custom:tags type="string">asp,cloud computing,trisys,remote desktop,recruitment technology</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1486312338219-ce68d2c6f44d.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1486312338219-ce68d2c6f44d.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>AWR Contradicting Opinions</title>
      <link>https://www.trisys.co.uk/awr-contradicting-opinions</link>
      <description>The latest Comensura Government Index today shows there was a 15.2% decrease in the use of temporary labour across the public sector in the first quarter of 2012, when compared to the same time in 2011.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         The North East and West Midlands lead the reduction in temporary labour usage in the past year.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The latest Comensura Government Index today shows there was a 15.2% decrease in the use of temporary labour across the public sector in the first quarter of 2012, when compared to the same time in 2011.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The North East saw the biggest drop in temporary recruitment at -127.3% with the West Midlands following close behind (-115.9%). London saw a drop of -25.5% in the use of temporary labour among Local Authorities.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Comensura Government Index shows Local Authorities cut temporary labour usage by 15% as AWR costs rise.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The North East and West Midlands lead the reduction in temporary labour usage in the past year
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The latest Comensura Government Index today shows there was a 15.2% decrease in the use of temporary labour across the public sector in the first quarter of 2012, when compared to the same time in 2011.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The North East saw the biggest drop in temporary recruitment at -127.3% with the West Midlands following close behind (-115.9%). London saw a drop of -25.5% in the use of temporary labour among Local Authorities.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Conversely, the same period also saw an increase in pay rates as a result, in part, to the implementation of the Agency Worker Regulations (AWR). Across the board there was an average 8.9% increase in hourly pay rates.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The Comensura Government Index reflects temporary labour usage across 79 Local Authorities and other public bodies. The Index is compiled by Comensura, specialists in organisational efficiency through the managed supply of people in large organisations across the public, private and not for profit sectors.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The number of temporary workers in driving and transportation roles saw a reduction of -39% along with IT roles (-29.2%) and engineering and technical roles (-26.9). A positive was a 20.5% increase in the number of temporary workers placed in construction roles, which could show some green shoots of recovery for the economy.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Young people suffered the greatest effects of reduced spending by Local Authorities. In the first quarter of 2012 compared to the same period in 2011, the number of 25-34 year-olds employed on a temporary basis decreased by a significant -35.4%.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Whilst both men and women were affected by the reduction in temporary labour, women faired slightly better and now account for 45.3% of all temporary labour, up from 44.9% in the same period in 2011. This was in part due to a lower than expected reduction in the number of office/admin workers, a job category that accounts for almost 20% of all temporary workers and where women represent 70% of all temporary labour.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Jamie Horton, Managing Director, Comensura said today, “The decrease in temporary employment in the North East and West Midlands is reflected within the wider UK employment figures. Local Authorities have made a real and concerted effort to reduce the amount spent on temporary labour.”
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          He continued: “Looking forward, the decrease in usage of temporary labour is expected to continue. Local Authorities and other public bodies are increasingly gaining greater control of expenditure on temporary labour by implementing control methods to manage their expenditure in this area. Whilst there is better planning of workforce needs to ensure resources are spent in the right areas, the numbers of young people joining the workforce should be a concern for local authorities as they plan for the future.”
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The Comensura Government Index shows the usage of temporary labour across 79 of Comensura’s clients in England and Wales during 2011 and 2012. The Comensura Government Index is distributed on a quarterly basis and uses a variety of metrics to measure the usage of temporary labour including Full Time Equivalent (FTE), the reasons for hire, job class, age and gender.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The question we have to ask is are these decreases a direct result of AWR?  Contradicting surveys show differently, to see my previous blog on the effects of AWR click here
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1531482615713-2afd69097998.jpg" length="194347" type="image/jpeg" />
      <pubDate>Thu, 10 May 2012 10:59:49 GMT</pubDate>
      <guid>https://www.trisys.co.uk/awr-contradicting-opinions</guid>
      <g-custom:tags type="string">AWR,labour shortages,recruitment industry,agency working regulations</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1531482615713-2afd69097998.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1531482615713-2afd69097998.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Flashback: Recruitment '94</title>
      <link>https://www.trisys.co.uk/flashback-recruitment-94</link>
      <description>Recently, a jealous competitor questioned TriSys' claim to be the worlds first windows based recruitment software, and therefore by implication our assertion that we lead the recruitment software industry in terms of innovation and direction.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Recently, a jealous competitor questioned TriSys' claim to be the worlds first windows based recruitment software, and therefore by implication our assertion that we lead the recruitment software industry in terms of innovation and direction.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          A trawl of the TriSys archives has revealed the following brochure:
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/Recruitment94%231.gif" alt="Recruitment 94 exhibition and conference guide from 5 &amp;amp; 6 october 1994"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         This is the glossy brochure from the Recruitment '94 exhibition at The Barbican in London.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This is TriSys' listing in this brochure advertising our windows recruitment software:
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/Recruitment94%234.gif" alt="A software services guide for trisys 51 is shown"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         The show was a great success. TriSys was the only product demonstrated at the show to use a monitor with colour! Other products of the day ran traditional 'green screen' monitors which used 80x24 character based terminals and high price Unix servers.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          What is amazing is both the sophistication of the first version of the software and the entry level price of recruitment software which, in 1994 was around £3,000 - a far cry from today, where TriSys Starter-Edition can be purchased for as little as £50 per user per month.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys began developing its windows recruitment software in 1990 and gained its first customers in 1993. Following the Recruitment '94 exhibition, sales of TriSys rocketed as customers moved away from mainframe and minicomputers to a more PC centric client-server architecture.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Please
          &#xD;
    &lt;a href="https://irp-cdn.multiscreensite.com/f3b4d364/files/uploaded/Recruitment%2094%20Brochure.pdf" target="_blank"&gt;&#xD;
      
           click here to view the original brochure
          &#xD;
    &lt;/a&gt;&#xD;
    
          .
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Ah, happy days ;-)
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/recruitment-94-banner.png" length="32953" type="image/png" />
      <pubDate>Mon, 23 Apr 2012 11:10:26 GMT</pubDate>
      <guid>https://www.trisys.co.uk/flashback-recruitment-94</guid>
      <g-custom:tags type="string">recruitment '94,barbican,exhbition,1994,trisys,recruitment software,windows,version 3,crm,search</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/recruitment-94-banner.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/recruitment-94-banner.png">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Week 12 Rights From Day 1?</title>
      <link>https://www.trisys.co.uk/week-12-rights-from-day-1</link>
      <description>Kevin Green, CEO of the Recruitment and Employment Confederation gives his opinion on the latest Xpert HR agency workers survey released today, which found that 65 percent of employers are providing agency workers with the rights they are entitled to after 12 weeks from the first day of their assignments.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Kevin Green, CEO of the Recruitment and Employment Confederation gives his opinion on the latest Xpert HR agency workers survey released today, which found that 65 percent of employers are providing agency workers with the rights they are entitled to after 12 weeks from the first day of their assignments. To see the Xpert HR article click here
         &#xD;
  &lt;div&gt;&#xD;
    
           
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Kevin Green, CEO of the Recruitment and Employment Confederation, said:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
           
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          “It’s really good news for temps that so many employers are deciding to implement equal treatment from day one. It’s good for the worker and it’s good for the business and the agency as it avoids the bureaucracy involved in making changes after waiting 12 weeks.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
           
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          “We think the flexible labour market is here to stay and will continue to expand as businesses see it’s an effective way to align their workforce with demand while keeping themselves competitive. And for the workers, a temporary position is a great stepping stone into more work and permanent employment.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
           
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          “Employers are telling us they plan to use more temporary workers, not fewer. We regularly poll employers about their hiring intentions and as recently as last month, 85 percent said they planned to either maintain or increase their levels of temporary workers over the next three months.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
           
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          “Unfortunately there are some real misconceptions out there about what AWR really means – for workers and employers. It’s the role of recruitment agencies to communicate clearly to clients and candidates what the new rules mean, and how both parties can benefit.”
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1488942446680-85dd7de440ef.jpg" length="631897" type="image/jpeg" />
      <pubDate>Mon, 16 Apr 2012 11:13:40 GMT</pubDate>
      <guid>https://www.trisys.co.uk/week-12-rights-from-day-1</guid>
      <g-custom:tags type="string">AWR,agency worker regulation,kevin green,REC,Recruitment and Employment Confederation,12 weeks,rights</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1488942446680-85dd7de440ef.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1488942446680-85dd7de440ef.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Employers use exclusions to get round agency regulations</title>
      <link>https://www.trisys.co.uk/employers-use-exclusions-to-get-round-agency-regulations</link>
      <description>Around two-thirds of businesses have taken advantage of legal exclusions to lessen the impact of the Agency Workers Regulations (AWR) introduced six months ago, according to a study from law firm Eversheds.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Around two-thirds of businesses have taken advantage of legal exclusions to lessen the impact of the Agency Workers Regulations (AWR) introduced six months ago, according to a study from law firm Eversheds.
         &#xD;
  &lt;div&gt;&#xD;
    
           
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          With the regulations stating that agency workers employed for 12 weeks must be given equal pay and conditions as permanent staff, tactics such as ‘Swedish derogation’ – where the individual is employed directly by the agency – have become increasingly popular. Around 17 per cent of employers have used Swedish derogation, found the survey, while other methods used include taking on a succession of short-term placements or using the services of self-employed people.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
           
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Perhaps because of this, the regulations have not been as costly to employers as many feared, said Richard Sheldon, associate at Eversheds.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
           
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          “Four years ago a very large proportion of respondents to one of our studies (80 per cent) told us that they feared a hike in costs once the regulations took effect,” said Sheldon.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
           
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          "More recent feedback suggests considerably fewer organisations have encountered a rise in their overall UK labour costs although, clearly, some of the impact will have been absorbed – or avoided – in other ways in the long run up to the regulations.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
           
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          “What proved particularly revealing is the extent to which the responses suggest many employers are avoiding the worst of the impact currently, by relying on exclusions from the regulations.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
           
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          "Interestingly, and despite some resistance from trade unions and employee representatives, use of Swedish Derogation Contracts appears wider than was anticipated, possibly as awareness of such contracts has increased.”
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
           
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Previous research had indicated that only 12 per cent of firms were planning to adopt Swedish derogation, so the 17 per cent figure represents a considerable increase, he added. Supermarkets Tesco and Morrisons are among large employers who are using the tactic.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
           
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          There is some evidence that employers are taking on more permanent staff and fewer temps as a result of the regulations. The latest labour market data from the Recruitment and Employment Confederation (REC) found that permanent recruitment is currently growing at a much faster rate than the increase in temporary placements.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
           
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          “Some of the rise in permanent placements appears to stem from employers simply switching temporary workers to permanent status due to the higher entitlements that the Agency Worker Regulations have given them,” commented Ronnie McCombe, partner at KPMG.
          &#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1559056961-a6b61993c0f9.jpg" length="438194" type="image/jpeg" />
      <pubDate>Fri, 13 Apr 2012 11:15:55 GMT</pubDate>
      <guid>https://www.trisys.co.uk/employers-use-exclusions-to-get-round-agency-regulations</guid>
      <g-custom:tags type="string">AWR,Agency Workers Regulations,exclusions,recruitment agency software,trisys crm</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1559056961-a6b61993c0f9.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1559056961-a6b61993c0f9.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Five top reasons why online software is beneficial for start-up companies</title>
      <link>https://www.trisys.co.uk/five-top-reasons-why-online-software-is-beneficial-for-start-up-companies</link>
      <description>When starting any new business no matter the industry or sector the start-up costs are key to everyone, this includes cost of IT hardware, software applications and accessibility of the information you use daily, and all this represents a financial hurdle for start-up’s or even established companies looking to move away from their current IT solutions.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Five top reasons why online software is beneficial for start-up companies
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          When starting any new business no matter the industry or sector the start-up costs are key to everyone, this includes cost of IT hardware, software applications and accessibility of the information you use daily, and all this represents a financial hurdle for start-up’s or even established companies looking to move away from their current IT solutions.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          If you’re a solo person company or multi-site/multi-lingual company you need a solution that will fit your existing needs along with allowing growth to be painless, especially on your pocket!
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Using an online also known as ‘Cloud Computing’ business software you have the freedom of knowing your data is accessible no matter where you are.  This ‘Cloud’ solution is in essence classed as a subscription based service, usually on a per user per month model.  This could range from Hosted E-Mail Systems all the way to bespoke business software solutions, traditionally called Software as a Service (SaaS).
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          For a business application such as TriSys Starter Edition aimed at new start up recruitment agencies you’re investing in £50 per user per month.  At this cost for a 1 user system it allows access to Candidates, Clients, Vacancies, Diary and additional workflow process at the fraction of the cost of traditional locally installed application.  Locally installed application would require additional investment on IT Hardware/Software/Resource etc.. to manage; this is a cost a new start up wants to avoid.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Why go Online for your software you ask…
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          1. You don’t need to invest heavily in IT hardware/software
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Cloud-based applications allow you to control your spend, there is no need to invest in costly IT hardware or worry about application upgrades as new versions are released, as these are included in the subscription model you choose. TriSys’ online solutions vary from £50 per user per month based for a Starter Edition; all the way to a full blown bespoke enterprise solution that will costs as low as £100 per user per month.   The subscription based models can vary from just a simple application that works with the software on your machine or a fully hosted desktop solution that includes all the applications used on a daily basis.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          2. Usability and accessible anywhere
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Storing business information online is as easy as saving it to your computer hard drive. The difference is that it can’t be “lost”. Online services constantly back up and your information on resilient backups along with disaster recovery locations.  These fundamental points allow anyone to have a peace of mind that the data is stored safely ‘Online’ and secure, rather than worrying about your data if your computer/tablet is stolen or catastrophic IT system failure.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          All your business data would be stored and accessible no matter where you are or what device you’re utilising.  It’s your data and it should be available when you need it ‘On Demand’!!
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          3. Working with other people – no matter where they are
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          ‘Cloud’ systems in general allow you to work with your team internally or externally, sharing information no matter where they are or at what time they are working.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Being able to access your data and provide your team with the same information is a must to any business, traditionally if you worked in a different location or was on the road accessing your data couldn’t be any easier with a ‘Cloud’ solution.  TriSys’ application allow your colleagues to be anywhere and have the ability to access the information they need, there and then rather than worrying if it was printed, e-mailed or faxed through.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          4. All your information… All the time!  
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Your information/data is very important to all businesses, if you can’t access it when it’s really required it puts a halt on your processes!  If the data is ‘Cloud’ based this solution will let you progress without any downtime, this is key for those important meetings!
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          All the information/data will be stored securely online, people within the organise will have different permissions allowing them to have more or less access to your data, if you have a new employee you can set them up to have very limited access, however Managers and Senior level personnel would have enhanced access/usability of the online system.  These security/functional features would be setup but the ‘Cloud’ provider and thus allowing you to have confidence once its setup it will ‘just work’, if changes are made based on those features the usual turnaround is minutes rather than hours/day when you may need to ask your IT Resource to make the changes.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          As internet access is available on all mobile devices such as Tables/Laptops/Smartphones you would expect to have similar functionality that you have while at your desk.  When you access your data via any of these devices you know straight away its’ real-time and up-to-date!
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          5. As you grow, it grows
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          “Pay-as-you-go” cloud services are great for businesses that are keen on growing, with the PAYG service you’re only tied into a 28 day contract as you are only paying for the service period.  If you decide to add more people or functionality the costs scale.  You may have some people on the limited access version and others on the feature rich enhanced solution.  These solutions really work with you in growth phases.  With this in mind you will see the total cost up front rather than thinking about the additional over heads that you’ve done in the past.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The subscriptions are always very clear with the ‘Cloud’ products you choose, as easy to say “What you see in what you get”.  Online solutions in general are very transplant with costs.  If there are additional feature that are required they could be service driven that requires human input or automated solutions that requires additional setups.   Either way the prices are always clearly shown.  If in doubt always ask!
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          You’re in control….
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Cloud solutions allow you to control the spend on all aspects of your business, as mentioned above e-mail is key to any business – if you’re down for 1 hour you have lost business, however investing in a great e-mail provider such as Google Business Apps or Microsoft Hosted Exchange you know they are HUGE players in the market they have full resilience and backup in case anything does go wrong.   Database, Applications and a plethora of other online solutions are available and can be purchased and setup within minutes!  As you can see what you’re buying you can control the overall spend!!  Adding services/features/users this can be done with a few changes to your subscription and in minutes too.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys Business Software have been offering ‘Cloud’ based solution for 10 years, from simple application access to full blown hosted desktop environment and applications as your fingertips.  The ‘Cloud’ as a whole lets you grow your business as you see fit, not adding extra complexity or cost.  Empower your colleagues today and invest in ‘Cloud’ solutions and allow your business to grow!
          &#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1485217988980-11786ced9454.jpg" length="322040" type="image/jpeg" />
      <pubDate>Thu, 05 Apr 2012 11:18:53 GMT</pubDate>
      <guid>https://www.trisys.co.uk/five-top-reasons-why-online-software-is-beneficial-for-start-up-companies</guid>
      <g-custom:tags type="string">hosted,recruitment,remote workers,crm,trisys,cloud,recruiting agencies,technology</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1485217988980-11786ced9454.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1485217988980-11786ced9454.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys Everywhere - The Economic Argument</title>
      <link>https://www.trisys.co.uk/trisys-everywhere-the-economic-argument</link>
      <description>This poll proves that the TriSys windows desktop application delivered on a PC or via a secure remote desktop is favoured by 85% of TriSys customers.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         I recently ran a poll on LinkedIn in which I asked all recruiters I know, including all TriSys customers, to choose how they prefer to access TriSys. The results are very interesting:
        &#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/linkedInPoll-032012.gif" alt="A graph showing where people choose their preferred deployment model"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         This poll proves that the TriSys windows desktop application delivered on a PC or via a secure remote desktop is favoured by 85% of TriSys customers.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          These results however do not tell the full story.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Firstly, like all LinkedIn or social network polls, response is usually measured in dozens, rather than thousands which would be a much more representative sample size.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Secondly, we have not over-promoted our mobile or browser offerings to our customer base, rather we have relied on standard non-pushy sales and marketing techniques which our customers tend to prefer.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Finally, tablets are coming, together with a lot more smart phones. The latest research by IDC shows the following: 
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/idc-shipments.jpg" alt="A graph showing worldwide smart connected device shipments from 2010 to 2016"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         Upon first glance it appears that smartphones are taking over the world, but it actually shows that PC and tablet sales are increasing over the next 4 years. Of course it also correctly predicts that most people on the planet will own a smart phone very soon.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The second chart shows this forecast from a different perspective:
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/zdnet-pc-futures.jpg" alt="A graph showing total worldwide desktop pc vs. portable pc shipments"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         In this view, we see that it is laptop PC's in emerging markets which enjoy the greatest growth.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          What does this mean for 'TriSys Everywhere'?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This latest research points the way to a more mobile, and global recruitment industry, whilst retaining the traditional PC and laptop, but augmenting this with many more mobile devices. TriSys will therefore continue to invest in R&amp;amp;D to supply recruiters with powerful, yet very accessible recruitment systems. By everywhere, we simply mean on every device in any location in the world.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Get ready for the future. Thanks for reading.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1488229297570-58520851e868.jpg" length="980310" type="image/jpeg" />
      <pubDate>Fri, 30 Mar 2012 11:32:07 GMT</pubDate>
      <guid>https://www.trisys.co.uk/trisys-everywhere-the-economic-argument</guid>
      <g-custom:tags type="string">windows desktop,cloud computing,trisys crm,recruitment software,app,phone,tablet,ios,android,aws,azure</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1488229297570-58520851e868.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1488229297570-58520851e868.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Big Data</title>
      <link>https://www.trisys.co.uk/big-data</link>
      <description>Every day an increasing amount of information is gathered and stored by all manner of websites, companies, organisations and products.  We record data on everything from weather stations to shopping habits, social media to traffic trends. The volume of this data is growing at an alarming rate as we develop more complex programs for recording data down to the smallest detail for analysis, reporting and business intelligence, and the type of data that we can record is also evolving.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Big Data - the next Big thing..?
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          So what is Big Data?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Every day an increasing amount of information is gathered and stored by all manner of websites, companies, organisations and products.  We record data on everything from weather stations to shopping habits, social media to traffic trends. The volume of this data is growing at an alarming rate as we develop more complex programs for recording data down to the smallest detail for analysis, reporting and business intelligence, and the type of data that we can record is also evolving. 
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Every day, we create 2.5 quintillion bytes of data
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The growing need for "trending" means that not only does an individual customers details now need to be stored, data for all customers is now required to be accessed quickly and analysed as a whole, to find trends and patterns across the whole collection of data whether that be thousands, millions or trillions of values to be analysed
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          90% of the data in the world today has been created in the last two years alone
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Structured/UnStructured Data
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Data now also does not only mean values and figures that can be represented in spread sheets and graphs as previously favoured. "Data" can now be stored as images, documents, emails, text messages, audio, video, etc.. These various data types are commonly known as “non-structured” or “unstructured”, ie: unable to be stored and analysed in a typical relational database.  This is the real issue faced by todays companies, the data they have stored is not able to be analysed in the traditional way, but simply ignoring this data would be foolhardy
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Many organizations are becoming overwhelmed with the volumes of unstructured information — audio, video, graphics, social media messages — that falls outside the purview of their “traditional” databases. Organizations that do get their arms around this data will gain significant competitive edge
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          For example in the past medical records would be held in vast paper files containing Xrays, reports, doctors notes, etc.. Now those Xrays are recorded electronically and can be accessed from a doctors PC without the need for any physical document store.  One hospital will store and record thousands and thousands of Xrays, one hospital group will have millions. Big Data is the means of retrieving this information easily and comparing and analysing this data in a way which has never been possible previously 
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          “We are only looking at what we have in our data warehouses, it’s not going to be enough for us to get the insights that we need. If you’re a retailer and you were not using all the information you could to judge your customers’ buying patterns, then the retailer across the street probably will, and they’ll steal your customers. That’s the realization, I think, that drove a lot of people to think that they should be capturing much, much more” 
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Data Timeline
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The other demand for data is timeliness.  The demand for “real-time” data is increasing, data that is 24 hours or even 1 hour out of date could be the difference between a successful business decision.   The accuracy of the information received often depends on the age of the data analysed, for example a hotel needs up to the minute room allocation data in order to receive new customers.  If this data was 10 minutes old then a room could be allocated twice, or customers turned away when a room is actually available.  For Credit Card companies the ability to recognise fraudulent activity quickly and stop the stolen card saves them many thousands of pounds
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Real-time analytics is the big demand.  The Holy Grail is “getting and making effective use of information as it happens.”  Whoever can crack this will be the forerunner
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          'Data delayed' is 'Data Denied' 
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Velocity – Often time-sensitive, big data must be used as it is streaming in to the enterprise in order to maximize its value to the business 
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          So now we understand that “Big Data” is the means of accessing and analysing large quantities of data regardless of size, format or timestamp
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The next question is how do you compare millions of images to find trends and patterns? Originally in a "structured" database this would not be possible (useable), as a relational database is designed to analyse data, not images. For the latter we need a platform to query "non-structured" or “semi-structured” data.  New technologies are now emerging for the storing and analysing of this large volume structured and non-structured data, but it is still early days
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Platform:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          NoSql (short for Not Only SQL) is the term used to describe non-relational databases that can handle both structured and unstructured data.  There are several contenders for big data databases, some use no SQL at all while others utilise certain areas but avoid joins, etc..
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Contenders:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Apache Cassandra is the most common NoSQL database, as used by Facebook
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Apache Hadoop (to be integrated with SQL Server 2012 – more on this in the next blog)
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          SimpleDB
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Google BigTable
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          MapReduce
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          MemcacheDB
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Voldemort
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          It has been predicted that “Organisations that will leverage the new data types will outperform their peers by 20% by 2015” - If you ignore big data, your competition will not
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Once Big Data takes off the possibilities opened up will create a lot of changes.  New cars fitted with “smart boxes” recording data about your driving could be accessed by Insurance companies, with lower premiums offered to those drivers who can prove they are a safer risk.  Medical data compared for millions of patients to identify high risk groups for certain illnesses or diseases, and tests developed to pick up the warning signs earlier for those most at risk. GPS data analysed to predict traffic volume and flow at peak times, Event data built into our satellite navigation to warn of possible delays. Live streaming from traffic cameras to our iPhones’.  Facebook photos used to identify benefit fraudsters
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The realization that time to information is critical to extract value from data sources that include mobile devices, RFID, the web and a growing list of automated sensory technologies
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1506399309177-3b43e99fead2.jpg" length="391798" type="image/jpeg" />
      <pubDate>Fri, 30 Mar 2012 11:26:36 GMT</pubDate>
      <guid>https://www.trisys.co.uk/big-data</guid>
      <g-custom:tags type="string">Big data,massive data sets,quintillion bytes of data,data farms,sql server,trisys cloud</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1506399309177-3b43e99fead2.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1506399309177-3b43e99fead2.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys Product Portfolio/Roadmap 2012</title>
      <link>https://www.trisys.co.uk/trisys-product-portfolio-roadmap-2012</link>
      <description>I often get asked what our roadmap is for the coming twelve months, and the answer is that it is pretty exciting. Unfortunately, the recruitment software market is ultra-competitive so I am limited in what I can divulge at this time.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         I often get asked what our roadmap is for the coming twelve months, and the answer is that it is pretty exciting. Unfortunately, the recruitment software market is ultra-competitive so I am limited in what I can divulge at this time.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          What I can say is that we have accelerated the rate of adoption of the latest technology in the IT industry and are very much leading edge, if not bleeding edge on a couple of R&amp;amp;D projects.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          To remind readers of our current shipping product/service portfolio, here is the list:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys Version 10 Starter Edition
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This is the latest addition to our portfolio and is a very comprehensive 'smart client' software which installs on any windows PC and connects to the cloud for all data/services. We have loads of videos, our own YouTube channel and you can also download the trial version today.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We will be releasing TriSys v10 Professional and Enterprise versions this year.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys Version 8
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This is our enterprise class recruitment product for agencies, comprising front, mid and back office business functionality to manage the entire recruitment business. TriSys is a feature-rich recruitment software database application which provides state-of-the art Customer Relationship Management (CRM) to recruitment professionals. TriSys delivers advanced searching, reporting, ease of use and sophisticated workflow to aid the orchestration of an efficient recruitment business. TriSys can be delivered either on-premise or on-demand.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys ASP
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys ASP (Application Service Provider) is a fully functional 'TriSys Recruitment Desktop' centrally managed and securely delivered directly to your computer (or hotel, airport etc..) using a standard broadband internet connection. Please click here to view our global network hosted by our tier #1 partners: Amazon, Google and Microsoft.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys Web
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          TriSys Web is a web browser interface to the TriSys recruitment database. It allows candidates to register, build and upload CV's, search for vacancies, apply for jobs on-line, maintain account details and enter timesheet details. Clients can add/maintain vacancies, search for candidates, maintain account details and authorise timesheets. Consultants can access the system to manage the entire recruitment process, even from mobile devices such as phones and tablets.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We will be releasing a new all-singing, all-dancing TriSys Web this year.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys Mobile
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Remote access to corporate information has become a necessity as workers become increasingly mobile. Candidates and clients now expect to be able to interact with recruitment consultants at any time and from any location. It is now a key business requirement for recruiters to be able to access all types of information whilst on the move. TriSys Mobile is the solution to this problem, and provides recruiters with a comprehensive suite of products and services to facilitate 'recruitment on the move'.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We will be releasing a new all-singing, all-dancing TriSys Mobile this year.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Project X
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Rather unimaginatively titled (and nothing to do with what's on at the cinema today) internal code name for our top secret R&amp;amp;D project which will simply blow the minds of both customers, prospects and competitors. Developed in association with our offshore partners in Jordan, Belarus, Pakistan, Argentina and India, this revolutionary new product/service will provide something completely different to the global recruitment industry. We can't wait either! More later.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1529567186287-3e17bdefa342.jpg" length="922507" type="image/jpeg" />
      <pubDate>Tue, 13 Mar 2012 12:35:34 GMT</pubDate>
      <guid>https://www.trisys.co.uk/trisys-product-portfolio-roadmap-2012</guid>
      <g-custom:tags type="string">trisys,roadmap,2012,recruitment software market,crm,recruitment agency</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1529567186287-3e17bdefa342.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1529567186287-3e17bdefa342.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Do You Have Great Employees Or Remarkable Employees?</title>
      <link>https://www.trisys.co.uk/do-you-have-great-employees-or-remarkable-employees</link>
      <description>Great employees are reliable, dependable, proactive, diligent, great leaders and great followers... they possess a wide range of easily-defined—but hard to find—qualities.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Great employees are reliable, dependable, proactive, diligent, great leaders and great followers... they possess a wide range of easily-defined—but hard to find—qualities.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          A few hit the next level. Some employees are remarkable, possessing qualities that may not appear on performance appraisals but nonetheless make a major impact on performance.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Here are eight qualities of remarkable employees:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          1. They ignore job descriptions. The smaller the company, the more important it is that employees can think on their feet, adapt quickly to shifting priorities, and do whatever it takes, regardless of role or position, to get things done.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          When a key customer's project is in jeopardy, remarkable employees know without being told there's a problem and jump in without being asked—even if it's not their job.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          2. They’re eccentric... The best employees are often a little different: quirky, sometimes irreverent, even delighted to be unusual. They seem slightly odd, but in a really good way. Unusual personalities shake things up, make work more fun, and transform a plain-vanilla group into a team with flair and flavor.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          People who aren't afraid to be different naturally stretch boundaries and challenge the status quo, and they often come up with the best ideas.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          3. But they know when to dial it back. An unusual personality is a lot of fun... until it isn't. When a major challenge pops up or a situation gets stressful, the best employees stop expressing their individuality and fit seamlessly into the team.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Remarkable employees know when to play and when to be serious; when to be irreverent and when to conform; and when to challenge and when to back off. It’s a tough balance to strike, but a rare few can walk that fine line with ease.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          4. They publicly praise... Praise from a boss feels good. Praise from a peer feels awesome, especially when you look up to that person.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Remarkable employees recognize the contributions of others, especially in group settings where the impact of their words is even greater.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          5. And they privately complain. We all want employees to bring issues forward, but some problems are better handled in private. Great employees often get more latitude to bring up controversial subjects in a group setting because their performance allows greater freedom.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Remarkable employees come to you before or after a meeting to discuss a sensitive issue, knowing that bringing it up in a group setting could set off a firestorm.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          6. They speak when others won’t. Some employees are hesitant to speak up in meetings. Some are even hesitant to speak up privately.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          An employee once asked me a question about potential layoffs. After the meeting I said to him, “Why did you ask about that? You already know what's going on.” He said, “I do, but a lot of other people don't, and they're afraid to ask. I thought it would help if they heard the answer from you.”
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Remarkable employees have an innate feel for the issues and concerns of those around them, and step up to ask questions or raise important issues when others hesitate.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          7. They like to prove others wrong. Self-motivation often springs from a desire to show that doubters are wrong. The kid without a college degree or the woman who was told she didn't have leadership potential often possess a burning desire to prove other people wrong.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Education, intelligence, talent, and skill are important, but drive is critical. Remarkable employees are driven by something deeper and more personal than just the desire to do a good job.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          8. They’re always fiddling. Some people are rarely satisfied (I mean that in a good way) and are constantly tinkering with something: Reworking a timeline, adjusting a process, tweaking a workflow.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Great employees follow processes. Remarkable employees find ways to make those processes even better, not only because they are expected to… but because they just can't help it.
          &#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1552197717-fdea1c70c5c7.jpg" length="226452" type="image/jpeg" />
      <pubDate>Thu, 01 Mar 2012 12:41:29 GMT</pubDate>
      <guid>https://www.trisys.co.uk/do-you-have-great-employees-or-remarkable-employees</guid>
      <g-custom:tags type="string">great employees,employers,awr,job descriptions,recruiting,recruitment</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1552197717-fdea1c70c5c7.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1552197717-fdea1c70c5c7.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>The History of Enterprise Software</title>
      <link>https://www.trisys.co.uk/the-history-of-enterprise-software</link>
      <description>Software Advice, an online reviewer of ERP software, has published a four-part series on the history of enterprise software.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Software Advice, an online reviewer of ERP software, has published a four-part series on the history of enterprise software. In the series, Lara Zuehlke, Managing Editor at Software Advice, investigates how computing hardware and software evolved from punched cards all the way to the Internet and social applications.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Here’s a link to each of the four parts, with a quick summary of the history each covers.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Part 1: Origins of Modern Computing
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The back story on enterprise software can be traced all the way to the 1700s with punched cards, but computing really got its legs at end of the 19th century when Herman Hollierth founded the company that would eventually become International Business Machines (IBM). From there, mainframes and supercomputers dominated throughout the early to mid 1900s. Further advances led to the birth of new stages in computing: the minicomputer, and the early stages of enterprise software.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Part 2: Minicomputers to the PC
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Advances in circuits, processors and memory allowed computers to shrink from room-sized machines to computers that could fit onto any office desk. While computers became less expensive, they were still too expensive for many personal and business users outside of large enterprises. This changed as minicomputers and personal computers put computing and software into many homes and businesses.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Part 3: Windows to the Web
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Great advances in operating systems – including the graphical user interface (GUI) – allowed for the emergence of the first class of enterprise software applications. Software development was now in full force, and solutions now known as manufacturing resource planning (MRP), enterprise resource planning (ERP), customer relationship management (CRM), and human resources (HR) began deploying in most businesses. The next great development would redefine computing as we knew it, and change how we live today – the Internet.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Part 4: Dotcom to Today
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Thanks to Y2K and the Dotcom Era, IT saw unprecedented growth in the mid-to-late 1990s. Fears of the year 2000 caused many businesses to upgrade their software systems, while the Internet led to a enormous number of new business ventures – many of which would fail after the Dotcom bubble burst. Market consolidation within the industry signaled the end of an era, and the beginning of a new one: the Software as a Service (SaaS) Era. These applications spurred the licensing model and were available on-demand via subscription pricing. Cloud applications, tablet computers and mobile technology are some of the trends leading us right up to the present.
          &#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1504384308090-c894fdcc538d.jpg" length="404910" type="image/jpeg" />
      <pubDate>Thu, 01 Mar 2012 12:38:29 GMT</pubDate>
      <guid>https://www.trisys.co.uk/the-history-of-enterprise-software</guid>
      <g-custom:tags type="string">erp,software,enterprise,crm,trisys,cloud,ibm,oracle,recruitment,technology</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1504384308090-c894fdcc538d.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1504384308090-c894fdcc538d.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Do We Need Training?</title>
      <link>https://www.trisys.co.uk/do-we-need-training</link>
      <description>This is a question that we are asked time and time again when we have an enquiry about our software.  Not just because I have a background in training do I realise the importance of training but because I have seen how differently the rollout of a new software is impacted by proper training.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         This is a question that we are asked time and time again when we have an enquiry about our software.  Not just because I have a background in training do I realise the importance of training but because I have seen how differently the rollout of a new software is impacted by proper training.  Why spent money on the installation, data conversion and hardware and then cut corners on the training? 
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          To get the best out of any recruitment solution it needs to be properly set up to support the business and used consistently by all consultants.  When a software is set up correctly and used consistently the results are much more meaningful and give the business what it needs not just in finding the correct person to fill a job but in the analysis of the business, everything from where leads are coming from to how many CV's need to be sent out to achieve the required revenues down to the individual consultant level.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Business Intelligence is more and more widely talked about and business want to utilise the statistics that can be obtained from this but without training the consultants on how to record information the data you are basing your decisions on may only be half the picture.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Benefits of Training
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Productivity - Training and Development helps in increasing the productivity of the employees that helps the organization further to achieve its long-term goal.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Team spirit - Training and Development helps in inculcating the sense of team work, team spirit, and inter-team collaborations. It helps in inculcating the zeal to learn within the employees.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Organization Culture - Training and Development helps to develop and improve the organizational health culture and effectiveness. It helps in creating the learning culture within the organization.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Organization Climate - Training and Development helps building the positive perception and feeling about the organization. The employees get these feelings from leaders, subordinates, and peers.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Quality - Training and Development helps in improving upon the quality of work and work-life.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Healthy work-environment - Training and Development helps in creating the healthy working environment. It helps to build good employee, relationship so that individual goals aligns with organizational goal.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Health and Safety - Training and Development helps in improving the health and safety of the organization thus preventing obsolescence.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Morale - Training and Development helps in improving the morale of the work force.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Image - Training and Development helps in creating a better corporate image.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Profitability - Training and Development leads to improved profitability and more positive attitudes towards profit orientation.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Training and Development aids in organizational development i.e. Organization gets more effective decision making and problem solving. It helps in understanding and carrying out organisational policies
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Training and Development helps in developing leadership skills, motivation, loyalty, better attitudes, and other aspects that successful workers and managers usually display.
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Training and Development demonstrates a commitment to keeping employees on the cutting edge of knowledge and practice.
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/business-training.jpg" length="56467" type="image/jpeg" />
      <pubDate>Tue, 28 Feb 2012 12:44:08 GMT</pubDate>
      <guid>https://www.trisys.co.uk/do-we-need-training</guid>
      <g-custom:tags type="string">training,technology,software,reasons top train,recruitment training,recruiter teaching,train the trainer</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/business-training.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/business-training.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Exciting Times for Technologists</title>
      <link>https://www.trisys.co.uk/exciting-times-for-technologists</link>
      <description>'May you live in interesting times', or so legend has it, is supposedly an ancient chinese curse. Well, we in the software industry certainly live in interesting times. I believe though that we are not cursed, rather blessed.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         'May you live in interesting times', or so legend has it, is supposedly an ancient chinese curse. Well, we in the software industry certainly live in interesting times. I believe though that we are not cursed, rather blessed. The opportunities for technologists have never been greater. Yes, we have a global recession, and yes, spending in some sectors (including recruitment) is down, but this is balanced by the growth and excitement surrounding new technology. 
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          So what is on the horizon?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          On the mobile front, Google have just relased Android 4 - or Ice Cream Sandwich. This is available on the new Samsung Galaxy Nexus - I have one and it certainly gives the iPhone a very decent run for its money. Having now used iPhone, Windows Phone 7 and Android, I'd give Apple and Google 9 out of 10 and Microsoft 8 out of 10. As for Blackberry/RIM, I couldn't possibly comment.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          On the tablet front, many players are starting to ship Android tablets, including of course Amazon who have launched the Kindle Fire tablet in the USA. Apple will announce the iPad 3 on Wed 07 March 2012. I have an iPad version 1, and it certainly has found a place in my household, although it is not a serious business tool for content creation, but excellent for content consumption and research, although of course it doesn't support Flash so a lot of web movies and clips are not available. Rumours of Office for iPad are also surfacing although Microsoft is strenuously denying press reports.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          On desktops, Microsoft Windows 8 is due in beta next week. We have had the technology preview for a number of months now and the new Metro interface borrowed from Windows Phone 7 is as user friendly as iOS, with a dual-mode of metro/desktop.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Microsoft is also releasing Visual Studio 11 or VS 2012 in the next few months and this promises to have a lot more tools to publish apps to Azure, Windows Phone 7 and Windows 8.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The TriSys roadmap takes all of these developments into consideration, and you can expect to see some really cool and exciting announcements from us in the coming months, so please stay tuned.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1535223289827-42f1e9919769.jpg" length="314492" type="image/jpeg" />
      <pubDate>Fri, 24 Feb 2012 12:46:38 GMT</pubDate>
      <guid>https://www.trisys.co.uk/exciting-times-for-technologists</guid>
      <g-custom:tags type="string">live in interesting times,technology,evangelism,technophobe,recruiting crm,recruitment agency</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1535223289827-42f1e9919769.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1535223289827-42f1e9919769.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Fabio Has Gone But AWR Hasn't</title>
      <link>https://www.trisys.co.uk/fabio-has-gone-but-awr-hasn-t</link>
      <description>Despite rumours prior to AWR starting that there may be last minute changes this did not happen and on the 1st October 2011 the new Agency Workers Regulations came in to force.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Despite rumours prior to AWR starting that there may be last minute changes this did not happen and on the 1st October 2011 the new Agency Workers Regulations came in to force.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          By now we all know what the Agency Workers Regulations are but here's a short summary:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The new Agency Workers Regulations derive from European legislation designed to give temporary agency workers parity in pay and employment conditions as they would have been entitled to had they been recruited by the hirer directly to do the same job.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The New Entitlements are:
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Day 1 rights for all agency workers: If you hire agency workers, you must ensure that they can access your facilities (such as canteen, childcare facilities, etc) and can access information on your job vacancies from the first day of their assignment.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          After 12 weeks in the same job: The equal treatment entitlements relate to pay and other basic working conditions (annual leave, rest breaks etc) and come into effect after an agency worker completes a 12 week qualifying period in the same job with the same hirer. After completing the qualifying period, pregnant agency workers will now be allowed to take paid time off for ante-natal appointments during an assignment.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          It is not retrospective and for those agency workers already on assignment, the 12 week qualifying period will start from 1 October 2011.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          What's happens now?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          As it has now been more than three months since the 1st October 2011 the full provisions of the Agency Workers Regulations are starting to kick in as many worker will have passed the qualifying period and will be entitled to the equal treatments related to pay and other basic working conditions. 
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          What effect is this having?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          According to a poll of recruiters conducted recently almost a third have suggested that clients will terminate contractors and temporary workers early because of AWR. Even without the worry of losing on-going workers there has been an added burden imposed on companies placing contract and temporary workers to gather all the comparison data crucial from the compliance perspective and to keep this up to date. 
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          In contrast to the poll of recruiters figures from the Recruitment and Employment Confederation (REC) appear to refute claims that employers will lay off large numbers of temporary workers.  The December release of the REC's jobs outlook figures shows that 81% of employers plan to either grow their agency workforce or keep it at existing levels. Of those businesses, 31% planned to increase the size of their temporary workforce in the short term, compared with 22% at the same point last year.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Agency Workers Regulations not hitting use of temporary staff full article.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          For the most part we haven't felt anywhere near the impact that many feared, however it is still early days and too soon to say what may come out of the first claims.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          As and when more information comes to light I'll be keeping an eye out and passing it on to you.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/FABIO-capello.jpg" length="248245" type="image/jpeg" />
      <pubDate>Thu, 09 Feb 2012 12:50:46 GMT</pubDate>
      <guid>https://www.trisys.co.uk/fabio-has-gone-but-awr-hasn-t</guid>
      <g-custom:tags type="string">awr,agency worker regulations,fabio cappelo,england manager,italian football,recruitment agency,employee rights</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/FABIO-capello.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/e608f3e6/dms3rep/multi/FABIO-capello.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>ASP.Net Woes</title>
      <link>https://www.trisys.co.uk/asp-net-woes</link>
      <description>So, R&amp;D is involved in deep web browser development utilising our old favourite ASP.Net which we first used to develop TriSys Web over 13 years ago.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         So, R&amp;amp;D is involved in deep web browser development utilising our old favourite ASP.Net which we first used to develop TriSys Web over 13 years ago.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Not a great deal has changed with ASP.Net in that time. We have a new complexity layer called MVC (model, view, controller) for people who need a bigger learning curve to knock up a simple web form, and for people who like wrestling with frameworks - not for the faint hearted. The debugging tools in VS2010 are superb and ASP.Net remains the leader in developing and debugging server based logic.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The client side is a different matter. We have found 10 year old Javascript which we first used in 2002 still relevant today for overcoming some shortfalls. We do not advocate writing CSS or JS generating code in our server side code, as we have seen many others do. We also do not advocate writing more and more business logic in JS on the client, instead rely upon third party vendors server controls to emit the necessary browser independent JS code on the fly. This is however not without many drawbacks, but if you have proper support, it will save considerable time. JQuery has also come along and provides client-side assistance, but is new/cryptic and has a long way to go to mature.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Here is a message to third party ASP.Net/Ajax vendors:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Whilst I appreciate that I can write DIV tags, this is missing the point of using a third party control. The reason we choose to buy ASP.Net/Ajax controls from vendors is so that we DO NOT HAVE to write HTML/CSS. We are application developers, not web designers. We expect the third party controls we use to emit the necessary HTML/JS/CSS on the fly so that we do not have to worry about that.This keeps our code focused on solving the business problems, rather than fighting against browser compatibility issues.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          In an ideal world, I want to 'draw' my interface using the toolbox in VS2010 onto the design (not markup) surface. I want to use smart tags and the property grid to configure it. I want to click into the code behind (C#/VB), NOT markup (HTML/CSS), and write my business logic, then I want to compile and run it and have it open up inside a browser, and work on all browsers. I do not want to have to deal with ANY markup.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Consider the analogy of winforms, or even early SunView (the notifier), or PerQ, or any other highly productive graphical development tool: The developer draws the interface, sets properties and writes code to make it come to life. The programmer did not have to write native Win32 or Unix etc.. low level API's. The toolkit controls did that for him 90% of the time. If he wanted to he could call the native API, but it was not essential. Therefore when I use your controls, I want you to do the HTML/CSS/Browser (in)compatibility thing, not me.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          So, what are we building? Aha, that's top secret, but we'll let you know on this blog first with the first screen shots in March 2012.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Stay tuned.
          &#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1504639725590-34d0984388bd.jpg" length="333154" type="image/jpeg" />
      <pubDate>Wed, 08 Feb 2012 12:53:25 GMT</pubDate>
      <guid>https://www.trisys.co.uk/asp-net-woes</guid>
      <g-custom:tags type="string">asp.net,asp,.net,microsoft,iis,vb.net,c#,web forms,ajax,html,css,javascript</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1504639725590-34d0984388bd.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1504639725590-34d0984388bd.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Recruitment Focus</title>
      <link>https://www.trisys.co.uk/recruitment-focus</link>
      <description>Hello everyone, my name is Joanne Parkin and I will be writing regular posts on the TriSys blog about recruitment.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         Hello everyone, my name is Joanne Parkin and I will be writing regular posts on the TriSys blog about recruitment.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          I will cover a range of topical issues and welcome any feedback readers may have about the subject matter in question.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          As it is the first month of the new year, here are the top 10 predictions in recruitment for 2012:
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;ul&gt;&#xD;
      &lt;li&gt;&#xD;
        
            2012 Will Be “The Year of the Mobile Platform”
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Intense hiring competition will return in selected areas
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Retention issues will increase dramatically
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Social media increases its impact by becoming more data-driven
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Remote work changes everything in talent management
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            The need for speed shifts the balance between development and recruiting
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Employee referrals are coupled with social media
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Employer branding returns
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            The candidate experience is finally getting the attention it deserves
           &#xD;
      &lt;/li&gt;&#xD;
      &lt;li&gt;&#xD;
        
            Forward-looking metrics begin to dominate
           &#xD;
      &lt;/li&gt;&#xD;
    &lt;/ul&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Next week, I will write about the AWR (agency worker regulations), so please subscribe to this blog.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1520694478166-daaaaec95b69.jpg" length="217446" type="image/jpeg" />
      <pubDate>Tue, 31 Jan 2012 12:56:15 GMT</pubDate>
      <guid>https://www.trisys.co.uk/recruitment-focus</guid>
      <g-custom:tags type="string">trisys blog,joanne parkin,predictions,recruitment industry,recruiting,technology</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1520694478166-daaaaec95b69.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1520694478166-daaaaec95b69.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>The New Emperors Clothes - Abuse of Web Technology</title>
      <link>https://www.trisys.co.uk/the-new-emperors-clothes-abuse-of-web-technology</link>
      <description>The inspiration for this blog post was the set of error messages displayed on an arrivals screen at Brighton, England railway station on Sunday 29th January 2012</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  
         The inspiration for this blog post was the following set of error messages displayed on an arrivals screen at Brighton, England railway station on Sunday 29th January 2012:
         &#xD;
  &lt;br/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;a&gt;&#xD;
    &lt;img src="https://irp-cdn.multiscreensite.com/f3b4d364/dms3rep/multi/Brighton-Bus-Station.png" alt="A sign that says bus arrival information on it"/&gt;&#xD;
  &lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  
         What this shows is a broken arrivals computer system which has been completely over, and badly, engineered for the purpose of displaying information about the arrivals of buses to carry train passengers.
         &#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The designers/developers have chosen to build a browser based system with client-side Javascript pulling data asynchronously from a web service. Nothing wrong with that in principal, but for a non-interactive display-only, highly available message board system? I think not, as clearly demonstrated.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          The problems shown here are typical and are spreading like wild fire. People, including customers, project managers, inexperienced technical people, and transport staff, all make the same mistake. They think that the web is all about the browser.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          This mistaken belief is responsible for the rise (and soon fall) of browser oriented technology, where software houses, designers and developers around the globe, have resorted to breaking all the rules of industrial strength software development in the belief that browser technologies are current 'best-practice'.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          What are these current technologies that are not industrial strength?
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Separation of concerns: Client-side script and web services
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Whilst separating display logic from business logic is generally a good principle of software engineering, it is almost impossible to do using the current technologies favoured by the web software development industry today. Client-side code is being implemented in Javascript and is increasingly gaining more and more business logic because changing Javascript is easier that redesigning complex web services. This makes for very unreliable and unmaintainable software, and let us not forget that this business logic is available for all to see.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          And what of the display logic? A mixture of HTML, CSS and JQuery is creating code which is utterly unmaintainable and unmanageable, Throw in the mechanism of dealing with the enormous range of web service protocols, document object models (DOM) etc.. and you have a classic spaghetti dish. This is far from the ideal and history teaches us much about what happens when this is the case.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Lowest common denominator web service protocols
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          We have gone from WSDL and ASMX to REST and WCF. XML is being replaced with JSON because it is smaller in size and gets around some browser string problems, but you have to use JSONP to get around many other limitations. So, we are now passing complex data as strings! We get no benefit from sharing classes or strongly typed objects. Another recipe for disaster.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Proprietary security protocols
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Each browser/web server combination works differently with different security protocols, and oAuth is hard to do properly. You need some good technology on the back end and a good CRM system to manage developer API keys etc.. Web security is always evolving and requires a lot of knowledge, money and time to master. Many projects simply do not have the budget or experienced staff, so instead developers are implementing their own proprietary security mechanisms, resulting in systems which are very fragile and easily hackable.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Development and maintenance tool immaturity
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          For almost thirty years, we have had highly graphical software development tools with more recently intellisense, edit-and-continue, source code analysis tools, memory checkers, garbage collectors etc.. We get almost none of this with Javascript, DOM and JQuery. Developing in these client-side web frameworks is like stepping back in time to a prehistoric age of software development.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Script-kiddie mentality and inexperience
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          Many of the people writing this client-side javascript/jquery/HTML/CSS are young, cheap and inexperienced. They have no concept of industrial strength software design. They do not know or care about reliability or maintenance because they'll be off onto the next job or mountain long before their code catastrophically breaks leaving us with the debris. Good luck to the people who have to fix it under enormous pressure from paying customers, irate investors and frustrated management.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Too much focus on web design at the expense of robustness and reliability
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          If it looks good, it must be good eh? Wrong! Almost all web designers know absolutely nothing about complex business processes and the provision of reliable data to service those essential business activities. Project managers and customers are easily captivated by something which looks sexy. Web designers know this and use it as a shield to hide the mess that lies beneath the surface.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          There are of course many more, but this is a blog-post not a book.
         &#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/div&gt;&#xD;
  &lt;div&gt;&#xD;
    
          In summary, the new emperors clothes do not fit, are badly designed and will be torn to shreds as more and more people will be affected by this madness. Anyone contemplating building line of business (LoB) or safety (or transport) critical web applications using these technologies should really think again, to put it mildly.
         &#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1457305237443-44c3d5a30b89.jpg" length="299921" type="image/jpeg" />
      <pubDate>Mon, 30 Jan 2012 13:01:14 GMT</pubDate>
      <guid>https://www.trisys.co.uk/the-new-emperors-clothes-abuse-of-web-technology</guid>
      <g-custom:tags type="string">xml,ajax,bus terminal,script kiddie,bad design,html,css,javascript</g-custom:tags>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1457305237443-44c3d5a30b89.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp-cdn.multiscreensite.com/md/unsplash/dms3rep/multi/photo-1457305237443-44c3d5a30b89.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>ClientCode Scripting Bible</title>
      <link>https://www.trisys.co.uk/clientcode-scripting-bible</link>
      <description>Client-Code was the successor to TriSys Version 6. It was the first TriSys product to be a generic CRM allowing the development of any industry specific CRM.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Scripting Engine Developer Guide
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Client Code provides very flexible customisability by way of form design, config fields, reports, actions and stored procedures to implement business logic. 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This document provides a programmers guide (bible and tutorial) to scripting which allows developers to perform client based tasks such as validate input, process batch scripts, change screen behaviour etc..
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Prepared by:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Garry Lowther
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ClientCode.com
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Original Draft: September 2000
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Current Version: Monday, 10 October 2005
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Table of Contents
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           1.	Introduction	4
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           2.	Client Code Script Engine Architecture	5
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           3.	CShowForm / CFormObjects	7
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           4.	Client Code Form Events	10
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           5.	Virtual Entities/Forms	11
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           6.	Client Code Object Model	13
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           7.	Example of setting ellipses lookups	15
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           8.	Step by Step Example of Master-Detail Dynamic Grid Handling	16
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           9.	Field Visibility Example Code – How to Use FormFields within ShowForm	21
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           10.	Button Visibility Example Code – How to Use FormButton within ShowForm	22
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           11.	Setting Selected Tab In Script	23
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           12.	Detecting Which Button is Pressed	24
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           13.	Firing an Action Button	25
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           14.	Firing an Action From Script Code	26
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           15.	Validating Action Values	28
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           16.	Creating a Lookup Combo	30
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           17.	Asking the User to Choose from a List	31
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           18.	Using SQL Selection Object	32
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           19.	Modal Virtual Form Interaction	33
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           20.	Action Form Collection Manipulation	36
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           21.	Firing A Report From Script	37
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           22.	Using Classes in VBScript – Object Oriented Programming	38
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           23.	Programming Grid Column/Cell Colours	40
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           24.	Multi-Select Grid Rows	42
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           25.	Launching Core Entity Forms From Script	43
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           26.	Using FileSystemObject in VBScript	44
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           27.	Read all Grid Rows	45
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           28.	External Document Launching	46
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           29.	Global Parameter Value	47
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           30.	Launching E-Mail Client	48
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           31.	Colouring Tabs	49
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           32.	Crystal Report Form Script	50
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           33.	Automating Word	52
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           34.	Updateable Grid for Data Entry	53
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           35.	Programmed Fields Re-Appearing on Record Save	55
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           36.	AddItem Grid Rows	56
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           37.	Unbound Virtual Grid Population	57
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           38.	Refreshing Grids on Other Entity Forms	58
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           39.	Running Mail Merges From Script	59
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           40.	Diagnostics and User Activity Logging for Debugging and Audit Trails	61
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           41.	Closing Action Forms	62
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           42.	Post Code Lookup	63
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           43.	Using Bookmarks in Grids	64
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           44.	Accessing Grid SQL Query Recordset and Cloning	65
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           45.	Unbound Grids - Formatting Columns	66
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           46.	Form_Unload – Preventing form from closing from Script	67
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           47.	Public Sub Form_ExternalRefresh – Catching events in script	68
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           48.	Spin Increments – Setting Visibility from Script	69
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           49.	Report Formulas and Parameters	70
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           50.	Form Timers	72
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           51.	Forcing ExternalRefresh events from Script	73
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           52.	Capturing Main Binder Toolbar Buttons	74
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           53.	Printing Contact Reports from Virtual Forms	75
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           54.	Access System Settings	76
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           55.	Designer Queries in Script	77
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           56.	Setting the Report Destination at run-time from Script	78
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           57.	Intercepting Report Selection Events from Script	80
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           58.	Grid Column Filtering/Sorting for AddItem Grids	81
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           59.	Using CommonDialogue Friendly Function to Find Files	83
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           60.	Form_BeforeDeleteRecord Event	84
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           61.	Form_CoreEntityLookupEvent	85
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           62.	frmEntitySearch Buttons	88
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           63.	Turning Off Virtual Form Menu	89
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           64.	Dynamic Button Pop-Up Menus	90
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           65.	Hiding Tabs in Entity Search and Virtual Forms	91
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           66.	Preventing Entity Search based on Form Permission	92
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           67.	Setting visibility of btnInternet on Internet Field Types	93
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           68.	Setting Script Timeout Globally or for Each Form	94
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           69.	Using the GridAlpha from script	95
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           70.	Setting Field, Button &amp;amp; Tab Visibility from Script	98
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           1.	Introduction
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Client Code has been developed to be as flexible/configurable as possible from both a user, analyst and programmer perspectives. The reasons for this are:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Compete with more established ERP/CRM systems
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Allow easier customisation on-site by analysts
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Closely match clients business processes
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Most of the design goals have been achieved through:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Designer 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Actions
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Reports
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	SQL Server Stored Procedures
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	SQL Server views/triggers/batch jobs etc..
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Client code scripting
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The scripting feature is how we implement a fully programmable client. This allows power users, analysts, implementers etc the opportunity of programming the operation of the client software to perform a multitude of tasks. 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The approach has been to implement support for an industry standard scripting language within Client Code. This document discusses such an implementation.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The goals of scripting integration were as follows:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Use appropriate scripting engine: VBScript, JavaScript or VBA
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Exposure of Client Code object model
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Handle form business logic e.g. Change title to Mrs changes sex to Female.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Field events for validation
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Form events for load/save/validate etc..
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Addition of code behind new widgets (buttons, text, lists etc..) to carry out ad-hoc tasks
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Customisable grids and behaviour
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Virtual entities – new forms
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Ad-hoc saveable scripts to be run from GUI
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Batch scripts to run scheduled
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           2.	Client Code Script Engine Architecture
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This section contains the script engine architecture:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The red boxes are the configurable forms which each have their own CShowForm class (mustard). Each CShowForm has access to a script engine which is owned by the form (because some non config forms do not have an associated CShowForm).
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Each instance of a CScriptEngine (blue) object has access to the global objects (grey) business model hierarchy (discussed below). This contains all of the global objects used by Client Code to access the underlying business data.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In the case of non-config forms, they do not have an associated CShowForm, but still have a script engine to provide the scripting capability and access to the global objects.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Object Hierarchy
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The object hierarchy consists of a collection class (CScriptEngines) together with a CScriptEngine instance for each form which exposes a scripting interface.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The CScriptEngine has access to a collection of underlying form objects which are the text boxes, lists, controls etc on the form.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Each forms underlying CFormObjects collection is accessible from ANY script for ANY form. This exposes the very powerful and flexible underlying Visual Basic Forms engine. This allows any script to access the entire set of forms within the application. An example of use might be when an update to a form needs to update a counter on a master form. See later sections for examples of this.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The CFunctionStatus is the class which is available to VBScript for modifying parameters as it is not possible to modify the function parameters as they are not passed by reference. See later chapter for more detail.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           3.	CShowForm / CFormObjects
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           CShowForm is the class which handles all form processing for each config form (Contact, Company etc..). The changes to CShowForm are necessary to facilitate the event processing of form events. The underlying form may need to be coded with extra widget handling, but most of it can be accommodated from within CShowForm.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           An object model has been constructed which allows access to the following:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Object	Properties	Methods	Events
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Fields	Yes	Yes	Yes
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Buttons	Yes	No	Yes
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Menus	Yes	No	Yes
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Grids	Yes	Yes	Yes
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Tab	Yes	No	Yes
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Form	Yes	Yes	Yes
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Widgets (status bar, caption, width, window state etc..)	Yes		No
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Function (form function)	No	Callable	Yes
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           2 classes exist which are added as an object to the Script Engine instantiated for the form. This provides a simple abstraction to the form fields and widgets from within the script engine to facilitate easy access by the script programmer. It is necessary because CShowForm may not exist on the form if it is a non-config variety.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Class:		CFormObjects
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Properties:	EventControl – the control which has raised the event
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Methods:	FormRef – the Form object 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ShowForm – the CShowForm object for config forms
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           LoadControl – create a new form control and return reference
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Events:		None
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Description:	The collection class for the form objects.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Provides access to all form objects via specific method to differentiate types.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormRef is discussed below.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           CShowForm is also discussed below
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This is accessible from within script as the FormObjectsLocal object.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Class:		FormRef – Object reference to VB Form from CFormObjects
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Properties:	Type		(Field=1, Button=2, Menu=3, Grid=4, Tab=5, Form=6, OtherWidget=7)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Field:		BackColour, ForeColour, Caption, Value, ToolTipText
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Button:	Caption, ToolTipText
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Menu:		Caption, Checked, Visible
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Grid:		Row, ColumnValue, ColumnHeader, CellForeColour, CellBackColour
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Tab:		TabCaption
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Form:		Caption, WindowState, Height, Width
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Methods:	FormWidget (the actual underlying widget on form. Any property can thus be manipulated)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Events:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Field:		Change, Click, DblClick, GotFocus, KeyPress, LostFocus
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Button:	Click
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Menu:		Click
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Grid:		AfterInitialise, DblClick, RowLoaded, DisplayCell, BeforePopulation
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Tab:		Click
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Form:	AfterLoad, AfterLoadRecord, AfterSaveRecord, BeforeSaveRecord, Unload
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Description:	Contains all methods and properties for the script to interact directly with the underlying form characteristics. Can modify field and button properties, process callbacks, grids etc..
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The script for the form and the form design are closely coupled together with this class to provide a fully programmable form.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Class:		CShowForm – Object reference to config fields object from CFormObjects
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Properties:	FormProperties – return object containing detail for form
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           GetFieldWidget(sTableName, sTableFieldName)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           GetFieldDescriptionFromWidgetHwnd – return FieldDescription object from the window handle of the widget.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Methods:	None
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Events:	None
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Description:	Used to access the config forms objects.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           IMPORTANT:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           It is not possible to modify the script function parameters as they are not passed by reference from within Client Code. It is possible to return a value for those functions documented below by using the FunctionStatus object.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Class:		CFunctionStatus – Object reference to parameters list
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Properties:	SetParameter(sParameterName as string, Value as variant)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           GetParameter(sParameterName as string) as variant
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Methods:	AddParameter(sParameterName as string,, Optional Value)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ClearParameters
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Events:		None
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Description:	Exposed to scripting engine as FunctionStatus. This is how the VBScript changes the parameters for passing back to Client Code.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           See examples section for numerous examples.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           4.	Client Code Form Events
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           These events are raised for the specified objects:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             FormObjectEvent_AfterFilter     ' Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             FormObjectEvent_AfterInitialise   ' Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             FormObjectEvent_AfterInsert     ' Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             FormObjectEvent_AfterLoad      ' Form
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             FormObjectEvent_AfterLoadRecord   ' Form
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             FormObjectEvent_AfterNewCompanyContact     ' frmCompany only
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             FormObjectEvent_AfterSaveRecord   ' Form
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             FormObjectEvent_AfterUpdate     ' Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             FormObjectEvent_BeforeDeleteRecord ' Form
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             FormObjectEvent_BeforePopulation  ' Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             FormObjectEvent_BeforePrint     ' Form
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             FormObjectEvent_BeforeSaveRecord  ' Form
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             FormObjectEvent_Change       ' Field
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             FormObjectEvent_Click        ' Button, Field, Menu, Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             FormObjectEvent_CoreEntityLookup  ' Form
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             FormObjectEvent_DblClick      ' Field, Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             FormObjectEvent_DisplayCell     ' Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             FormObjectEvent_ExternalRefresh   ' Form
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             FormObjectEvent_GotFocus      ' Field, Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             FormObjectEvent_KeyPress      ' Field, Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             FormObjectEvent_LostFocus      ' Field, Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             FormObjectEvent_RowLoaded      ' Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             FormObjectEvent_RowSelection    ' Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             FormObjectEvent_Timer        ' Form
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             FormObjectEvent_ToolbarButton    ' Form
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             FormObjectEvent_Unload       ' Form
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           5.	Virtual Entities/Forms
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Designer allows programmers to create ‘virtual entities’. These are defined as ad-hoc forms with no underlying entity. All entity fields would be populated entirely by the scripting object model.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The form can be invoked from anywhere and Designer will allow buttons, fields etc to be added to it with script code behind.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Virtual entities/forms are created in exactly the same manner as normal entities i.e. using the entity builder:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Pressing the New button loads the Entity Builder:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Note that when the Virtual Entity/Form check box is ticked, the Modal Form check box appears, and the Contact Management Links and Entity Links tabs become invisible (they are not of any use).
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Enter the name of your entity and provide a sensible description to help self-document the entity.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If you want the form to be loaded modally, i.e. shown on-top of all other forms, centred on the screen, and has all focus such that the user must complete the form to return to Client Code, then check the Modal Form check box.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Select the Form Details tab. This allows you to set a caption for the form, and to assign an icon for it which will allow it to be available from the main list bar and it will also be shown on the top left of the form when loaded:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           When you save your entity, you will then design the form in the same fashion as other forms, actions and queries. 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The main difference is that there are no fixed fields or reference fields and no default buttons. This is because this is a virtual form i.e. it sits within the Client Code infrastructure but does not have any business logic to read or save from the Client Code object model. The whole idea is that you code this logic entirely through script. This has the main advantage of letting you write your own application rules without having to tweak existing rules.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           When you create config fields in the Designer for virtual forms, no fields are created on the SQL Server database. It is the responsibility of the script developer to write code which will read/write these fields to/from whatever data source is necessary, which f course may not be a SQL Server database.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           When developing script, the standard objects and mechanisms are identical to writing script for other forms, such that virtual form code looks identical to other forms. You can cut &amp;amp; paste code from all parts of the system and re-use global functions etc…
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The method of accessing form fields is the same too, with the table name being the name of the newly created entity + “ConfigFields” which is in keeping with the standard system nomenclature for accessing config fields e.g.:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With FormObjectsLocal.ShowForm
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sForenames = .GetFieldValue("AddContactConfigFields", "Forenames")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sSurname = .GetFieldValue("AddContactConfigFields", "Surname")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           6.	Client Code Object Model
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This section contains detailed documentation of the Client Code Object Model. This object model is split into 2 parts for the purposes of the scripting engine:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Forms Objects – these provide access to the form upon which the scripts are invoked
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Global Objects – these provide access to the global business object model
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Form Objects Examples:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Dim formObjectsfrmMain, formField, formObj
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set formField = FormObjectsLocal.GetFormObjectByName(“Contact”, “Male”)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If formField.formWidget.Value = 1 then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           formField.formWidget.Text = “Man”
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Else
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           formField.formWidget.Text = “Woman”
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End if
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ Access another form using different global collection
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set formObjectsMain = FormObjectsGlobal(“frmMain”)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If not formObjectsMain is nothing then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set formRef = formObjectsMain.FormRef
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           formRef.Caption = “Someone changed sex!”
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End if
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The exposed Client Code Objects are:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Global Object	Description
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Initialisation	UsrCfgUsers table fields for current user + collections of contacts, companies etc..
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Database	The CDatabase object which exposes the methods to access the SQL Server database.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           WordProcessor	Invoke Word automation
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           StringFunctions	String manipulation functions
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MessageBox	Show messages and ask questions of user
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FileSystem	Access the underlying windows file system
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Selection	Select business data e.g. contacts, companies from pop-up dialogue grids
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           DataWidgets	The grid functions to operate upon on-screen grids
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           DbGet	Get standard database functions
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Numbers	General purpose number manipulation
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           CrystalReports	Underlying crystal report related functions not CRPE
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormFunctions	The functions which control Client Code forms
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Diagnostics	Diags.out file access to record own messages to output file
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Miscellaneous	Functions such as auto-dial, load web browser etc..
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ShellExecute	Execute shell functions such as launch e-mail dialogue etc..
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Registry	Access the registry
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           AnimateWait	Show animation dialogue similar to Client Code start up 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ProgressWait	Show progress gauge or tick stages
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           BigInput	Capture any text input from a dialogue box
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ErrorHandling	Standard error handler functions
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MailMerge	Mail merging functions
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           7.	Example of setting ellipses lookups
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterLoad ()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call MakeWidgetEnabled("ContractConfigFields", "TSAuthoriser1", "btnLookupFind", False)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub MakeWidgetEnabled(sTableName, sFieldName, sAssociatedWidgetName, bEnabledFlag)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set widget = FormObjectsLocal.ShowForm.GetFieldWidget((sTableName), (sFieldName))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If Not widget Is Nothing Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With FormObjectsLocal.FormRef.Controls(sAssociatedWidgetName)(widget.index)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .Enabled = False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '.backcolor = vbRed
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           8.	Step by Step Example of Master-Detail Dynamic Grid Handling
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In this example, we create 2 grids using Designer on a form (or action) which are not linked to any entities and write script code to handle the interaction between them.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 1: Open form and create 2 grids in Designer.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call these GridMaster and GridDetail.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 2: Place these on a convenient location like so:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 3: Save form design and test the design. The tab should look as follows:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 4: Open the script editor for this form and paste the following code into the editor:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterLoad ()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call InitialiseGridMaster( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.ShowForm.GetFieldWidget( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "RequirementConfigFields", "GridMaster"))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' The table selection grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub InitialiseGridMaster(dwGrid)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             Dim i
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             If dwGrid Is Nothing Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	MessageBox.appmsg "GridMaster Not found!"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             ' Initialise grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.Columns.RemoveAll
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.DataMode = 2			' Add Item Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.AllowAddNew = False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.AllowUpdate = False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.Caption = "Main Client Code Tables - Select to view details"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.MaxSelectedRows = 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.RecordSelectors = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.SelectTypeRow = 1		'Single Select
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' More settings
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             ' Add columns
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             With DataWidgets
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .AddColumnToGrid (dwGrid), 0, "Table Name", 4000, True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .AddColumnToGrid (dwGrid), 1, "Actual Table Name", 2000, False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             ' Add Rows
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .AddItem "©Contact©,©Contact©"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .AddItem "©Company©,©Company©"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .AddItem "©Placement©,©Contract©"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .AddItem "©Requirement©,©Requirement©"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .AddItem "©Users©,©Users©"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .AddItem "©FieldDescription©,©FieldDescription©"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .AddItem "©FormProperties©,©FormProperties©"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Select first row and fire detail event
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           dwGrid.AddItemBookmark 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call InitialiseGridDetail( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.ShowForm.GetFieldWidget _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ("CompanyConfigFields", "GridDetail"), "Contact")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Grid_RowSelection ()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set fd = FormObjectsLocal.ShowForm. _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           GetFieldDescriptionFromWidgetHwnd (FormObjectsLocal.EventControl.hWnd)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If fd Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If fd.TableFieldName = "GridMaster" Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set dwGrid = FormObjectsLocal.EventControl
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sTableName = dwGrid.Columns(1).Text
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call InitialiseGridDetail(FormObjectsLocal.ShowForm.GetFieldWidget _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ("CompanyConfigFields", "GridDetail"), sTableName)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub InitialiseGridDetail(dwGrid, sTableName)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             Dim i, c
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             If dwGrid Is Nothing Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	MessageBox.appmsg "GridDetail Not found!"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             ' Initialise grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.Columns.RemoveAll
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.DataMode = 2			' Add Item Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.AllowAddNew = False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.AllowUpdate = False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.Caption = "First 10 Rows of Table: " &amp;amp; sTableName
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.MaxSelectedRows = 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.RecordSelectors = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.SelectTypeRow = 1		'Single Select
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.Redraw = False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
             
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           i = 0
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sSQL = "Select Top 10 * From " &amp;amp; sTableName
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	Set rs = Database.OpenRecordset((sSQL))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	Do While Not rs.eof
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             		i = i+1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             		If i = 1 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             ' Add columns
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           For c = 1 to rs.Fields.Count 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	DataWidgets.AddColumnToGrid (dwGrid), c-1, _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           rs.Fields(c-1).Name, 1000, True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Add row to grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sAddItemString = ""
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           For c = 1 to rs.Fields.Count 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If c &amp;gt; 1 Then sAddItemString = sAddItemString &amp;amp; ","
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	sAddItemString = sAddItemString &amp;amp; "©" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           StringFunctions.VBFormat(rs.Fields(c-1).Value, "@") &amp;amp; "©"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           dwGrid.AddItem sAddItemString
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           rs.MoveNext
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             Loop
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             rs.close
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             dwGrid.Redraw = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Grid_DblClick ( Cancel )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set fd = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.ShowForm.GetFieldDescriptionFromWidgetHwnd _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           (FormObjectsLocal.EventControl.hWnd)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If fd Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If fd.TableFieldName = "GridDetail" Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set dwGrid = FormObjectsLocal.EventControl
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sField1 = dwGrid.Columns(0).Text
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MessageBox.appmsg "You double clicked record: " &amp;amp; sField1 &amp;amp; "?"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 5: Edit the script if necessary and replace CompanyConfigFields with the table upon which your created the grids.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 6: Apply the changes and open the Client Code form and it should operate as follows when any row in the grid is selected in the master grid (with either the mouse click or cursor key up/down), the detail grid should show the first 10 records from the table:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The code demonstrates a number of features:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Creation of empty grids with no standard functionality
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Dynamic creation of grid columns
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Grid Event processing: row selection and row drill down
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Master/Detail functionality which can be applied to any database tables
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Speed at which the script engine can interact with the database in real-time
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Flexibility of independence from the Client Code entity builder framework
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           9.	Field Visibility Example Code – How to Use FormFields within ShowForm
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           See Chapter 70 – V2.00.070 onwards for much better method than that described below.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In order to fully address the issue of widget visibility from script, I attach some code which you will find useful.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Here is a technical explanation of the Client Code internal config forms engine:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Each CShowForm class (the run-time FormObjectsLocal.ShowForm object) has a number of child objects.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           One of the objects is CFormField which is an on-form instance of the CFieldDescription class which describes the field.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           By setting the Visible (or Enabled, BackColour, FontSize, ForeColour, Left, Top, Height, Width, ReadOnly, ShowLabel, ToolTipText) property of the CFormField object, you allow CShowForm to treat the field in the way you want it which overrides the form designed attributes.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The example below shows how I have done it for the contact availability date which I do not want to be viisible when the contact is a client.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The SetFieldVisible function can be placed on any form and used accordingly for any field.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Hide/Show controls accordingly
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Sub ProcessContactType()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             ' Determine whether the contact is a client or not
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             bClient = Not FormObjectsLocal.ShowForm.GetFieldValue("Contact", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "ContactTypeCandidate")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             ' Now set the visibility of these fields
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             Call SetFieldVisible("Contact", "AvailabilityDate", Not bClient)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Generic function to set a fields (and labels) visibility
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub SetFieldVisible(sEntityName, sTableFieldName, bVisible)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             Dim objField, objLabel, formField
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             With FormObjectsLocal.ShowForm
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              ' Get the widget and CFormField object for the specified field
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              Set objField = .GetFieldWidget((sEntityName), (sTableFieldName))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              Set formField = .GetFormFieldFromFieldName((sEntityName), (sTableFieldName))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                    
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                    
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' If field found, set visiblity so that CShowForm class knows when to show
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              If Not formField Is Nothing Then formField.Visible = bVisible
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                   
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              ' Make field widget visible/invisible right now without refreshing whole form
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              If Not objField Is Nothing Then objField.Visible = bVisible
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              ' Do control label visibility now too
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              Set objLabel = .GetFieldWidget((sEntityName), (sTableFieldName), 1)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              If Not objLabel Is Nothing Then objLabel.Visible = bVisible
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ----- Original Message ----- 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Sent: 30 January 2001 17:33
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Subject: Request for new facilities
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           &amp;gt; GaRRY,
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           &amp;gt;   There are a couple of things that I need:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           &amp;gt; * When a config form is clicked on, all the controls refresh themselves. If there is any script on the form to modify the controls' appearance, the
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           &amp;gt; changes are lost when the refresh is completed. Can I have a hook to intercept the refresh?
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           &amp;gt; * When selecting a placement to display from the requirement form, the placement form is loaded but the controls are not displayed until the form
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           &amp;gt; is clicked on. Can you investigate this? I can send you an export schema if that will help.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           10.	Button Visibility Example Code – How to Use FormButton within ShowForm
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In order to fully address the issue of button visibility from script, here is some code which you will find useful.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This is very similar to that in the previous chapter, but uses the form buttons collection.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Button_Click
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Not interested in non-config buttons
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           if FormObjectsLocal.EventControl.Name &amp;lt;&amp;gt; "btn" then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set btn = FormObjectsLocal.ShowForm.GetButtonFromIndex("btn", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            FormObjectsLocal.EventControl.Index)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If btn Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Select case btn.ButtonFunction
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Case “The One To Make Invisible”
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call SetButtonVisibility(btn.ButtonFunction, False)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Select
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           See chapter 70 for V2 details on easily setting visibility.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Set the visibility of the specified button.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' This uses the CShowForm class to control the buttons visibility between 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ tab clicks
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Function SetButtonVisibility(sButtonFunction, bVisible)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Get the form button from the CShowForm class
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set formButton = FormObjectsLocal.ShowForm.GetButtonFromFunction( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "btn", (sButtonFunction))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If formButton Is Nothing Then Exit Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Set its visibility
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           formButton.Visible = bVisible
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Now set the current widget instance visibility
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set btnWidget = formButton.FormWidget
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If btnWidget Is Nothing Then Exit Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Only set the visibility if this button is in view
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If FormObjectsLocal.ShowForm.isWidgetVisibleOnCurrentTab(btnWidget.hWnd) Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           btnWidget.Visible = bVisible
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           11.	Setting Selected Tab In Script
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           See Chapter 70 for V2 code.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Developers,
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           To force another tab to get focus on a config form and force redraw of the tab widgets, use the following code
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With FormObjectsLocal.FormRef
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             .Tabby.Tabs(2).Selected = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             .tabby_click
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This performs the same processing as if the user selected the tab with the mouse.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The .tabby_click event corresponds to the Public Sub tabby_Click method of the underlying form (you VB'ers).
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Garry.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           -----Original Message-----
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           From: Matt Jessop [mailto:Mattb@itsquared.com]
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Sent: 29 January 2001 09:52
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           To: 'garry@technical.demon.co.uk'
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Subject: Selecting Tabs
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Garry,
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            I am using the following command to select differrent tabs on a form, it works, but it is not drawing the form objects until you click on the form somewhere.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Me ? or you ?
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            g
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              FormObjectsLocal.FormRef.Tabby.Tabs(2).Selected = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           12.	Detecting Which Button is Pressed
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Create a button using Designer and give it a function name: “TabTest”
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Drop it onto a form.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Write the following script code to catch the button click even for it:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Button_Click()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Not interested in non-config buttons
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           if FormObjectsLocal.EventControl.Name &amp;lt;&amp;gt; "btn" then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set btn = FormObjectsLocal.ShowForm.GetButtonFromIndex(“btn”, _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.EventControl.Index)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If btn is nothing then exit sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If btn.ButtonFunction = “TabTest” Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ Your code for this button in here
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End if
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           13.	Firing an Action Button 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This tiny script allows you to invoke an action from a config form.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Steps to reproduce:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           1.	Create action 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           2.	Create an action button 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           3.	Add the action button to the form 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           4.	Write this code to fire the action associated with the button from script:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Sub YourFunction() 
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             Call FireActionButton("Get In Touch")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub FireActionButton(sActionName)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             Set btn = FormObjectsLocal.ShowForm.GetButtonFromFunction("btn", (sActionName))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             If btn Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             ' Fire the action button
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             btn.FormWidget.Value = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           See next example for more code relating to this.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           14.	Firing an Action From Script Code 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This script allows you to invoke an action from any form using script code alone. 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In the example, a button is created with no link to an action or extension. This is then fired to operate upon the details of an independent script-controlled grid to fire the action using the grid data.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This makes use of an exposed function on the underlying form:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.FormRef.RunFormAction ActionId, ContactId
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Steps to reproduce:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           1.	Follow section above: Step by Step Example of Master-Detail Dynamic Grid Handling in order to create master/detail script controlled grids.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           2.	Create action (or reuse existing action e.g. Note/Call etc…) – Note the ActionId
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           3.	Create a button called RunActionAgainstContactId – do NOT assign to an action.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           4.	Add the button to the form beneath the detail grid.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           5.	Write this code to fire the action associated with the button from script:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Button_Click
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Not interested in non-config buttons
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           if FormObjectsLocal.EventControl.Name &amp;lt;&amp;gt; "btn" then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set btn = FormObjectsLocal.ShowForm.GetButtonFromIndex("btn", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            FormObjectsLocal.EventControl.Index)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If btn Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If btn.ButtonFunction = "RunActionAgainstContactId" Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call RunActionAgainstContactId
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Button clicked to fire an action against the currently selected contact
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub RunActionAgainstContactId
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set dwGrid = FormObjectsLocal.ShowForm.GetFieldWidget( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "CompanyConfigFields", "GridDetail")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If dwGrid Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If instr(dwGrid.Caption, "Contact") = 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MessageBox.AppStopMsg _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "You can only fire this button when contacts are displayed in the grid."
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Get selected contactid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ContactId = CLng(GetGridCellValue(dwGrid, "ContactId"))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'MessageBox.appmsg "Running action against Id: " &amp;amp; ContactId
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' ActionId=32 is Note
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.FormRef.RunFormAction 32, clng(ContactId), 0
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           New: March 18th 2003 – New parameter now available in RunFormAction.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This is a comma delimited string containing ID’s of contacts.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           e.g.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sContactId = “10, 20, 25, 26, 28”
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.FormRef.RunFormAction 32, 0, 0, (sContactId)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This will run the action over the 5 contact id’s listed in the string.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           15.	Validating Action Values
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Example to demonstrate the capturing in script of the on-screen fields
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' in an action so that the action can be prevented from running if all
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' expected fields are not correctly input by the user.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Feb 2001
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Validate input here
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_BeforeSaveRecord ( Id, Cancel )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           bCancel = Not ValidateActionFields
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If bCancel Then FunctionStatus.SetParameter("Cancel") = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Function ValidateActionFields()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Check the candidate Id - must be set when creating a placement
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '	candidateId = FormObjectsLocal.ShowForm.GetFieldValue("ContractPlacement", "CandidateId")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set candidateIdCollection = FormObjectsLocal.Formref.candidateIdCollection
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If candidateIdCollection Is Nothing Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           bCandidateError = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Else
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If candidateIdCollection.count = 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           bCandidateError = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Else
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If clng(candidateIdCollection(1)) = 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           bCandidateError = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If bCandidateError Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MessageBox.AppStopMsg "Please select a candidate for the placement."
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Exit Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Make sure rates are set
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           payRate = cdbl(FormObjectsLocal.ShowForm.GetFieldValue("Requirement", "StandardPayRate"))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If payRate &amp;lt;= 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MessageBox.AppStopMsg "Please enter a valid candidate pay rate."
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Exit Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           chargeRate = cdbl(FormObjectsLocal.ShowForm.GetFieldValue("Requirement", "StandardChargeRate"))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If chargeRate &amp;lt;= 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MessageBox.AppStopMsg "Please enter a valid client charge rate."
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Exit Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Make sure we have valid dates
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           startDate = FormObjectsLocal.ShowForm.GetFieldValue("Requirement", "EarliestStartDate")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If len(startDate) = 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MessageBox.AppStopMsg "Please enter a start date for the placement."
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Exit Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           endDate = FormObjectsLocal.ShowForm.GetFieldValue("Contract", "ContractEndDate")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If len(endDate) = 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MessageBox.AppStopMsg "Please enter an end date for the placement."
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Exit Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' All OK?
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ValidateActionFields = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           16.	Creating a Lookup Combo
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This procedure takes the example of creating a job title combo on the company form and populating it with job titles. This is not possible to do using reference fields.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Steps to reproduce:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           a.	Open Designer for company form and create a new config field called JobTitles.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           b.	This should be of type Lookup, not searchable, and with no values.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           c.	Drop this onto the company form
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           d.	Write the following piece of code into the script editor for the form:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterLoad
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' JobTitles Combo
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call InitialiseJobTitlesCombo _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           (FormObjectsLocal.ShowForm.GetFieldWidget( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           “CompanyConfigFields”, “JobTitles”)) 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ JobTitles Combo
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub InitialiseJobTitlesCombo(cmbJobTitles) 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If cmbJobTitles Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           cmbJobTitles.clear
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MySQL = “Select JobTitle From JobTitle” &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           “ Order by Ordering”
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set rs = Database.OpenRecordset((MySQL))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Do While Not rs.EOF
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sJobTitle = rs(0)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With cmbJobTitles
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .AddItem sJobTitle
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If .ListCount = 1 Then .ListIndex = 0
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           rs.MoveNext
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Loop
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           rs.Close
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The widget on the form should look as follows when run in Client Code:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           17.	Asking the User to Choose from a List
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This procedure shows how to use the internal frmSelection form to offer the user a choice of items in order to choose one.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub SelectionFormTest
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set frmSelection = FormFunctions.GetFormReference("frmSelection")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With frmSelection
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .ClearItems
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .AddItem "1. Do Nowt at " &amp;amp; Now
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .AddItem "2. Do Something at " &amp;amp; Now
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .Caption = "Selection Test"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .label = "Please select any option"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .ShowModal
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If Not .Selected Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MessageBox.AppMsg "You selected '" &amp;amp; .SelectedItem &amp;amp; "' ?"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           For a discussion and examples of using the more sophisticated SQL selection mechanism, see the following section.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           18.	Using SQL Selection Object
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This procedure shows how to use the internal SQL selection object (5.00.063 or later) to pass in a SQL statement, setup grid columns etc and retrieve the selected records from a modal dialogue box.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           It is of use when the you need to offer the user a choice of selecting a range of records from any table or tables in the database.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' This function will allow the user to select a candidate contact from
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' a pop-up and will show the correct priority and type to boot!
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub SQLSelectionFormTest
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set SQLSelection = Selection.GetSelectSQLObject
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With SQLSelection
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .Columns = 6
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .ColWidth(0) = 0
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .ColWidth(1) = 0
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .ColWidth(2) = 0
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .ColWidth(3) = 1500
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .ColWidth(4) = 2000
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .ColWidth(5) = 1200
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .Caption = "Select any Candidate"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .SQL = "Select Top 50 ContactId, Priority, Type, Christian as Forenames, " &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           “Surname, DateOfBirth as 'Date of Birth'" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           " From Contact" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           " Where Contact.Type = 1" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           " Order by Surname, Christian"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .ContactSelection = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .PriorityColumn = 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .TypeColumn = 2
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If Not .Selection Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MessageBox.AppMsg "You selected ContactId:" &amp;amp; .SelectedRecord(1) &amp;amp; " ?"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' SQL selection of any number of placements
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub SQLSelectionPlacement
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set SQLSelection = Selection.GetSelectSQLObject
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With SQLSelection
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .Columns = 4
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .ColWidth(0) = 0
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .ColWidth(1) = 1200
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .ColWidth(2) = 2000
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .ColWidth(3) = 2500
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .Caption = "Select one or more Placements"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .SQL = "Select ContractId, Reference, Company.Name as Company" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ", Christian + ' ' + Surname as Candidate" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           " From Contract, Company, Contact" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           " Where Contract.CompanyId = Company.CompanyId" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           " And Contract.CandidateId = Contact.ContactId" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           " Order by Reference"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .MultipleSelection = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If Not .Selection Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           For i = 1 to .SelectedCount
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If i &amp;gt; 1 Then s = s &amp;amp; ", "
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           s = s &amp;amp; clng(.SelectedRecord(cint(i)))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If len(s) &amp;gt; 0 Then MessageBox.appMsg "You selected " &amp;amp; .SelectedCount &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           " placements: " &amp;amp; s &amp;amp; "?"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Note how you can set up the column widths, specify multiple record selection (using shift/ctrl keys), set caption, assign SQL statement, cater for contact priorities and contact types to allow colours.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           19.	Modal Virtual Form Interaction
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This procedure shows how to use the modal virtual form capability of Client Code (5.00.063 or later) by invoking it from script code to display defaults, validate the data and return the data to the caller.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 1: Create a modal virtual entity
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 2: Design the modal virtual entity form and create data capture fields
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 3: Design the modal virtual entity script code to capture data and validate it
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' On button click - validate input and close if OK
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Button_Click ()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With FormObjectsLocal.showform
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sForenames = .GetFieldValue("AddContactConfigFields", "Forenames")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sSurname = .GetFieldValue("AddContactConfigFields", "Surname")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If len(sForenames) = 0 or len(sSurname) = 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MessageBox.AppStopMsg "Please enter both forenames and surname." &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sForenames &amp;amp; sSurname
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' All OK, then close form using correct exposed method to preserve stacked scripts
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.FormRef.FormUnload
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 4: Create a button on the calling form for the user
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 5: Write code for the button to invoke the modal virtual form, pass in default values and capture validated values from it.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Button_Click
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Not interested in non-config buttons
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           if FormObjectsLocal.EventControl.Name &amp;lt;&amp;gt; "btn" then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set btn = FormObjectsLocal.ShowForm.GetButtonFromIndex("btn", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.EventControl.Index)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If btn Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If btn.ButtonFunction = "AddContact" Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call AddContactButton
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Show a modal virtual entity to capture contact details to add to our grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub AddContactButton
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set dwGrid = FormObjectsLocal.ShowForm.GetFieldWidget("CompanyConfigFields", "GridUpdate")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If dwGrid Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set frmModalForm = FormFunctions.GetFormReference("frmAddContact")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If frmModalForm Is Nothing Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MessageBox.AppStopMsg "Could not find form: frmAddContact"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With frmModalForm
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Send initialisation data in
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .SetFieldValue("Forenames") = StringFunctions.VBFormat(Now, "DDDD DD")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .SetFieldValue("Surname") = StringFunctions.VBFormat(Now, "MMMM YYYY")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Show it
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .ShowModal
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' After modal form is closed, read the values from it
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sForenames = .GetFieldValue("Forenames")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sSurname = .GetFieldValue("Surname")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If len(sForenames) &amp;gt; 0 and len(sSurname) &amp;gt; 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            		dwGrid.AddItem "©" &amp;amp; sForenames &amp;amp; "©,©" &amp;amp; sSurname &amp;amp; "©"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            	End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 6: What it looks like in operation:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 7: This data is then added to the underlying form grid:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           20.	Action Form Collection Manipulation
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This procedure shows how to add a contact to the list of default contacts in an action collection.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           It also demonstrates how to use the FastContactSearch function to pop-up a contact selection dialogue.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Sub Form_AfterLoad
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Dim coll, i, s
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set coll = FormObjectsLocal.formref.ContactIdCollection
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If coll Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If coll.count = 0 Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Add another contact
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ContactId = Selection.FastContactSelection() 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If ContactId = 0 Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Add to collection
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.formref.ContactIdCollection.Add cstr(ContactId)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Show visuals
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.ShowForm.SetFieldValue("CallClient", "ClientContactId") = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "&amp;lt; List: " &amp;amp; FormObjectsLocal.formref.ContactIdCollection.Count &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           " Client Contact records &amp;gt;"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           21.	Firing A Report From Script
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Reports can be easily invoked from the print button or by a new button which is linked to a specific report. This works fine for standard entities or new entities, where all record processing is taken care of when set up in Designer by the forms engine.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If however, a virtual entity has been implemented, or the report requires specific pre-processing (as opposed to writing script inside a report form), then invoking the report from script is the appropriate method.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This section shows how this is done.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 1: Create an entity.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 2: Create a Crystal report which links the tables and configure this in forms designer (see reports design and tutorial document).
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 3: Add a button onto the form, but do not set it up as a report button as it will defeat the object of this example!
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 4: Copy this code into the form script editor. Note how we capture the loaded or saved record id and this is used to create a SQL IN clause which is passed into the PrintReport function of the Initialisation.Reports collection.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Dim m_AdvertisementId		' as Long
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterLoadRecord ( Id )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           m_AdvertisementId = id
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterSaveRecord ( Id )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           m_AdvertisementId = id
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Button_Click
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Not interested in non-config buttons
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           if FormObjectsLocal.EventControl.Name &amp;lt;&amp;gt; "btn" then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set btn = FormObjectsLocal.ShowForm.GetButtonFromIndex _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ("btn", FormObjectsLocal.EventControl.Index)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If btn Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If btn.ButtonFunction = "PrintReportFromScript" Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call PrintReportFromScript
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub PrintReportFromScript
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If m_AdvertisementId &amp;gt; 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Initialisation.Reports.PrintReport "Advert Test.rpt", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "(Advertisement.AdvertisementId = " &amp;amp; m_AdvertisementId &amp;amp; ")"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Please see section 49 on Report Formulas and Script for more detail and examples.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           22.	Using Classes in VBScript – Object Oriented Programming
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           VBScript version 5 is supported in Client Code. This adds sophisticated capabilities to VBScript, namely support for classes. Classes provide programmers with the opportunity to develop fully object oriented code by encapsulating re-usable business logic into a class. The class can be implemented to abstract the complexity of the logic by exposing a neatly designed interface which can be used by the programmer.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The potential of classes is shown in this very simple example:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Create a class inside a global module in Designer :
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This is the code:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Class CTestClass
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private sTestString
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Property Get TestString
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TestString = sTestString
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Property
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Property Let TestString (s)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sTestString = s
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Property
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Class
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The class is called CTestClass (classes should be prefixed by C). The class contains its own private variable calls sTestString which can only be accessed by users of the class using the properties defined.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           There are 2 properties, both called TestString which respectively Get and Set (via the Let operator) the value of the private variable. Private variables cannot be accessed directly by users of the class.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           To see how the class might be used, see the following code:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set m_TestClassObject = New CTestClass
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           m_TestClassObject.TestString = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           StringFunctions.VBFormat(Now, "DD-MMM-YYYY HH:nn:ss")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MessageBox.appmsg "CTestClass.TestString=" &amp;amp; m_TestClassObject.TestString
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The code creates a new instance of CTestClass thus creating an object (the definition of an object in OOP (object oriented programming) is that it is an instance of a class) which exposes all of the properties/functions/subroutines of the class.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Thus in the above example, we assign a value to the TestString property (Let), then display it (Get).
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Clearly the properties can do much more that simply set a value e.g. perform calculations, access the database, send messages etc… 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           When you access the Client Code objects e.g. Database, this is actually an internal (VB6) object which is an instance of the class CDatabase.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           23.	Programming Grid Column/Cell Colours
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The grid is a Sheridan Data Widget. Thus the properties and methods and events for the grid must follow this conventions demonstrated below.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This example processes the Grid_RowLoaded event and colours a contact grid according to the normal contact colours for type and priority, but also colours rows of another grid where the cell is set to a particular value:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           There are examples of how to do this in the ITContract database: Company and Contact forms. Look for Grid_RowLoaded event.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This is how to set the row colours for any grid:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Sub Grid_RowLoaded
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             With FormObjectsLocal.EventControl
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .Columns(2).BackColor = vbRed
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .Columns(2).ForeColor = vbBlue
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           And for a tighter control, you can do this:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Grid_RowLoaded ()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set dwGrid = FormObjectsLocal.EventControl
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If dwGrid Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set fd = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.ShowForm.GetFieldDescriptionFromWidgetHwnd (dwGrid.hWnd)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If fd Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Select Case fd.TableFieldName
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Case "GridDetail"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If instr(dwGrid.Caption, "Contact") &amp;gt; 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             Call DataWidgets.ColourContactPriorities ((dwGrid), _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                   CInt(GetGridCellValue(dwGrid, "Type")), _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                   CInt(GetGridCellValue(dwGrid, "Priority")) )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Case "GridUpdate"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Colour the row with my name in it to blue with yellow text
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sName = GetGridCellValue(dwGrid, "Surname")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If instr(sName, "Lowther") &amp;gt; 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            styleSetName = "Style" &amp;amp; vbYellow &amp;amp; vbBlue
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .StyleSets((styleSetName)).ForeColor = vbYellow
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .StyleSets((styleSetName)).BackColor = vbBlue
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               For i = 0 To .Columns.Count - 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 .Columns(i).CellStyleSet ((styleSetName))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Select
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Function GetGridCellValue(dwGrid, ColumnName)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              For i = 0 to .Columns.Count - 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 If lcase(.columns(i).Caption) = lcase(ColumnName) Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                   GetGridCellValue = .Columns(i).Value
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                   Exit Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This last example uses the knowledge about contact types to colour the grid based upon the users preferences.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           24.	 Multi-Select Grid Rows
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In order to create a grid with multi-select rows, the .SelectTypeRow property must be set to either 2 or 3:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Initialise grid columns
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .Columns.RemoveAll
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.DataMode = 2			' Add Item Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.AllowAddNew = False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.AllowUpdate = False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.Caption = "Placements for " &amp;amp; sSalesOffice
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.MaxSelectedRows = 8
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.RecordSelectors = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.SelectTypeRow = 2		' 1 - single, 2 - multi
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In order to select all highlighted rows into an array, use this code:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             m_NumSelectedPlacementIds = 0
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               ' Multi select - Get in order as appear in grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               For r = 0 To .Rows - 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 bm = .AddItemBookmark(r)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 For i = 0 To dwGrid.SelBookmarks.Count - 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                   If CStr(bm) = CStr(.SelBookmarks(i)) Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                   	m_NumSelectedPlacementIds = m_NumSelectedPlacementIds + 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                   	ReDim Preserve m_SelectedPlacementIds _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           (cint(m_NumSelectedPlacementIds))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                   	m_SelectedPlacementIds(m_NumSelectedPlacementIds) = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           CLng(.Columns(0).cellValue(bm))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                   End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           25.	Launching Core Entity Forms From Script
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If a grid is under script control and the user is permitted to drill down into the underlying record, these functions should be used :
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If FormFunctions.isformloaded("frmPerson") Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set f = FormFunctions.GetAFormInstance("frmPerson", True)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Else
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Load new form then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set f = FormFunctions.LoadFormByName("frmPerson", clng(ContactId), _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "Script Contact")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           f.LoadContactDetails clng(ContactId)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Load entity form using same technique
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If FormFunctions.isformloaded("frmContractorInvoice") Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set f = FormFunctions.GetAFormInstance("frmContractorInvoice")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Else
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Load new form then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set f = FormFunctions. LoadFormByName ("frmContractorInvoice",1, _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "Script ContractorInvoice")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           f.LoadEntityDetails 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Or for new entity forms
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If FormFunctions.isformloaded("frmAdvertisement") Then 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             Set f = FormFunctions.GetAFormInstance("frmAdvertisement")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             f.LoadEntityDetails 0
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             FormFunctions.AddFormToTabView (f), ""
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Else
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             Set f = FormFunctions.LoadFormByName("frmAdvertisement", 0, "New Advert")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           26.	Using FileSystemObject in VBScript
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The file system object component (SCRRUN.DLL) needs to be installed and registered for it to be used in script.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This gives access to the FileSystemObject which exposes many file system features. Search MSDN to find complete list. (“Microsoft Scripting Run-time Library Features”)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This example demonstrates how to use the object from a Client Code VBScript function to get attributes from a folder and file and to copy a single file:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub CopyFileUsingFileSystemObject
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Dim fso, fldr, f
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Set fso = CreateObject("Scripting.FileSystemObject")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            If fso Is Nothing Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            	MessageBox.appstopmsg "Could not instantiate the Scripting.FileSystemObject"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            	Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Set fldr = fso.GetFolder("c:")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            MessageBox.AppMsg "Folder name: " &amp;amp; fldr.Name
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Set f = fso.GetFile("c:\Winnt\ClientCode32.ini")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            MessageBox.AppMsg "Last modified: " &amp;amp; f.DateLastModified
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            ' Copy file
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            fso.CopyFile "c:\winnt\ClientCode32.ini", "c:\temp\Copied.ini"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           27.	Read all Grid Rows
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If a grid is scripted, i.e. one that you have total control over?
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If so it is known as an AddItem grid. Other grid population mechanisms are known as Bound (bound to a SQL recordset) and Unbound (grid calls you back for each row of data it requires). Standard Client Code grids usually use Unbound as they are more efficient.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Scripting currently cannot populate grids using any technique other than AddItem.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This example demonstrates reading a single column from all rows in the grid:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Dim strAdvertIdList, bm  ' Bookmark 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           strAdvertIdList = ""
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             For row = 1 To .Rows
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               bm = .AddItemBookmark(row - 1)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               if len(strAdvertIdList) &amp;gt; 0 then strAdvertIdList = strAdvertIdList &amp;amp; ", "
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               strAdvertIdList = strAdvertIdList &amp;amp; .Columns(0).CellValue(bm) 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           28.	External Document Launching 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           These functions are useful for launching the operating system features to open browsers, e-mail, auto-dial and documents:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Fire E-Mail Client to send mail to recipient Miscellaneous.EMailHotLink(sEMailAddress as String)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Fire Browser to view address 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Miscellaneous.WorldWideWebHotLink(sWWWAddress as String) 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
             
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Play specified .wav file 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Miscellaneous.PlaySound(sWaveFile as String)   
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                 
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Dial specified number using TAPI
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Miscellaneous.AutoDialNumber(sTelNumber as String)     
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Fire Shell Association program
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ShellExecute.OpenThisDoc(hWnd as long, sFilename as string)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In this last function, you will need to pass in the actual window handle.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Do this as follows:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Check if file exists
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           if FileSystem.FileExists(sFilePathAndName) then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             ' Open the specified file.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             ' This function will open word for .DOC's, IE for .jpg, gif etc...,
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             ‘ media player for .mpg etc...
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             ShellExecute.OpenThisDoc FormObjectsLocal.FormRef.hWnd, (sFilePathAndName)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           end if
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           29.	Global Parameter Value
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Each script runs in its own address space for the current form.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The only ways to share variables between forms/scripts is to either communicate through the database (slow/inefficient) or via formobjectsglobal and access form widgets (cumbersome).
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           A neater solution is to have a shared collection of parameters which can be accessed from any script direct into/out of memory.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This is accomplished by a let/get property on the Initialisation object:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Property Let GlobalParameterValue(sParameterName as String, sValue as Variant)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Property Get GlobalParameterValue(sParameterName as String) as Variant
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This is used in the following example:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Assign a variable to the global parameters
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Initialisation.GlobalParameterValue(“PlacementId”) = 100
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           …….
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Retrieve a variable from the global parameters from any form script
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           PlacementId = clng(Initialisation.GlobalParameterValue(“PlacementId”))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           30.	Launching E-Mail Client
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In order to send an e-mail from script, an object reference to the Client CodeEMailGateway.dll must be instantiated. This provides a generic encapsulation of the various e-mail clients and an easy to use set of properties and methods which allow for e-mails to be sent to many recipients with attachments.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This example demonstrates the mechanism:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Sub SendEMail
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Const RecipientTo = 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Const RecipientCC = 2
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Const RecipientBCC = 3
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Const ProtocolMAPI = 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Const ProtocolOutlook = 4
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Const ProtocolMailTo = 5
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Get the e-mail address and attachment to send
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sEMailAddress = FormObjectsLocal.ShowForm.GetFieldValue( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "ReferenceConfigfields", "RefereeEmail")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sAttachment = FormObjectsLocal.ShowForm.GetFieldValue( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "ReferenceConfigfields", "ReferenceRequest")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sCandidateName = FormObjectsLocal.ShowForm.GetFieldValue( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "ReferenceRequest" , "CandidateId")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Get the normal Client Code Email object references from Client CodeEMailGateway.dll
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With EMailGateway
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .NewMessage
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .AddRecipient sEMailAddress, sCandidateName, RecipientTo
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .Subject = "Reference request for " &amp;amp; sCandidateName
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             		.Message = "Please find attached a request for a reference."
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             		.AddAttachment sAttachment
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             		.ShowDialogue = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             		.Send(sErr)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           31.	Colouring Tabs
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           It may be necessary to colour the tabs on data entry forms for data validation or to draw attention to certain tabs or even to satisfy the artistic design tendencies of customers!
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This is how to do this:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           set tab = FormObjectsLocal.FormRef.tabby.Tab(1)    ' First tab
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           with tab
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             ' Set the tab back colour
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             .BackColor = vbRed   ' Or any RGB colour
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             .BackColorSource = 1  ' Important - it can’t work this out on its own!
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             ' Set the tab foreground colour - the text
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             .ForeColor = vbYellow  ' Or any RGB colour
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             .ForeColorSource = 1  ' Important - it can’t work this out on its own!
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           end with
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           32.	Crystal Report Form Script
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           When a report has been designed to have an associated data input form to capture parameters (See Reports Design Document and Tutorial), it is possible (build 5.00.081 or later) to manipulate the complete query before this is passed to the report for execution.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This allows the script developer to manipulate the query and add/remove portions of the SQL query depending upon user input. This example is taken from the report tutorial:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This example demonstrates the mechanism:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' This function is called after the user has requested the print of the report having filled in 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' all on-screen values.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' This is the query from Client Code when invoked:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'Select
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '*
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'From
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' ((Requirement Inner Join Contact Contact On
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'Requirement.ContactId = Contact.ContactId)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'Inner Join Users On
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'Requirement.UserId = Users.UserId)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'Inner Join Company On
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'Requirement.CompanyId = Company.CompanyId
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'Where 1=1 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' And Requirement.RequirementId In 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' (12,13,7,16,90,42,19,48,60,61,64,65,66,70,71,72,88,92,91,6,32,34,14,21) 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Or Requirement.RequirementId In ' (77,10,4,94,96,95,1,39,40,44,68,79,82,83,85,86,87,5,93,11)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'Order By Requirement.Reference ASC
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterSaveRecord ( Id )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'MessageBox.appmsg "Pre Tweak: " &amp;amp; vbcrlf &amp;amp;	ReportProperties.SQLQuery 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Tweak the formula now
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ReportProperties.SQLQuery = RemoveRequirementIdInClause
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Get the input reference
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sReference = FormObjectsLocal.ShowForm.GetFieldValue("RequirementsListConfigFields", "AField")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If len(sReference) &amp;gt; 0 Then 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ReportProperties.SQLQuery = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           AddAndClause("And Requirement.Reference Like '%" &amp;amp; sReference &amp;amp; "%'")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'MessageBox.appmsg "Post Tweak: " &amp;amp; vbcrlf &amp;amp;	ReportProperties.SQLQuery 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Function RemoveRequirementIdInClause()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Dim x, y
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Const AndRequirementIdIn = "And Requirement.RequirementId In ("
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Const OrRequirementIdIn = "Or Requirement.RequirementId In ("
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sFormula = ReportProperties.SQLQuery
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Do While True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           x = instr(sFormula, AndRequirementIdIn)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If x = 0 Then x = instr(sFormula, OrRequirementIdIn)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If x = 0 Then Exit Do
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Now find matching closing bracket
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           y = instr(x, sFormula, ")")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Get pre and post string segments
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sPre = Left(sFormula, x - 1)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sPost = Mid(sFormula, y+1)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Assemble again
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sFormula = sPre &amp;amp; sPost
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Loop
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           RemoveRequirementIdInClause = sFormula
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Function AddAndClause(sAndClause)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Dim sFormula
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sFormula = ReportProperties.SQLQuery
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Find Order by
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           x = instr(sFormula, "Order By")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If x &amp;gt; 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sFormula = Mid(sFormula, 1, x-1) &amp;amp; " " &amp;amp; sAndClause &amp;amp; " " &amp;amp; Mid(sFormula, x)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           AddAndClause = sFormula
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           33.	Automating Word
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Script can access the same word processor classes as used by Client Code. This is exposed through the WordProcessor object as the following example demonstrates:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub WordMagic
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With WordProcessor
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .Initialise False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .OpenFile "D:\CVData\Upload\File1.doc", False, True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             		.AppendFile "D:\CVData\Upload\File2.doc", True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             		.SaveAs "D:\CVData\Upload\" &amp;amp; StringFunctions.VBFormat(Now, _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "YYYYMMMDDhhnnss") &amp;amp; ".rtf"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In the above example, File1 is opened in word and File2 is appended to it. This is then saved as an RTF file with the current date/time stamp.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Other useful functions for automating word are:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub CloseFile(sFileName as String)		‘ Close named file
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Property Get Description() As String		‘ Get name of word processor version
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Property Get GetFileContents() As String	‘ Get unformatted text from open document
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Property Let SetFileContents(s As String)	‘ Set unformatted text in open document
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub HighlightWord(sWord as String)		‘ Highlight word in open document
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub MailMerge(sDataSource as String)	‘ Mail merge current document using data source
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub NewFile()					‘ Open a new document
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub ReplaceInSection(section As Object, sOldWord As String, sNewWord As String)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ Replace old word with new word in named section
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           34.	Updateable Grid for Data Entry
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This section demonstrates how to create an updateable grid and use it for data input purposes:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Create a new field of type Grid called: GridUpdate.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Create a button to retrieve the grid data with button function: GridUpdateButton.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Open script editor to write code to initialise the grid:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Editable grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call InitialiseGridUpdate( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.ShowForm.GetFieldWidget("CompanyConfigFields", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "GridUpdate"))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ….
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' The editable grid which can capture data input and validate it.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Can also allow add new rows if necessary.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub InitialiseGridUpdate(dwGrid)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             Dim i
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             If dwGrid Is Nothing Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	MessageBox.appmsg "GridUpdate Not found!"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             ' Initialise grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.Columns.RemoveAll
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.DataMode = 2			' Add Item Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.AllowAddNew = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.AllowUpdate = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.Caption = "Updateable Grid"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.MaxSelectedRows = 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.RecordSelectors = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.SelectTypeRow = 1		'Single Select
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             ' Add columns
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             With DataWidgets
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .AddColumnToGrid (dwGrid), 0, "Forename(s)", 1500, True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .AddColumnToGrid (dwGrid), 1, "Surname", 1500, True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             ' Add Rows
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .AddItem "©Garry©,©Lowther©"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .AddItem "©Matt©,©Jessop©"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ Capture button click
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If btn.ButtonFunction =	"GridUpdateButton" Then	Call GridUpdateButton
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ….
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Called when the button is pressed to see the data
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub GridUpdateButton
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set dwGrid = FormObjectsLocal.ShowForm.GetFieldWidget( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "CompanyConfigFields", "GridUpdate")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If dwGrid Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             On Error Resume Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               ' Important to force save of existing updated data
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .Update
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               For row = 1 To .Rows
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 bm = .AddItemBookmark(row - 1)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                  
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 If row &amp;gt; 1 Then s = s &amp;amp; VbCrLf
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 For col = 0 To .Columns.Count - 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                   s = s &amp;amp; " " &amp;amp; .Columns(col).cellValue(bm)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             MessageBox.appmsg "Grid contents: " &amp;amp; s &amp;amp; "?"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Now run Client Code and open the form, the initial data should appear as follows:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           You can then type into any row and update the text.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           To add new rows, simply place the cursor into any cell in the row marked with an asterisk and all further rows can be added this way as shown below:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Pressing the Show Data button will show the input data.	 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In order to capture when user is inputting data, write code in the Grid_AfterUpdate event:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           35.	Programmed Fields Re-Appearing on Record Save
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The problem with saving from tabs and causing fields under script control to show incorrectly can be a problem in certain circumstances.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The simple fix is to write code for the form after save record event which will force the first tab into focus, or if this is not acceptable, then the following script sample demonstrates how to cause the tabs to redraw the visible fields so that the fields do not show up:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Called after record has been saved.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterSaveRecord ( Id )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            ' Force a refresh of the currently selected tab so that programmed fields do not 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            ' show up on save when curren tab is not the first.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            With FormObjectsLocal.FormRef
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              selectedIndex = .tabby.selectedtab.index
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              If selectedIndex &amp;lt;&amp;gt; 1 Then 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                .Tabby.Tabs(1).Selected = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                .Tabby.Tabs(selectedIndex).Selected = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                .tabby_click
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           36.	AddItem Grid Rows
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Build 1.00.015 has easy to use functions to add fields and entire recordsets to a grid:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           DataWidgets.AddItem (dwGrid As SSDBGrid, ParamArray FieldList())
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           DataWidgets.AddRecordsetRow (dwGrid As SSDBGrid, rs As Recordset)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           DataWidgets.PopulateGridFromSQLQuery (dwGrid As SSDBGrid, sSQL as String)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           DataWidgets.InitialiseAddItemGrid (dwGrid As SSDBGrid, sCaption as string)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This function is passed the handle to a grid and a list of values for each column:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ Initialise grid columns, SQL etc..
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set rs = Database.OpenRecordset( (sSQL) )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Do while not rs.EOF
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           DataWidgets.AddItem (dwGrid), rs(“ContactId”), rs(“FullName”)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           rs.MoveNext
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Loop
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           rs.Close
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If the recordset contains all possible columns and you do not want to do any field manipulation (formatting, lookups), another function can be used which accepts a recordset:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ Initialise grid columns, SQL etc..
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set rs = Database.OpenRecordset( (sSQL) )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Do while not rs.EOF
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           DataWidgets.AddRecordsetRow (dwGrid), (rs)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           rs.MoveNext
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Loop
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           rs.Close
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Both of these functions remove the need to manipulate strings and field delimiters in order to add a row to a grid.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The ultimate function is PopulateGridFromSQLQuery which requires only a reference to the grid and a SQL statement in order to fully populate itself. It even generates the columns in the grid from the query if none exist.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ Get the top 50 companies ordered by company name
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sSQL = “Select Top 50 * From Company Order by Name”
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           DataWidgets.PopulateGridFromSQLQuery (dwGrid), (sSQL)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This one function call populated the entire grid from a SQL statement.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           A full (very small) example of how to populate a grid created in Designer is:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterLoad()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set dwGrid = FormObjectsLocal.ShowForm.GetFieldWidget( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           “EntityName”, “GridFieldName”)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           if dwGrid is nothing then exit sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With DataWidgets
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .InitialiseAddItemGrid (dwGrid), “Top 50 Contacts”
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .PopulateGridFromSQLQuery (dwGrid), “Select top 50 * From Contact”
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           37.	Unbound Virtual Grid Population
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Build 1.00.015 has easy to use functions to bind a SQL statement to a grid to provide:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Virtual unbound recordsets – the data is demand paged from the server
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Sortable columns – standard column sorting (right mouse column header click)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Automatic column generation – for prototyping purposes, all columns are generated
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The techniques demonstrated here should be used for all grids which can be fully populated from a SQL statement.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The following new functions are now available:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           DataWidgets.InitialiseUnboundGrid (dwGrid As SSDBGrid, sCaption as string)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           DataWidgets.PopulateGridFromSQLQuery (dwGrid As SSDBGrid, sSQL as String)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Note: the word unbound derives from the 3 modes that the data grid can operate:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Add Item – rows are added to the grid 1 at a time like a list box. This is used for small non-SQL oriented data sets.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Bound – the grid is bound to a data control on a form. This is useful when developing prototypes but does not scale to production databases.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Unbound – the grid is populated from a SQL recordset which is demand paged from the server. 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           A simple example demonstrates how to add an unbound grid to view all companies:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterLoad()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set dwGrid = FormObjectsLocal.ShowForm.GetFieldWidget( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           “EntityName”, “GridFieldName”)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           if dwGrid is nothing then exit sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With DataWidgets
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .InitialiseUnboundGrid (dwGrid), “All Companies”
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .PopulateGridFromSQLQuery (dwGrid), “Select * From Company”
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Not only can the grid now efficiently process very large recordsets, but it also automatically provides column sorting:  by right mouse clicking on the column header.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Warning: Column sorting is very generic so you must obey an important rule when writing your SQL query. This rules relates to fields of type TEXT in SQL Server. TEXT fields cannot be sorted unless cast to a VARCHAR data type. For example the JobTitle column should be written as:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            SELECT….. Convert(Varchar(64), JobTitle) as JobTitle …. FROM….
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This will ensure that sorting the JobTitle column will be efficiently processed.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           It is normal to add your own style to columns (width, type etc..) and this should be done using DataWidgets.AddColumnToGrid before calling DataWidgets.PopulateGridFromSQLQuery.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           38.	Refreshing Grids on Other Entity Forms
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           When a form wishes to fire a button on another entity form which can be virtual or not, perhaps to refresh a grid or view, then this example shows how to click the button programmatically from another form script:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub RefreshBidManagerGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set frmBidManager = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormFunctions.GetAFormInstance( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "frmFormDesignedByUser", True, "", "BidManager")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If frmBidManager Is Nothing Then exit sub	‘ Form not open
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set btn = frmBidManager.GetShowForm.GetButtonFromFunction( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "btn", "RefreshBidStagesGrid")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If btn Is Nothing Then Exit Sub	‘ Button not found
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           btnIndex = btn.FormWidget.Index
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           frmBidManager.btn(btnIndex).Value = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If the form is a virtual entity, replace "frmFormDesignedByUser" with "frmVirtualFormDesignedByUser" in the GetAFormInstance function.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           28 March 2002 Update:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           It is now possible to use the frm{EntityName} in order to access forms which is more intuitive. The example below shows how this works:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If FormFunctions.isformloaded("frmAdvertisement") Then 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             Set f = FormFunctions.GetAFormInstance("frmAdvertisement")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             f.LoadEntityDetails 0
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             FormFunctions.AddFormToTabView (f), ""
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Else
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             Set f = FormFunctions.LoadFormByName("frmAdvertisement", 0, "New Advert")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Even works for Virtual Entity Forms
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub OpenToDoList
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If FormFunctions.isformloaded("frmToDoList") Then 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             		Set f = FormFunctions.GetAFormInstance("frmToDoList")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             		FormFunctions.AddFormToTabView (f), ""
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Else
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             Set f = FormFunctions.LoadFormByName("frmToDoList", 0, "My ToDo List")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           39.	Running Mail Merges From Script
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The mail merging technology now includes a script friendly interface to generate mail merges without requiring any pre-processing of the data sources into the expected format.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           A new object is exposed: MailMerge, which can be accessed from the script editor.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This object exposes a number of properties/methods:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Name	Type	Description
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           NewDocument	Method	Called to instantiate a new merge document
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           KeySQL	Property	The SQL which generates the ID’s of the keys
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           DataSourceSQL	Property	The SQL which generates the full data file
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Template	Property	The word template .DOT file
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           AppendDocument	Method	Append a document to collection
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           SaveAs	Property	Save the merged document as this file name
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           UserId	Property	Set the user who is running the merge
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           RunMailMerge	Method	Run the merge and generate the document
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Note that KeySQL and DataSourceSQL are mutually exclusive i.e. only 1 should be set at any 1 time.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The DataSourceSQL gives the programmer much more control over the data source production.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The use of this technique is now described by use of 2 examples:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub MailMergeTest
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             ‘ Option 1 – Tight control using .DataSourceSQL
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             With MailMerge
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .NewDocument
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .DataSourceSQL = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "Select ContactId, Christian + ' ' + Surname as ContactName" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               	" From Contact Where ContactId = " &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               	FormObjectsLocal.FormRef.ContactIdCollection(1)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .Template = "C:\Program Files\ClientCode\DataSourceTest.dot"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .AppendDocument "C:\Program Files\ClientCode\DataSourceTest.dot"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .SaveAs "C:\temp\DataSourceTest.rtf"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .RunMailMerge
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             ‘ Option 2 – Use existing Universal Data Source.tmm schema
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             With MailMerge
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .NewDocument
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .KeySQL = "Select CompanyId, 26531 as ContactId, 99 as RequirementId, " &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           " 25 as ContractId, " &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               		" 33518 as CandidateId, 4 as AdvertisementId, " &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               		" 3 as ContractorInvoiceId, 1 as TestEntityId" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               		" From Company Where CompanyId = " &amp;amp; m_CompanyId
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .Template = "\\ClientCode2000\ActionTemplates\client mailshot.dot"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .AppendDocument "D:\CVData\P\Synonyms Test.doc"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .SaveAs "\\ClientCode2000\ActionTemplates\Mailshots\MMTest.rtf"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .RunMailMerge
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The .DataSourceSQL property accepts any SQL string returning any recordset from any tables in the database. The programmer determines all fields and records which are written to the data source. The programmer must therefore manage the Word templates and associated design-time TMM data source file. This is the property to use if very tight control of the merge process is required. Note this property is available only in build 1.00.117 or later.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The .KeySQL property accepts a SQL string returning only the keys of the underlying entities. In this example, we want to merge the document consisting of the current company (m_CompanyId), requirement 99, placement 25, candidate 33518, advertisement 4, contractor invoice 3 and test entity 1.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This allows you to control the relationships between the records.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The .Template property is the full path to the word .dot file.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .AppendDocument can be called any number of times to append any number of documents (CVs perhaps) to the end of the merge.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The .SaveAs method tells the merge that the resulting merged file will be saved to the specified file name.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The .RunMailMerge method starts the process of creating the data source (.tmm file), instantiating word, opening the .dot template and merging to a new document using the data source. If the .SaveAs file is set, it then saves the document. The resulting document is then made visible for viewing.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           40.	Diagnostics and User Activity Logging for Debugging and Audit Trails
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           For debugging, consider using the Diagnostics object for debugging as this logs to the diags file in real-time without intrusion and can capture hundreds of messages. Turn diagnostics on either via the Configure-&amp;gt;Diagnostics menu option, or using the /Diag command line option.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           To use in your code, just use the following syntax:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Diagnostics.Diag _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "Your message goes here... Concatenate variables, properties etc..."
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The main advantage to this approach is that you can leave these in production systems and messages are only logged when diagnostics are enabled when attempting to debug a problem encountered on-site.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The .out file produced also contains version + anciliary information which can help diagnose problems.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Note, that when diagnostics are enabled, all MessageBox.AppMsg and AppStopMsg and QuestionYesNo etc.. are also logged to the .out file.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           For logging user activity to SQL Server as an audit trail, use the following:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Initialisation.Users.DbInsertUserActivity (Initialisation.UserId), _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "The message to be logged", startDate, endDate
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The startDate and endDate can be set to Now, but these can be used to capture the time taken for a particular operation.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           All records are written to the UserActivity table only if the Configure-&amp;gt;User Activity Logging menu option is set by administrator.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           41.	Closing Action Forms
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           It may be necessary to close an action form from script for example when a user is not permitted to run an action. In this case the following method can be called from the Form_AfterLoad event in order to stop the form from loading and displaying:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.FormRef.FormUnload
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Note: From 15 Jan 2002 this method is available to all config forms.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           42.	Post Code Lookup
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Added post code database lookup capability to the system and exposed this as script. If the customer has licensed the post code address file (PAF) from QAS Systems, then the post codes will exist in the database.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The object PostCodeLookup is exposed through script and can be used as follows:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Button_Click ()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set btn = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.ShowForm.GetButtonFromIndex("btn", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.EventControl.Index)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If btn Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              On Error Resume Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	Select Case btn.ButtonFunction
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                	Case "AlternativeAddressPostCodeLookup"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call AlternativeAddressPostCodeLookup
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              	End Select
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Button lookup from alternative address fields.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub AlternativeAddressPostCodeLookup
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sPostCode = FormObjectsLocal.ShowForm.GetFieldValue( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "ContactConfigFields", "Alternative1PostCode")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If len(sPostCode) = 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MessageBox.VBMsgBox gVBmsgBoxSpaceOut ( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "Please enter a post code before searching for a matching address.")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Do the lookup now
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With PostCodeLookup
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .PostCode = sPostCode
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If .Search Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.ShowForm.SetFieldValue("ContactConfigFields", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "Alternative1StreetAddress") = .Street
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.ShowForm.SetFieldValue("ContactConfigFields", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "Alternative1StreetSuburb") = .Suburb
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.ShowForm.SetFieldValue("ContactConfigFields", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "Alternative1City") = .City
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.ShowForm.SetFieldValue("ContactConfigFields", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "Alternative1County") = .County
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.ShowForm.SetFieldValue("ContactConfigFields", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "Alternative1PostCode") = .PostCode
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Other properties of the PostCodeLookup object are as follows:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Enabled	Read	True of post code lookup enabled for site
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           PostCodeRadialSearching	Read	True if radial searching enabled for site
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TopRecordCount	Write	Number of records to display in wildcard post code search
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           PopUpSelection	Write	Set to True if a wildcard pop-up selection dialogue is to be displayed.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           43.	Using Bookmarks in Grids
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           As a rule, it is not advisable to enumerate through the grid to access the rows and cells directly as this is inefficient. See the following section to see how to access the underlying unbound recordset.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            In order to retrieve all rows in a non-additem grid, use the following code:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .Redraw = False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .Movelast
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .Movefirst
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           For i = 0 to .Rows - 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .Bookmark = i
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ContactId = .Columns(0).Text
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If i = 0 Then 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           s = s &amp;amp; (ContactId)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Else
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           s = s &amp;amp; ", " &amp;amp; (ContactId)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .Redraw = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           44.	Accessing Grid SQL Query Recordset and Cloning
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           When a grid is populated from a single SQL statement using the function: DataWidgets.PopulateGridFromSQLQuery, the grid handling is performed automatically by the application.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           There are occasions however, when you may require access to the underlying recordset in order to perform some extra processing (calculating totals etc..).
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The following example shows how to populate a grid, retrieve the automatically generated underlying recordset, clone it and enumerate through the cloned recordset to access the values:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With DataWidgets
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.InitialiseUnboundGrid (dwGrid), "First 1000 Rows of Table: " &amp;amp; sTableName
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sSQL = "Select Top 1000 * From " &amp;amp; sTableName
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' One stop shop - even easier than drinking beer!
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .PopulateGridFromSQLQuery (dwGrid), (sSQL)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Test access to the recordset using cloning technique
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           s = ""
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set rs = DataWidgets.GetUnboundScriptedGridRecordsetFromHWnd(dwGrid.hWnd)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If Not rs Is Nothing Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set cloneRS = rs.Clone
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With cloneRS
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .MoveFirst
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Do While Not .EOF
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           s = s &amp;amp; " " &amp;amp; .Fields(1).Value &amp;amp; .Fields(2).Value
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .MoveNext
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Loop
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .Close
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MessageBox.appmsg "Recordset contents=" &amp;amp; s
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           45.	Unbound Grids - Formatting Columns
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           As regards formatting, there are 2 ways to achieve this: Using SQL (fastest and most efficient) and using Row Level Callbacks (slower, but more control)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           SQL Method
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Code the SQL Select with the convert function to get a UK display date format:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Select convert(varchar(11), StartDate, 113) as StartDate
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The numbers might not be exactly what you want but this is what you do to get your formatting:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Select Convert(varchar(11), convert(decimal(10,5), numField)) as numField
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This will give you a number with 5 decimal places. (Notice the double convert to get the value into text format because ADO will strip trailing zeros).
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Row Level Callbacks
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Use the Grid_RowLoaded event to capture the loaded row from the SQL statement and format the specified column explicitly. Example:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Grid_RowLoaded
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             Set dwGrid = FormObjectsLocal.EventControl
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             If dwGrid Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             Set fd = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.ShowForm.GetFieldDescriptionFromWidgetHwnd(dwGrid.hWnd)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             If fd Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             Select Case fd.TableFieldName
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               Case "DateViewGrid"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 ' Format the third column (0 base columns) which is a date into 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' the format e.g. 19-Feb-2002
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                   If .Columns.Count &amp;gt; 2 Then       
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                     .Columns(2).Text = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           StringFunctions.VBFormat(.Columns(2).Text, "DD-MMM-YYYY")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                   End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             End Select
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Warning: Failure to check the column counter before setting the column value will result in accessing a non-existent grid cell which will cause the grid to bring down the application!
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           46.	Form_Unload – Preventing form from closing from Script
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           By using the Form_Unload (Cancel ) event, it is possible to prevent the user from closing the form without saving the changes controlled by script. 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The application knows when a form is ‘dirty’ i.e. fields have been changed but not saved and it correctly prompts the user in these instances. The application however, knows nothing about the script behaviour and which fields it may control, so offers this event to allow script to prevent the form from closing in such circumstances.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Here is an example:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Ask user to quit
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_Unload ( Cancel )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Cancel = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           (MessageBox.QuestionYesNo("Are you sure you want to quit?", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "Form_Unload") &amp;lt;&amp;gt; vbYes)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FunctionStatus.SetParameter("Cancel") = Cancel
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In the above example, the event is called from the application when the user wants to close the form. The event simply asks the user for verification and returns the status to the application.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If the user answers Yes, the form will close, otherwise it will not.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           47.	Public Sub Form_ExternalRefresh – Catching events in script
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           When any data changes within the system, any script can catch all events associated with the change using the following event implemented in build 1.00.052. 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_ExternalRefresh ( FormName, Param1, Param2, Param3 )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The first parameter is the name of the form which is raising the event, and the following parameters will vary depending upon what type of update has occurred. In general Param1 will denote what has been updated, and Param2 will be the ID of the record.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The following example shows how to invoke the scheduled activity/note history form from script and capture the update event from it in script (in order to perhaps refresh a bespoke appointments grid).
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Load the last task created
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MaxTaskId = Database.GetSnapshotField("Select max(TaskId) From Task", 0)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set frmMainBinder = FormFunctions.GetAFormInstance("frmMainBinder", True)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call frmMainBinder.EditTask((MaxTaskId))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_ExternalRefresh ( FormName, Param1, Param2, Param3 )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If FormName = “frmMainBinder” and Param1 = “TaskId” then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ Refresh the bespoke appointments grid…
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End if
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           48.	Spin Increments – Setting Visibility from Script
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           It is sometimes necessary to set the visibility of some fields by script. 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The numerical data entry fields spin increment widgets:  are separate from the actual field.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           They have the same index as the field so it is possible to write a generic function as follows:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Function gSetSpinIncrementVisibility(sEntityName, sTableFieldName, bVisible)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With FormObjectsLocal.ShowForm
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set objField = .GetFieldWidget((sEntityName), (sTableFieldName))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If objField Is Nothing Then Exit Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set formField = .GetFormFieldFromFieldName((sEntityName), (sTableFieldName))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           index = objField.Index
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set spin = FormObjectsLocal.formref.controls("spinIncrementValue")(index)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If .IsWidgetVisibleOnCurrentTab((objField.hwnd)) Then 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           spin.Visible = bVisible
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This can be used as follows:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Tab_Click ()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call DoInvisibleFields
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterLoadRecord ( Id )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call DoInvisibleFields
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub DoInvisibleFields
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call SetFieldVisible("ContactConfigFields","Formula1",
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           bDoFormula)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call SetFieldVisible("ContactConfigFields","Formula2",
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           bDoFormula)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'set spin increments invisible
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call gSetSpinIncrementVisibility("ContactConfigFields", " Formula1", 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Not bDoFormula)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call gSetSpinIncrementVisibility("ContactConfigFields", " Formula2", 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Not bDoFormula)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           49.	Report Formulas and Parameters
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In build 1.00.062, it is now possible to pass formulas from script into crystal reports.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This has the major advantage that the report is more programmable from script and temporary tables do not need to be used to pass in non-derived data.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The example below shows how this can be achieved:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Modify SQL here to remove context sensitivity
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterSaveRecord ( Id )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ReportProperties.AddScriptFormula("StartDate") = "01-Jan-2003"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ReportProperties.AddScriptFormula("EndDate") = "31-Jan-2003"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In Build 1.00.079 – it is now possible to control printing and formulas from a scriptable form without needing to have a report form. The following code shows how to do this:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sReportName = "ProjectIssuesSummary.rpt"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set report = Initialisation.Reports.GetReportProperties((sReportName))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MySQL = "(Status = 'In Progress')"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           report.AddScriptFormula("ReportParameters") = "Outstanding Issues ('In Progress')"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call Initialisation.Reports.PrintReportFromReportPropertiesObject((report), (MySQL))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In build 1.00.111 – it is now possible to add report parameters (for stored procedures) using the same technique:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sReportName = "p_TestSPInCrystalReport.rpt"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set objReport = Initialisation.Reports.GetReportProperties((sReportName))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           objReport.AddScriptParameter("vchrSurname") = "A%"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           objReport.AddScriptParameter("vchrUpdatedSince") = "01-Jan-2001"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call Initialisation.Reports.PrintReportFromReportPropertiesObject((objReport), "")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In build 1.00.012 – the ability to control the report from script has been significantly enhanced to allow the developer to control the report much more tightly. 2 new methods and a new property have been exposed:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Method #1: OpenExportedReport – Specifies that the exported report is not to be launched (Word, Excel etc..)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Method #2: TabViewName – Specifies the name of the tab view (allows multiple views of same report)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Property #1: ExportedFileName – The full path of the file produced on export
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The following code demonstrates how to use these:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub PrintReportForCompany(CompanyId, sCompanyName, sReportName, iReportDestination)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set objReport = Initialisation.Reports.GetReportProperties((sReportName))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With objReport
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .AddScriptParameter("vchrSurname") = Left(sCompanyName, 1) &amp;amp; "%"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .AddScriptParameter("vchrUpdatedSince") = "01-Jan-1900"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' The report destination – see this section
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .Destination = iReportDestination
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' We don't want the print engine to open the document after export
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .OpenExportedReport = False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' We want unlimited report windows (tabs) when printing to screen
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .TabViewName = "Rpt:" &amp;amp; GetTabNameFromCompany(sCompanyName)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Now launch the report
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call Initialisation.Reports.PrintReportFromReportPropertiesObject(
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           (objReport), "")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Read the exported filename back now in order to rename/copy etc..
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If len(objReport.ExportedFileName) &amp;gt; 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call ProcessExportedReport(CompanyId, sCompanyName, 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           objReport.ExportedFileName)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub RunSalesInvoiceReportAndEMailAsAttachmentWithTimesheetImage 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           (sReportName, sGUID, lInvoiceId)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Const CrystalReportDestination_WP = 2
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Const CrystalReportDestination_PDF = 5
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set objReport = Initialisation.Reports.GetReportProperties((sReportName))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With objReport
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .Destination = CrystalReportDestination_WP
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .AddScriptParameter("vchrUser") = CStr(Initialisation.UserId)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .AddScriptParameter("vchrReportName") = sReportName
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .AddScriptParameter("vchrInvoiceString") = ""
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .AddScriptParameter("vchrGuid") = CStr(sGUID)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .OpenExportedReport = False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .TabViewName = "Printing Invoice..."
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call Initialisation.Reports.PrintReportFromReportPropertiesObject((objReport), "")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If Len(objReport.ExportedFileName) &amp;gt; 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sFileName = objReport.ExportedFileName
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'MessageBox.AppMsg "Printed report: " &amp;amp; sFileName &amp;amp; "?"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Copy this file to a unique location so that it can be referenced in 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ a note/history against the invoice etc.. for tracking purposes
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sDestinationFile = 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FileSystem.DirWithSeparator(Initialisation.GetSystemSetting( 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "ConsolidationInvoiceFolder")) &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "Invoice" &amp;amp; lInvoiceId &amp;amp; "_" &amp;amp; Initialisation.User.LoginName &amp;amp; "_" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           StringFunctions.VBFormat(Now, "DD-MMM-YYYY") &amp;amp; "_" &amp;amp; StringFunctions.VBFormat(Now, "hhnnss") &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "." &amp;amp; FileSystem.SuffixFromFileName((sFileName))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call gCopyFile(sFileName, sDestinationFile)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Attach this e-mail as an attachment with timesheet image etc..
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call EMailInvoiceAttachmentsToPlacementRecipients(
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sDestinationFile, lInvoiceId)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           50.	Form Timers
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In build 1.00.066, it is now possible to raise a form timer event in scripted forms. The timer fires every minute starting 1 minute after the form is loaded. The benefit of this is so that forms can be used to refresh display statistics etc.. without requiring user intervention.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The following example code re-calculates the current gross domestic product of a nation every minute:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ This function fires every minute
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_Timer ()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call CalculateGrossDomesticProductStatisticsEveryMinute
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           51.	Forcing ExternalRefresh events from Script
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In build 1.00.069, it is now possible to raise a global external form refresh event in scripted forms. This event is normally called when any record is saved from a non-virtual form.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The script developer can now raise this event to all loaded forms to for example, refresh grids or special views of data.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ Code to Cause refresh event in interested parties e.g. Project - ExternalRefresh
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormFunctions.InvokeScriptedFormRefreshMethodForAllForms _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "frmFormDesignedByUser", "Entity Update", "ProjectIssueId", m_ProjectIssueId 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           See section 48 above for information about how to capture the event from script on any form and process the request.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In order to let all interested forms know that a task has been updated, use the following:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Need to tell Task Grids what we have done
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call FormFunctions.FireTaskUpdateEventMessenger (TaskId)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           52.	Capturing Main Binder Toolbar Buttons
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In build 1.00.072, it is now possible to capture the toolbar button clicks directly in script to take appropriate actions e.g. Print, Save, Search etc...
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The Id parameter contains the ID of the toolbar button (ID_Print, ID_Save etc..) and the Cancel parameter can be set to True to stop ClientCode processing the button.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The following example shows how a new event is now available which is fired for every toolbar click when the form has focus:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Catch users button press to do the printing
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_ToolbarButton ( Id, Cancel )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Select Case Id
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Case "ID_Print":		Call PrintCurrentGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Ignore all others
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Select
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' We will process the button thank you!!!
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FunctionStatus.SetParameter("Cancel") = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           53.	Printing Contact Reports from Virtual Forms 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In build 1.00.072, it is now possible to utilize the Crystal report functionality for printing contact reports directly from script on any form. This technique is probably best utilized on a virtual form where scripted grids are under control and the user is accessing the main print button on the toolbar.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The following example follows on from the previous section and shows how to print the contents of the current unbound scripted grid:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub PrintCurrentGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set dwGrid = GetCurrentGridInView
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If dwGrid Is Nothing Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MessageBox.AppMsg "Please select a grid to print."
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Print the contact oriented report now
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           CrystalReports.PrintContacts FormObjectsLocal.FormRef, dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Function GetFavouritesListGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set GetFavouritesListGrid = FormObjectsLocal.ShowForm.GetFieldWidget(EntityName, "FavouritesListGrid")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Function GetSearchResultsListGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set GetSearchResultsListGrid = FormObjectsLocal.ShowForm.GetFieldWidget(EntityName, "SearchResultsListGrid")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Function GetCurrentGridInView
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set dwGrid = GetSearchResultsListGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             If Not FormObjectsLocal.ShowForm.IsWidgetVisibleOnCurrentTab((dwGrid.hwnd)) Then 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set dwGrid = GetFavouritesListGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             If Not FormObjectsLocal.ShowForm.IsWidgetVisibleOnCurrentTab((dwGrid.hwnd)) Then Set dwGrid = Nothing
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             Set GetCurrentGridInView = dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           See section 50 for further details about invoking reports.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           54.	Access System Settings
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           An administrator can set system wide settings using the ConfigureSystem Settings menu:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           To access these from script, use the Initialisation.GetSystemSetting(sName) function.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This is available from version 1.00.091.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Example:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sSystemSetting = Initialisation.GetSystemSetting ("YourSettingName")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In version 1.00.131, the programmer can now generate and update their own settings using the Initialisation.SetSystemSetting(sName, sValue) property:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Initialisation.SetSystemSetting("GoToAssistDefaultId") = lDefaultId
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This function writes the new value directly to the database SystemSetting table.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           55.	Designer Queries in Script
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           From build 1.00.096, it is possible to use the designer to add queries to config and virtual forms.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This allows the queries to be accessible from script, therefore allowing a systems administrator to control the grid layout/fields etc.. without requiring script access – thus speeding up the customization process.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Get the query for this view
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set gridQuery = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.FormRef.GridQuery.GetQueryFromCollection((sQueryName))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' if gridquery is nothing warn the user and get out
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If gridQuery Is Nothing Then 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MessageBox.Appmsg "gridQuery is nothing?"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' the SQL Query
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sSQL = gridQuery.QueryProperties.SQLQuery
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' define the sql to append to grid sql
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sAppendSQL =	"..... " &amp;amp; m_PlacementId
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' prepare the SQL before populating the grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sSQL = Replace(sSQL, "--PlaceHolderForAdditionalSQL", sAppendSQL)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Data Widgets Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' dont redraw now
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           dwGrid.Redraw = False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' populate the grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With DataWidgets 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .InitialiseUnboundGrid (dwGrid), "Rates"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             Call FormObjectsLocal.FormRef.GridQuery.InitialiseGrid((dwGrid), (sQueryName)) 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' set the grid properties
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.AllowAddNew = False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.AllowUpdate = False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.MaxSelectedRows = 8192
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.RecordSelectors = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             	.SelectTypeRow = 1		'1 - single, 2 - multi, 3 - more control
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'MessageBox.AppMsg "SQL:" &amp;amp; sSQL
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' populate the grid now
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .PopulateGridFromSQLQuery (dwGrid), (sSQL)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' redraw grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           dwGrid.Redraw = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Alpha Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set alphaGrid = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.ShowForm.GetFieldWidget(EntityName, "PlacementGrid")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If alphaGrid Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With grdA
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .ColumnPrefixToRemove = "Placement"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .EnableAutoEntityLoading "Placement", "Placement", "Placement_PlacementId"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Apply the query to the grid.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .SetQuery Query.QueryProperties
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           56.	Setting the Report Destination at run-time from Script
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           From build 1.00.111, it is possible to allow the user to select the report destination at run-time:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This is the report form script:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Report destinations
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Const CrystalReportDestination_Screen = 0
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Const CrystalReportDestination_Printer = 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Const CrystalReportDestination_WP = 2
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Const CrystalReportDestination_SpreadSheet = 3
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Const CrystalReportDestination_HTML = 4
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Const CrystalReportDestination_PDF = 5
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Const EntityName = "BossDumpConfigFields"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterLoad ()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call PopulateReportDestinationCombo
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub PopulateReportDestinationCombo
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set cmb = FormObjectsLocal.ShowForm.GetFieldWidget(EntityName, "ReportDestination")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With cmb
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .AddItem "Screen"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            .ItemData(.ListCount-1) = CrystalReportDestination_Screen
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .AddItem "Printer"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            	.ItemData(.ListCount-1) = CrystalReportDestination_Printer
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .AddItem "Word"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .ItemData(.ListCount-1) = CrystalReportDestination_WP
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .AddItem "Excel"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            	.ItemData(.ListCount-1) = CrystalReportDestination_SpreadSheet
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .AddItem "Web Page"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            .ItemData(.ListCount-1) = CrystalReportDestination_HTML
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .AddItem "PDF"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            .ItemData(.ListCount-1) = CrystalReportDestination_PDF
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .ListIndex = 0
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Called before report is fired
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_BeforeSaveRecord ( Id, Cancel )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Point at user specified destination
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set cmb = FormObjectsLocal.ShowForm.GetFieldWidget(EntityName, "ReportDestination")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ReportProperties.Destination = cmb.ItemData(cmb.ListIndex)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           57.	Intercepting Report Selection Events from Script
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           From build 1.00.114, it is possible to capture the list of reports selected at run-time from the Print toolbar button. This allows the developer to orchestrate the printing of reports entirely from script.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The following example shows code which is available in the frmCompanies form to capture a new event called Form_BeforePrint which is called after the report selection dialogue is displayed, but before each report is printed by the Crystal sub-system.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ frmCompanies Form Script
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_BeforePrint(reportCollection, Cancel)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If reportCollection Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If reportCollection.Count = 0 Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Tell ClientCode that we will process the report selection from here
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FunctionStatus.SetParameter("Cancel") = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           s = "Report Collection: "
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           For i = 1 to reportCollection.Count
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           s = s &amp;amp; vbcrlf &amp;amp; reportCollection(i)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Test access to the recordset using cloning technique
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           s = s &amp;amp; vbcrlf &amp;amp; vbcrlf &amp;amp; "Recordset contents:" &amp;amp; vbcrlf
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set rs = FormObjectsLocal.FormRef.GetRecordsetForSelectedTab
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If Not rs Is Nothing Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set cloneRS = rs.Clone
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With cloneRS
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .MoveFirst
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Do While Not .EOF
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           s = s &amp;amp; " " &amp;amp; .Fields(1).Value &amp;amp; .Fields(2).Value
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .MoveNext
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Loop
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .Close
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MessageBox.AppMsg (s)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Thus the sequence of events is as follows:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                   
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This is the print button on the main toolbar when the companies form is displayed. 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Then the company reports selection dialogue pops up.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Then the event is raised in script code, which processes the list and cancels the default behaviour.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           58.	Grid Column Filtering/Sorting for AddItem Grids
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           From build 1.00.116, it is now possible to sort and filter AddItem grids in the same manner as Unbound grids providing some rules are followed.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Have now enhanced ClientCode to support grid sorting and filtering for AddItem grids used with the DataWidgets.PopulateGridFromSQLQuery method.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The latest release is at: www.clientcode.com
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Grid sorting works by default, however in order to ensure that filtering works, you need to provide explicit Select column names and some comment fields and an Order By clause in the SQL as shown in the slightly modified code below.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Let me know if this works on your timesheetHR system?
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Garry
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Form: Consolidation
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Function: ShowSelectedTimeSheets
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ...
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'DWA 9 Jan 2004
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '  10 Jan 2004: From GL to DWA: Need to Select SPECIFIC column names in order to allow FILTERING
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             sSQL = "SELECT TimeSheetID, PlacementID, SupplierCompany, JobTitle " &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              ", Company, Candidate, ContratorType, StartDate, EndDate, ProcessDate" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              ", NetPay, PayVAT, GrossPay, NettCharge, VATCharge, GrossCharge, Freq, Pending" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              ", SalesInvoiceProduced, PurchaseInvoiceProduced" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              " FROM v_Consolidation_SelectedTimeSheetList_v3 " &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              " WHERE Company = '" &amp;amp; strClient &amp;amp; "'" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              vbcrlf &amp;amp; "-- Grid Filter Start --" &amp;amp; vbcrlf &amp;amp; "-- Grid Filter End --" &amp;amp; vbcrlf &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              " Order By TimeSheetID"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ...
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           You may ask the question: ‘Why not just use an Unbound grid instead of an AddItem if using a full SQL statement?’
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The answer is because Unbound grids are NOT editable (I don’t believe) as they are populated from a recordset, thus it is not possible to add CHECK BOX columns and have the user select rows. This IS however possible with an AddItem grid.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Here is an example which uses the AddItem technique but adds a check box column:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sSQL = “as above code…”
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Initialise grid columns
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .Columns.RemoveAll
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .DataMode = 2     ' Add Item Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .AllowAddNew = False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .AllowUpdate = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .MaxSelectedRows = 8192
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .RecordSelectors = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .SelectTypeRow = 3 '1 - single, 2 - multi, 3 - more control
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With DataWidgets
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           …
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .AddColumnToGrid (dwGrid), 22, "Select", 600, True	‘ The check box one
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           end with
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Select column is an updateable check box
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               For x = 17 To 22
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 With .Columns(x)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                   .DataType = 11
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                   .Style = 2
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             End With 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Lock these cells as non-updateable
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               For i = 0 To 19
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 .Columns(i).Locked = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .Columns(21).Locked = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .Columns(10).ForeColor = vbBlue
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .Columns(11).ForeColor = vbBlue
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .Columns(13).ForeColor = vbBlue
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .Columns(14).ForeColor = vbRed
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .Columns(15).ForeColor = vbRed
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .Columns(16).ForeColor = vbRed
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .Columns(20).Locked = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .Columns(22).BackColor = vbGreen '&amp;amp;hffff00 '&amp;amp;H00FFFFC0&amp;amp;
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .Caption = "Pending &amp;amp;&amp;amp; Selected TimeSheets - " &amp;amp; strClient
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             DataWidgets.PopulateGridFromSQLQuery (dwGrid), (sSQL)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             dwGrid.Redraw = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Then in button_Click event handling:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            For row = 0 to .Rows-1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            .Bookmark = row
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             If (cbool(.Columns("Sales").Value) = False) _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           and (cbool(.Columns("Select").Value) = True) Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            ' Build comma-delimited list of selected non-SelfBill TimesheetIds
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           …
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           59.	Using CommonDialogue Friendly Function to Find Files
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The FileSystem.CommonDialogue method is not script friendly (passes parameters byref) so a wrapper function: FileSystem.FileDialogue has been developed to provide the same functionality for pointing at files on the file system.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Button_Click ()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Not interested in non-config buttons
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If FormObjectsLocal.EventControl.Name &amp;lt;&amp;gt; "btn" Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set btn = FormObjectsLocal.ShowForm.GetButtonFromIndex("btn", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.EventControl.Index)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If btn Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Select Case btn.ButtonFunction
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Case "ImportHTML":	Call ImportHTMLFile
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Select
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub ImportHTMLFile
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sFile = FileSystem.FileDialogue("Find HTML Page", (sFile), "*.*", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "All Files (*.*)|*.*", 1)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MessageBox.appmsg "File=" &amp;amp; sFile
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Use 1 for File Find and 2 for new file.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           60.	Form_BeforeDeleteRecord Event
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Build 1.00.122 introduced a programmable event to allow developers to control the end-user deletion of key records.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_BeforeDeleteRecord(Id, Cancel)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The Id is the current record to be deleted.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Cancel is a flag which the programmer can set to False to prevent the application deleting the record.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Catch deletion event and prevent if e.g. timesheets have allocated hours etc..
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_BeforeDeleteRecord (Id, Cancel)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MessageBox.AppMsg "In script: " &amp;amp; FormObjectsLocal.FormRef.EntityName &amp;amp; " - Id:" &amp;amp; Id
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FunctionStatus.SetParameter("Cancel") = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Currently this event is only available in frmEntitySearch, frmCompanies and frmContacts.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           61.	Form_CoreEntityLookupEvent
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Build 1.00.124 introduced a programmable event to allow developers to fully control the end-user selection of core entity lookup records. These are the buttons on the fields of type Contact, Company, User or Currency. This event ALSO applies to the Re-assign Company pop-up menu on the contact form.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_CoreEntityLookup (TableName, TableFieldName, RecordId, RecordText, Cancel)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The TableName and TableFieldName correspond to the FieldDescription record of the field in question. The RecordId is the current Id of the core entity (and the .Tag value of the associated text box) and is used to return the new value to the caller. The RecordText is the text currently displayed in the text box and is used to return the new value to the caller. The Cancel flag if set to True, forces the application to abandon its own processing of the button.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The event is fired when a user selects the spyglass button within the text box containing the field:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           and also when the user selects the re-assign Company pop-up menu from the contact forms, Re-assign Company Name &amp;amp; Address button:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The event fires BEFORE the user is prompted to select a lookup so that script can COMPLETELY override the behaviour of the pop-up record selection.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This provides the ability for the script programmer to decide what SQL to generate, what columns to show and also what business rules to enforce in limiting the end-user to fit the current context.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The following example code shows how this event is utilized in a form for which a candidate (not a client, supplier, doctor, lawyer etc..) must be selected in the above field:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_CoreEntityLookup (TableName, TableFieldName, RecordId, _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           RecordText, Cancel)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Select Case TableFieldName
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Case "CandidateReference"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call CandidateLookup(TableFieldName, RecordId, RecordText) 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Case Else
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Exit Sub		' Let application handle
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Select
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Set the function status now
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With FunctionStatus
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .SetParameter("RecordId") = RecordId
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .SetParameter("RecordText") = RecordText
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .SetParameter("Cancel") = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Do a contact lookup using script functions
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub CandidateLookup(TableFieldName, RecordId, RecordText)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set SQLSelection = Selection.GetSelectSQLObject
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With SQLSelection
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .Columns = 9
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .ColWidth(0) = 0
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .ColWidth(1) = 0
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .ColWidth(2) = 0
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .ColWidth(3) = 1500		' Forenames
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .ColWidth(4) = 1800		' Surname
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .ColWidth(5) = 3000		' Address
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .ColWidth(6) = 1200		' Home Tel No
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .ColWidth(7) = 1200		' Work Tel
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .ColWidth(8) = 1200		' Mobile Tel
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .Caption = "Select any Candidate"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .SQL = "Select ContactId, Priority, ContactType As Type, " &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "Christian As 'Forename(s)', Surname," &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               	" TheAddress as 'Address', HomeTelNo as 'Home Tel No.', WorkTelNo as 'Work Tel No.', MobileTelNo as 'Mobile Tel No.'" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               " FROM v_AllContacts" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               " Where ContactType = 3 " &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               " Order by Surname, Christian"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .ContactSelection = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .PriorityColumn = 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .TypeColumn = 2
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If Not .Selection Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           RecordId = .SelectedRecord(1)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set Contact = Initialisation.Contacts.FindFirst((RecordId))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           RecordText = Contact.Christian &amp;amp; " " &amp;amp; Contact.Surname
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The following example is how to utilise the code in frmPerson – The contact form for managing the company re-assignment:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Called whenever a core lookup button invoked - this includes the assign company menu
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_CoreEntityLookup(TableName, TableFieldName, RecordId, RecordText, Cancel)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Display the message box for debug
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'MessageBox.AppMsg "Form_CoreEntityLookup: " &amp;amp; TableName &amp;amp; ", " &amp;amp; TableFieldName &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '	", " &amp;amp; RecordId &amp;amp; ", " &amp;amp; RecordText &amp;amp; ", " &amp;amp; Cancel
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Now get the list of contacts for this type of lookup
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Select Case TableFieldName
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Case "CompanyName"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call CompanyLookup("Client", RecordId) 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Case Else
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Exit Sub		' Let application handle
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Select
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Set the function status now
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With FunctionStatus
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .SetParameter("RecordId") = RecordId
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .SetParameter("RecordText") = RecordText
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .SetParameter("Cancel") = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Do a company lookup using script functions
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub CompanyLookup(CompanyType, CompanyId)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set SQLSelection = Selection.GetSelectSQLObject
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With SQLSelection
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .Columns = 2
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .ColWidth(0) = 0
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .ColWidth(1) = 5000		' Company
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .Caption = "Select a " &amp;amp; CompanyType &amp;amp; " Company"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .SQL = "select Company.CompanyId, Company.Name as 'Company Name'" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           " From Company, CompanyType, EntityType" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           " Where Company.CompanyId = CompanyType.CompanyId" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           " and CompanyType.EntityTypeId = EntityType.EntityTypeId" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           " and EntityType.EntityName = 'Company'" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           " and EntityType.Name = '" &amp;amp; CompanyType &amp;amp; "'" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           " Order by Company.Name"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If Not .Selection Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           CompanyId = .SelectedRecord(1)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           62.	frmEntitySearch Buttons
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In order to control the use of buttons on the entity search form (frmEntitySearch), the following script can be used to (for example) hide the New button:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           These are the VB constants used:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Const BTN_COMPANY = 0
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Const BTN_CONTACT = 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Const BTN_SEARCH = 5
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Const BTN_PRINT = 6
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Const BTN_CLOSE = 7
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Const BTN_UPDATE = 8
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Const BTN_NEW = 10
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           so to disable the New button, I'd use the following script
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterLoad ()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            ' May need to identify which entity search is operational
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            if FormObjectsLocal.FormRef.EntityName = "SalesInvoice" Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             FormObjectsLocal.FormRef.btn(10).Visible = False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           63.	Turning Off Virtual Form Menu
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           When a virtual form is created, the form menu is normally of no use.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This menu for example has no use and uses up valuable screen space:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Use this code in the form script to turn off the form menu:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterLoad ()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set ctl = FormObjectsLocal.FormRef.ctlFormCaptionController
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If Not ctl Is Nothing Then ctl.ToolbarVisible = False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           64.	Dynamic Button Pop-Up Menus
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Build 1.01.011 has new script enabled code to allow developers to dynamically create pop-up menus which are displayed on a button click.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This allows programmers to provide buttons with groups of functions.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The approach is to allow the programmer to show a menu on say a button click, then respond to the Menu_Click event when the user fires the menu (which may not be immediately, so we cannot block).
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This is what the user interaction looks like using the code that follows:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Const DeleteSelectedEMailOnly	= "Delete selected e-mail only"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Const DeleteAllEMails			= "Delete all e-mails"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Button_Click ()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           …
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ Fire the pop-up menu now
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call FormFunctions.ShowPopUpMenu(FormObjectsLocal.FormRef, _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           DeleteSelectedEMailOnly, DeleteAllEMails)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Get the menu callback from those menus we have fired dynamically
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Menu_Click (Caption, Index, Cancel)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Select Case Caption
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Case DeleteSelectedEMailOnly:	Call DeleteEMail(True, False, True)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Case DeleteAllEMails:		Call DeleteEMail(False, True, True)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Select
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           As you can see, the button click fires our code to display a pop-up menu, and when the user selects menu option, the Menu_Click event fires and we can determine which option was selected.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           65.	Hiding Tabs in Entity Search and Virtual Forms
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Build 1.01.012 has slightly enhanced code to allow the script developer to turn off the tabs where not required (in the case of a design query overriding the default search).
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This is done by coding the frmEntitySearch form script as follows:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterLoad ()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Select Case FormObjectsLocal.FormRef.EntityName
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Case "SalesInvoice"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.FormRef.tabby.TabStyle = 3 ' Turn off all tabs
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Select
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This will cause the form resize event to ignore the tabs and therefore draw a large grid and appropriately positioned buttons:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           To remove the tabs in a virtual form, you can employ exactly the same technique.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           An alternative, which is NOT recommended is to use the following code to make the one and only tab invisible:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterLoad ()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.FormRef.tabby.Visible = False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           You should of course position your grid in the Designer to be higher than originally designed (same top co-ordinate at the tab).
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           66.	Preventing Entity Search based on Form Permission
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Build 1.01.014 provides a new FormUnload method on the frmEntitySearch form to allow the developer to prevent users from loading entity searches if they are not permissioned for access to any version of an entity form.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This is done by coding the frmEntitySearch form script as follows:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterLoad ()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If Not gIsUserPermissionedForEntityForm( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.FormRef.EntityName) Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MessageBox.AppMsg "You are not permissioned to open this form."
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.FormRef.FormUnload		' 1.01.014 or later
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The global function used is as follows:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Return True if the user is permissioned to view a form for the specified entity
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Function gIsUserPermissionedForEntityForm(sEntityName)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MySQL = "Select Count(*) from formversionusers fvu, formproperties fp where fp.formid = fvu.formid" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           " And fvu.UserId = " &amp;amp; Initialisation.UserId &amp;amp; " And fp.EntityName = '" &amp;amp; sEntityName &amp;amp; "'"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           gIsUserPermissionedForEntityForm = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           (cint(Database.GetSnapshotField((MySQL), 0)) &amp;gt; 0)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           67.	Setting visibility of btnInternet on Internet Field Types
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Similar to the Spin increment shown in section 48, it is necessary to se the visibility of the globe icon  (btnInternet) used on internet fields, this can be done using the function below, again the globe has the same Index as the field so you can use pretty much the same function as the one in section 48
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           It is sometimes necessary to set the visibility of some fields by script. 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Function gSetBtnInternetVisibility(sEntityName, sTableFieldName, bVisible)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With FormObjectsLocal.ShowForm
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set objField = .GetFieldWidget((sEntityName), (sTableFieldName))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If objField Is Nothing Then Exit Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set formField = .GetFormFieldFromFieldName((sEntityName), (sTableFieldName))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           index = objField.Index
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set globe = FormObjectsLocal.formref.controls("btnInternet")(index)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If .IsWidgetVisibleOnCurrentTab((objField.hwnd)) Then 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           globe.Visible = bVisible
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Example:Call gSetBtnInternetVisibility("RequirementConfigFields", "ApplicationURL", True)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           68.	Setting Script Timeout Globally or for Each Form
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In build 2.00 onwards, it is possible to set the script timeout for each form in order to control the timing of the script engine.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This is done by the exposure of the ScriptEngines object which is a collection of all script engines within the system. The ScriptEngines object exposes a property and an object of interest to scripts:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ScriptEngines.ScriptTimeoutMilliseconds
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ScriptEngines.GetScriptEngine(hWnd as Long)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The following example code shows how to set the global and local script timeouts:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterLoad ()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Set script timeout for all subsequently instantiated script engines
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ScriptEngines.ScriptTimeoutMilliseconds = 60000
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Set script timeout in milliseconds for this form only
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set objEngine = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ScriptEngines.GetScriptEngine((FormObjectsLocal.FormRef.hWnd))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If Not objEngine Is Nothing Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           objEngine.ScriptTimeoutMilliseconds = 10000
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           69.	Using the GridAlpha from script
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           When scripting populating a grid alpha from script is is very strongly recommended that you base it upon a query. This has the following advantages:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           1)	Simplified Code.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           2)	User customization to the grid is saved and restored automatically.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           3)	Simplified SQL.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           4)	Changes to the grid and its functionality can be carried out by a non scripter.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           To set up a grid in this manner carry out the following steps:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           1) Create a query, associated with the form in question (Note: the query should follow all of the best practices defined in the Grid Queries Design Document.doc).
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           2) Set the options on the query to enable/disable the relevant functions on the grid (EG: Allow Printing.)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           3) Add the following code to script to initialise the grid (Note: This code only needs to be executed ONCE in the forms lifetime. NOT every time the grid is filled or the record is changed) :
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With FormObjectsLocal
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ Get a reference to the query and the grid.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set Grid = .ShowForm.GetFieldWidget(“ContactConfigFields”,”QuotesGrid”)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set Query = .FormRef.GridQuery.GetQueryFromCollection(("ContactQuotes"))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End with
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ Check that we have found both objects.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If Grid Is Nothing Or Query Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ This is the line that does the work, the grid will load all of its properties from the grid.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Grid.SetQuery Query.QueryProperties, False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The SetQuery method takes 2 arguments, the first is the query properties object, and the second is a Boolean specifying whether the grid should immediately fill the grid using the queries SQL. Pass it true if the grid query does not require any contextual information (EG: the current record being viewed.)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Assuming that you do need to filter the records in the query then you will need to actually fill the grid, telling it how to filter the grid.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ Get a reference to the grid.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set Grid = FormObjectsLocal.ShowForm.GetFieldWidget(“ContactConfigFields”,”QuotesGrid”)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ This is the line that fills the grid. The only argument is an optional filter clause. This will be appended to the Queries SQL.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Grid.FillGridFromQuery "ContactId = " &amp;amp; m_ContactId
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           You would call this whenever the contact Id changed, or when you wanted the grid to refresh.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           As you can see the above code is far simpler than working with prior grids, defining the columns etc in script. All of this information will be loaded from the query, and if the user changes any of it (Moves a column for example), it will be persisted and restored without the scripter having to do any work.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In addition, non scripters can go in and alter the grid layout etc without having to mess around with code.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In situations where the grid can not be based upon a query (I struggle to think of any such situation at present), it can be set up manually as follows:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             With Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               ‘ Adds a column to the grid based upon a field in the results:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               ‘ Arguments: Caption, Field Name, Width, Visible.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .AddColumnWithUnderlyingFieldName “ContactId”, “ContactId”, 1000 , False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .AddColumnWithUnderlyingFieldName “Forename(s)”, “Christian”, 1000 , True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .AddColumnWithUnderlyingFieldName “Surname”, “Surname”, 1000 , True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                   
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               ' Fill the grid.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .FillGridFromSQL sSQL
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               ' Group by the Surname column.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .FieldGrouped("Surname") = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             End With 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Both of the above situations require the grid to be populated using SQL, however it also supports AddItem type population. This can be achived as follows:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ The Add Item grid works with ADO data types (Used for formatting and sorting).
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Const adVarChar = 200
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Const adDBDate = 133
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Const adInteger = 3
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               ‘ Adds a column to the grid based upon a field in the results:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               ‘ Arguments: Caption, Width, Visible, DataType (Used for formatting and sorting).
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .AddColumnWithDataType “ContactId”, 1000 , False, adInteger
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .AddColumnWithDataType “Forename(s)”, 1000 , True, adVarChar
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .AddColumnWithDataType “D O B”,1000 , True, adDBDate
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               sCDL = .DefaultAddItemColumnDelimiter
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               sRDL = .DefaultAddItemRowDelimiter
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              ‘ Construct an Add Item string 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               ‘(Note you can do this a line at a time, or put all lines into a string and then 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               ‘ add them to the grid in one go as shown here)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              sAddItemsString = “1” &amp;amp; sCDL &amp;amp; “Dhugal” &amp;amp; sCDL &amp;amp; “01/06/1977” &amp;amp; sRDL &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            		       “2” &amp;amp; sCDL &amp;amp; “Garry” &amp;amp; sCDL &amp;amp; “01/06/1917”
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              ‘ Add the items to the grid.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              .AddItems sAddItemsString
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Grouping within the grid can be achived as follows:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            ' Group by the Surname column.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Grid.FieldGrouped("Surname") = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           70.	Setting Field, Button &amp;amp; Tab Visibility from Script
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In build 2.00.070 onwards, it is possible to program field, button and tab visibility very easily…
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Field Visibility:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.ShowForm.ShowFieldFromName(EntityNameCF, "EarliestStartDate") _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This deals with ALL related widgets such as labels, lookup buttons, spin buttons etc..
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Button Visibility:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.ShowForm.ShowButtonFromFunction(“Fire Interactive Video”) = False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Tab Visibility:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.ShowForm.ShowTabFromIndex(1) = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This deals with cases when tab to be hidden is selected.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Tab Selection:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.ShowForm.SelectTabFromIndex(2) = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This ignores cases when tab to be selected is not visible.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Appendix A - Type Mismatch Errors
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This excerpt from MSDN explains the reason why some functions in Client Code will not be allowed to be called with BYREF parameters because of limitations in the VBScript (or JavaScript) language.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           INFO: Type Mismatch Errors When You Pass Parameters from ASP to a Visual Basic Component
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ________________________________________
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The information in this article applies to:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Active Server Pages 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	Microsoft Visual Basic Learning, Professional, and Enterprise Editions for Windows, versions 5.0, 6.0
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ________________________________________
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           SUMMARY
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The code sample below illustrates various scenarios that causes 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Type Mismatch
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           errors with method calls from an Active Server Page (ASP) using Visual Basic Script to Visual Basic COM components. 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'VB Code : [Project=prjParam;Class=clsParam]
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'By default, the parameter is passed 'ByRef'
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Sub x( a as string )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             a = "Changed"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'ASP Code
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           k = "Hello"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'Create the above VB object
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set obj = Server.CreateObject("prjParam.clsParam")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           obj.x k    'Type Mismatch error occurs
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           obj.x (k)   'Using PARANTHESIS forces 'ByVal' , 'k' does not change
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call obj.x (k) 'Type Mismatch error occurs
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call obj.x cstr(k)  'The CSTR function returns a string,
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      'the address of the variable (k) is not passed.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      'The value of 'k' doesn't change
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set obj = Nothing 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The following is another example that can cause the error: 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'VB Code : [Project=prjParam;Class=clsParam]
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'If you do not specify, by default the parameter is passed 'ByRef'
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'Note: Parameter type is VARIANT
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Sub y( a as variant )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             a = "Changed"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'ASP Code
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           k = "Hello"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'Create the above VB object
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set obj = Server.CreateObject("prjParam.clsParam")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           obj.y k    'changes 'k'
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           obj.y (k)   'Using PARANTHESIS forces 'ByVal' , 'k' doesn’t change
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call obj.y (k) 'changes 'k'
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set obj = Nothing 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MORE INFORMATION
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           VBScript only supports VARIANT ByRef parameters. You can use VBScript to call a procedure that takes ByRef strings, but the default behavior of components built with Visual Basic is to fail with a type mismatch error when trying to pass ByRef parameters to these components. OLE Automation's default type-coercion function fails when asked to convert a ByRef variant into any other ByRef type. 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           VBScript does not impose this restriction. However, it is the default behavior of the component that decides that a ByRef variant cannot be converted into a ByRef string. 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If a parameter to a procedure is enclosed in parenthesis, the parameter is first evaluated as an expression. Because the result of an expression cannot be passed by reference, the parameter is passed ByVal and no error is reported. 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Avoid using ByRef parameters unless they are explicitly needed. This is because: 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	ByRef procedures cause more overhead during cross-process marshaling, because COM must marshal the value both to and from the object. ByVal parameters require only one-way marshaling.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           However, if you are willing to accept the overhead of any marshaling at all, an extra parameter marshal back is unlikely to cause a huge performance degradation.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	ByRef parameters can introduce hard-to-find bugs in your code if you accidentally change the value of one of the parameters.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           •	JScript does not support ByRef parameters of any type, so if you plan to write components that will support JScript, you should not use ByRef parameters at all. 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-546819.jpeg" length="173791" type="image/jpeg" />
      <pubDate>Mon, 10 Oct 2005 15:26:27 GMT</pubDate>
      <author>garry@trisys.co.uk (Garry Lowther)</author>
      <guid>https://www.trisys.co.uk/clientcode-scripting-bible</guid>
      <g-custom:tags type="string">Recruiting CRM</g-custom:tags>
      <media:content medium="image" url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-546819.jpeg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-546819.jpeg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>TriSys Scripting Engine Bible</title>
      <link>https://www.trisys.co.uk/trisys-scripting-engine-bible</link>
      <description>The TriSys scripting bible is for VB Script developers to program the TriSys Recruitment Software application.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys 6.01
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Scripting Engine Bible &amp;amp; Tutorial
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h2&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/h2&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys provides very flexible customisability by way of form design, config fields, reports, actions and stored procedures to implement business logic. From 2000, TriSys provided a scripting engine to allow scripts to be written so that the application can be programmed by non-professional programmers during implementation.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Prepared by:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Garry Lowther
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           TriSys Business Software Ltd
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Original Draft: September 2000
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Current Version: Monday, 25 April 2005
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
      
            Table of Contents
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           1.   Introduction........................................................................................................................................................................................... 4
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           2.   Event Notes............................................................................................................................................................................................ 5
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           3.   Virtual Entities/Forms........................................................................................................................................................................ 6
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           4.   TriSys Object Model........................................................................................................................................................................... 8
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           5.   Sample TriSys VB Script................................................................................................................................................................. 10
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           6.   Example of setting ellipses lookups............................................................................................................................................... 16
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           7.   Step by Step Example of Master-Detail Dynamic Grid Handling....................................................................................... 17
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           8.   Field Visibility Example Code – How to Use FormFields within ShowForm................................................................... 22
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           9.   Button Visibility Example Code – How to Use FormButton within ShowForm.............................................................. 24
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           10.     Setting Selected Tab In Script................................................................................................................................................... 25
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           11.     Detecting Which Button is Pressed........................................................................................................................................... 26
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           12.     Firing an Action Button............................................................................................................................................................... 27
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           13.     Firing an Action From Script Code.......................................................................................................................................... 28
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           14.     Validating Action Values............................................................................................................................................................. 30
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           15.     Processing Requirement Shortlist............................................................................................................................................. 32
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           16.     Creating a Lookup Combo......................................................................................................................................................... 34
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           17.     Asking the User to Choose from a List.................................................................................................................................... 35
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           18.     Using SQL Selection Object....................................................................................................................................................... 36
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           19.     Modal Virtual Form Interaction............................................................................................................................................... 37
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           20.     Action Form Collection Manipulation..................................................................................................................................... 40
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           21.     Firing A Report From Script..................................................................................................................................................... 41
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           22.     Using Classes in VBScript – Object Oriented Programming........................................................................................... 42
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           23.     Programming Grid Column/Cell Colours.............................................................................................................................. 43
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           24.     Multi-Select Grid Rows............................................................................................................................................................... 45
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           25.     Launching Core Entity Forms From Script.......................................................................................................................... 46
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           26.     Using FileSystemObject in VBScript....................................................................................................................................... 48
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           27.     Read all Grid Rows....................................................................................................................................................................... 49
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           28.     External Document Launching.................................................................................................................................................. 50
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           29.     Global Parameter Value.............................................................................................................................................................. 51
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           30.     Launching E-Mail Client............................................................................................................................................................. 52
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           31.     Colouring Tabs............................................................................................................................................................................... 55
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           32.     Crystal Report Form Script....................................................................................................................................................... 56
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           33.     Automating Word......................................................................................................................................................................... 58
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           34.     Searching for Requirements within Post Code Radius....................................................................................................... 59
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           35.     Updateable Grid for Data Entry............................................................................................................................................... 60
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           36.     Programmed Fields Re-Appearing on Record Save............................................................................................................ 62
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           37.     AddItem Grid Rows...................................................................................................................................................................... 63
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           38.     Unbound Virtual Grid Population........................................................................................................................................... 64
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           39.     Refreshing Grids on Other Entity Forms............................................................................................................................... 65
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           40.     Running Mail Merges From Script.......................................................................................................................................... 66
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           41.     Diagnostics and User Activity Logging for Debugging and Audit Trails...................................................................... 67
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           42.     Closing Action Forms................................................................................................................................................................... 68
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           43.     Intercepting Shortlisting Events................................................................................................................................................ 69
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           44.     Post Code Lookup......................................................................................................................................................................... 70
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           45.     Using Bookmarks in Grids.......................................................................................................................................................... 71
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           46.     Accessing Grid SQL Query Recordset and Cloning............................................................................................................ 72
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           47.     Unbound Grids - Formatting Columns................................................................................................................................... 73
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           48.     Fast Contact Search – Script Access........................................................................................................................................ 74
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           49.     Form_Unload – Preventing form from closing from Script.............................................................................................. 75
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           50.     Spin Increments – Setting Visibility from Script.................................................................................................................. 76
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           51.     FreeTextSearchEngine – Searching CV’s using ISYS from Script................................................................................. 77
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           52.     Using CommonDialogue Friendly Function to Find Files.................................................................................................. 78
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           53.     Access System Settings................................................................................................................................................................. 79
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           54.     Setting Script Timeout Globally or for Each Form............................................................................................................. 80
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           55.     Appendix A - Type Mismatch Errors...................................................................................................................................... 81
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           1.     Introduction
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This shows which events are raised for each object:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            FormObjectEvent_AfterInitialise    ' Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            FormObjectEvent_AfterInsert        ' Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            FormObjectEvent_AfterLoad          ' Form
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            FormObjectEvent_AfterLoadRecord    ' Form
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            FormObjectEvent_AfterSaveRecord    ' Form
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            FormObjectEvent_AfterShortlist     ' Form (Candidate Search, Requirement Only)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            FormObjectEvent_AfterUpdate        ' Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            FormObjectEvent_BeforePopulation   ' Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            FormObjectEvent_BeforeSaveRecord   ' Form
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            FormObjectEvent_Change             ' Field
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            FormObjectEvent_Click              ' Button, Field, Menu, Grid, Tab
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            FormObjectEvent_DblClick           ' Field, Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            FormObjectEvent_DisplayCell        ' Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            FormObjectEvent_ExternalRefresh   ' Form
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            FormObjectEvent_GotFocus           ' Field, Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            FormObjectEvent_KeyPress           ' Field, Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            FormObjectEvent_LostFocus          ' Field, Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            FormObjectEvent_RowLoaded          ' Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            FormObjectEvent_RowSelection       ' Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            FormObjectEvent_Unload             ' Form
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           2.     Event Notes
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This section contains further information about events as they are enhanced.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_ExternalRefresh (FormName, Id)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This event should be captured every time a record in the application is saved.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            It uses the same mechanism as the internal source code which receives an event when a record is updates so that any interested fields/grids etc can be refreshed to show the updated information.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           For example if a company address changes, any forms showing the old company address need to show the new one.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Script can take advantage of this mechanism by capturing this event and determining whether the saved form and record has any cause for the script to take action.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           An example might be when a script is controlling master/detail grids and the user drills down into the detail record. Both grids will need to be refreshed if the user updates the record.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This mechanism provided the necessary event.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Note: If an entity form contains a grid from another entity and the user drills down into this, TriSys will automatically refresh the first form after the second has been updated. This requires no scripting.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Grid_BeforePopulation (SQL, Cancel)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            This event is called just before a grid is populated. The SQL parameter contains the SQL derived dynamically from both the form designed query and the on-screen widgets which have been manipulated by the user.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           It gives the script developer the chance to override the SQL by for example, parsing in extra search parameters which have been created using script code.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The Cancel parameter can be overridden by the script using the FunctionStatus object in order to cancel the form from processing the SQL if the script wishes to manipulate the grid entirely autonomously from the form logic. This technique provides absolute script control to override the normal search behaviour.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           3.     Virtual Entities/Forms
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Form Designer has been extended (31
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;sup&gt;&#xD;
      
           st
          &#xD;
    &lt;/sup&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            March 2001) to allow for ‘virtual entities’. These are defined as ad-hoc forms with no underlying entity. All entity fields would be populated entirely by the scripting object model.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The form can be invoked from anywhere and form designer will allow buttons, fields etc to be added to it with script code behind.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Virtual entities/forms are created in exactly the same manner as normal entities i.e. using the entity builder:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Pressing the New button loads the Entity Builder:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Note that when the Virtual Entity/Form check box is ticked, the Modal Form check box appears, and the Contact Management Links and Entity Links tabs become invisible (they are not of any use).
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Enter the name of your entity and provide a sensible description to help self-document the entity.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If you want the form to be loaded modally, i.e. shown on-top of all other forms, centred on the screen, and has all focus such that the user must complete the form to return to TriSys, then check the Modal Form check box.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Select the Form Details tab. This allows you to set a caption for the form, and to assign an icon for it which will allow it to be available from the main list bar and it will also be shown on the top left of the form when loaded:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            When you save your entity, you will then design the form in the same fashion as other forms, actions and queries.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The main difference is that there are no fixed fields or reference fields and no default buttons. This is because this is a virtual form i.e. it sits within the TriSys infrastructure but does not have any business logic to read or save from the TriSys object model. The whole idea is that you cde this logic entirely through script. This has the main advantage of letting you write your own application rules without having to tweak existing rules.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           When you create config fields in the form designer for virtual forms, no fields are created on the SQL Server database. It is the responsibility of the script developer to write code which will read/write these fields to/from whatever data source is necessary, which f course may not be a SQL Server database.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           When developing script, the standard objects and mechanisms are identical to writing script for other forms, such that virtual form code looks identical to other forms. You can cut &amp;amp; paste code from all parts of the system and re-use global functions etc…
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The method of accessing form fields is the same too, with the table name being the name of the newly created entity + “ConfigFields” which is in keeping with the standard system nomenclature for accessing config fields e.g.:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With FormObjectsLocal.ShowForm
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sForenames = .GetFieldValue("AddContactConfigFields", "Forenames")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 sSurname = .GetFieldValue("AddContactConfigFields", "Surname")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           4.     TriSys Object Model
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This section contains detailed documentation of the TriSys Object Model. This object model is split into 2 parts for the purposes of the scripting engine:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Forms Objects – these provide access to the form upon which the scripts are invoked
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Global Objects – these provide access to the global business object model
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Form Objects Examples:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Dim formObjectsfrmMain, formField, formObj
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Set formField = FormObjectsLocal.GetFormObjectByName(“Contact”, “Male”)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If formField.formWidget.Value = 1 then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      formField.formWidget.Text = “Man”
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Else
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  formField.formWidget.Text = “Woman”
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      End if
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      ‘ Access another form using different global collection
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Set formObjectsMain = FormObjectsGlobal(“frmMain”)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      If not formObjectsMain is nothing then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Set formRef = formObjectsMain.FormRef
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      formRef.Caption = “Someone changed sex!”
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      End if
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
      
            The exposed TriSys Objects are:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             Global Object
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Description
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              Initialisation
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            UsrCfgUsers table fields for current user + collections of contacts, companies etc..
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              TriSysDatabase
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            The CDatabase object which exposes methods to access the SQL Server database.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              WordProcessor
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Invoke Word automation
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              StringFunctions
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            String manipulation functions
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              MessageBox
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Show messages and ask questions of user
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              FileSystem
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Access the underlying windows file system
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              Selection
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Select business data e.g. contacts, companies from pop-up dialogue grids
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              DataWidgets
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            The grid functions to operate upon on-screen grids
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              DbGet
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Get standard database functions
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              Numbers
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            General purpose number manipulation
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              CrystalReports
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Underlying crystal report related functions not CRPE
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              FormFunctions
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            The functions which control TriSys forms
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              Diagnostics
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Diags.out file access to record own messages to output file
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              Miscellaneous
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Functions such as auto-dial, load web browser etc..
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              ShellExecute
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Execute shell functions such as launch e-mail dialogue etc..
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              Registry
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Access the registry
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              AnimateWait
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
             Show animation dialogue similar to TriSys start up
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              ProgressWait
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Show progress gauge or tick stages
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              BigInput
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Capture any text input from a dialogue box
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              ErrorHandling
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Standard error handler functions
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              MailMerge
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Access to standard mail merge templates utilising Universal Data Source.tmm
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              PostCodeLookup
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Access to the post code lookup object
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              EMailGateway
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            The e-mail client automation object for interacting with Outlook/Notes etc..
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              FreeTextSearchEngine
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Access the ISYS free text search engine to search CV’s
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
             
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           5.     Sample TriSys VB Script
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This section contains sample VB Script to demonstrate various features of the TriSys Object Model and VB Script.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Contact form script.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Contains business logic to deal with configurable form.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Globals to preserve state between invocations
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Dim GotFocusColour     ' Colour of field normally - used in LostFocus/GotFocus
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Sub Button_Click
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                MessageBox.AppMsg "Script: You pressed button: " &amp;amp; FormObjectsLocal.EventControl.Caption
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Capture field click and synchronise the Title and Sex options
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Sub Field_Click
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set fieldObj = FormObjectsLocal.EventControl
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set FieldDescription = FormObjectsLocal.ShowForm.GetFieldDescriptionFromWidgetHwnd( fieldObj.hWnd )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Turn on for debugging
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'MessageBox.AppMsg "Field_Click: " &amp;amp; FieldDescription.TableName &amp;amp; "." &amp;amp; FieldDescription.TableFieldName
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                if Not FieldDescription is nothing then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Select Case FieldDescription.TableFieldName
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            case "ContactTitle"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  ProcessComboTitle fieldObj.Text
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            case "ContactTypeClient", "ContactTypeCandidate", "ContactTypeClientCandidate"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  ProcessContactType
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            case "CandidateStatus"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                                   ProcessComboStatus fieldObj
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      End Select 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                end if
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Called when title combo is changed.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Set the Sex accordingly
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Sub ProcessComboTitle ( sTitle )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                select case sTitle
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      case "Mr", "De heer", "Herr", "Monsieur"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            bMale = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      case else
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            bMale = False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                end select
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                REM MessageBox.AppMsg "ProcessComboTitle: " &amp;amp; sTitle &amp;amp; ", Male=" &amp;amp; bMale
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' Set in correct Check box after change
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                set maleObj = FormObjectsLocal.ShowForm.GetFieldWidget("Contact", "ContactMale")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                set femaleObj = FormObjectsLocal.ShowForm.GetFieldWidget("Contact", "ContactFemale")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                if not maleObj is nothing then maleObj.Value = Abs(bMale)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                if not femaleObj is nothing then femaleObj.Value = Abs(Not bMale)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' Marital Status
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                set marriedObj = FormObjectsLocal.ShowForm.GetFieldWidget("Contact", "ContactMarried")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                if not marriedObj is nothing then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      if sTitle = "Mrs" then marriedObj.Value = 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                end if     
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' When Active status = Do not Use, then turn RED for danger
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Sub ProcessComboStatus ( objStatus )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                 if not objStatus is nothing then
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      if objStatus.Text = "Do Not Use" then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            objStatus.Backcolor = vbRed
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      else
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            objStatus.Backcolor = vbYellow     
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      end if
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                end if
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Called when contact type is changed.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Hide/Show controls accordingly
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Sub ProcessContactType ( )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                bClient = Not FormObjectsLocal.ShowForm.GetFieldValue("Contact", "ContactTypeCandidate")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                set objAvailabilityDate = FormObjectsLocal.ShowForm.GetFieldWidget("Contact", "AvailabilityDate")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                if not objAvailabilityDate is nothing then objAvailabilityDate.Visible = not bClient
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                set objAvailabilityDateLabel = FormObjectsLocal.ShowForm.GetFieldWidget("Contact", "AvailabilityDate", 1)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            if not objAvailabilityDateLabel is nothing then
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Only set the visibility if this button if in view
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If FormObjectsLocal.ShowForm.isWidgetVisibleOnCurrentTab( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           objAvailabilityDateLabel.hWnd) Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           objAvailabilityDateLabel.Visible = not bClient
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                end if
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' Set the name colours to those for each contact
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                set objForenames = FormObjectsLocal.ShowForm.GetFieldWidget("Contact", "Forenames")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                set objSurname = FormObjectsLocal.ShowForm.GetFieldWidget("Contact", "Surname")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                 if not objForenames is nothing and not objSurname is nothing then
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                       if bClient then       
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            with objForenames
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  .BackColor = vbYellow
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  .Forecolor = vbBlue
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            end with
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                             with objSurname
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  .BackColor = vbYellow
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  .Forecolor = vbBlue
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            end with
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      else
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            with objForenames
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  .BackColor = vbRed
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  .Forecolor = vbYellow
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            end with
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                             with objSurname
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  .BackColor = vbRed
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  .Forecolor = vbYellow
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            end with
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      end if
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                end if
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                exit sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' Set in correct Check box after change
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                if bClient then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      FormObjectsLocal.FormRef.Tabby.Tabs(3).Caption = "Foreign Language"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                else
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      FormObjectsLocal.FormRef.Tabby.Tabs(3).Caption = ""
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                end if
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Sub Field_GotFocus
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set fieldObj = FormObjectsLocal.EventControl   
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                GotFocusColour = fieldObj.Backcolor
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                 fieldObj.Backcolor = vbCyan  'glbFieldFocusColour
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Sub Field_LostFocus
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set fieldObj = FormObjectsLocal.EventControl   
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                fieldObj.Backcolor = GotFocusColour
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' Remember to call fields which are validated and affect colour afterwards!!!
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                call Field_Click
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Sub Field_KeyPress(KeyAscii)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set fieldObj = FormObjectsLocal.EventControl   
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set FieldDescription = FormObjectsLocal.ShowForm.GetFieldDescriptionFromWidgetHwnd( fieldObj.hWnd )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Turn on for debugging
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'FormObjectsLocal.FormRef.Caption = "Field_KeyPress: " &amp;amp; Now &amp;amp; ": " &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '          FieldDescription.TableName &amp;amp; "." &amp;amp; FieldDescription.TableFieldName     
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                if Not FieldDescription is nothing then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Select Case FieldDescription.TableFieldName
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            case "Alternative1PostCode"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  KeyAscii = Asc(UCase(Chr(KeyAscii)))    ' Convert to uppercase
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      End Select 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                end if
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' Set function parameter - caller can retrieve that this has changed
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                FunctionStatus.SetParameter("KeyAscii") = KeyAscii
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
      
            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Company Script to add a button and respond to its events
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' to change the colours of the screens etc…
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Oct 2000
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Garry Lowther
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           dim m_ColIndex
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Sub Form_AfterLoad
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Dim cmdObject
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
               
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set cmdObject = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      formObjectsLocal.LoadControl("VB.CommandButton", "btn")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             with cmdObject
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                .Visible = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                .Caption = "Press Me"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                .Tag = "THEONE"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                .top = 1000
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                .left = 1000
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                .ZOrder
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             end with
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Sub Button_Click
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                dim colour, i
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                if FormObjectsLocal.EventControl.Tag = "THEONE" then 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      'MessageBox.AppMsg "Script: You pressed button: " &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      '    FormObjectsLocal.EventControl.Caption
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      m_ColIndex = m_ColIndex + 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      select case m_ColIndex
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            case 1:    colour = vbBlue
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            case 2: colour = vbRed
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            case 3: colour = vbGreen
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            case 4: colour = vbYellow
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            case 5: colour = vbCyan
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            case 6: colour = vbMagenta
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            case 7
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  colour = vbWhite
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  m_ColIndex = 0
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      end select
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      ' Colour controls to match
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      formObjectsLocal.formRef.tabby.BackColor = colour
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      formObjectsLocal.formRef.ctlFormCaptionController.GetToolbar.BackColor = colour
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      formObjectsLocal.formRef.scroller.BackColor = colour
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      FormObjectsLocal.EventControl.Caption = "Press Me (" &amp;amp; m_ColIndex &amp;amp; ")"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      for i = 1 to formObjectsLocal.formRef.controls("txt").Count - 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            formObjectsLocal.formRef.controls("txt")(i).Backcolor = colour
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      for i = 1 to formObjectsLocal.formRef.controls("btn").Count - 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            formObjectsLocal.formRef.controls("btn")(i).Backcolor = colour
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      for i = 1 to formObjectsLocal.formRef.controls("pnl").Count - 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            formObjectsLocal.formRef.controls("pnl")(i).Backcolor = colour
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      for i = 1 to formObjectsLocal.formRef.controls("frame").Count - 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            formObjectsLocal.formRef.controls("frame")(i).Backcolor = colour
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                end if
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           6.     Example of setting ellipses lookups
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterLoad ()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Call MakeWidgetEnabled("ContractConfigFields", "TSAuthoriser1", "btnLookupFind", False)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub MakeWidgetEnabled(sTableName, sFieldName, sAssociatedWidgetName, bEnabledFlag)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set widget = FormObjectsLocal.ShowForm.GetFieldWidget((sTableName), (sFieldName))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If Not widget Is Nothing Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      With FormObjectsLocal.FormRef.Controls(sAssociatedWidgetName)(widget.index)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            .Enabled = False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            '.backcolor = vbRed
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           7.     Step by Step Example of Master-Detail Dynamic Grid Handling
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In this example, we create 2 grids using form designer on a form (or action) which are not linked to any entities and write script code to handle the interaction between them.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 1: Open form and create 2 grids in Form Designer.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Call these GridMaster and GridDetail.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 2: Place these on a convenient location like so:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
      
            Step 3: Save form design and test the design. The tab should look as follows:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 4: Open the script editor for this form and paste the following code into the editor:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterLoad ()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Call InitialiseGridMaster( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.ShowForm.GetFieldWidget( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "RequirementConfigFields", "GridMaster"))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' The table selection grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub InitialiseGridMaster(dwGrid)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              Dim i
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              If dwGrid Is Nothing Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               MessageBox.appmsg "GridMaster Not found!"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              ' Initialise grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .Columns.RemoveAll
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .DataMode = 2                ' Add Item Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .AllowAddNew = False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .AllowUpdate = False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .Caption = "Main TriSys Tables - Select to view details"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .MaxSelectedRows = 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .RecordSelectors = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .SelectTypeRow = 1           'Single Select
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' More settings
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              ' Add columns
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              With DataWidgets
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                  .AddColumnToGrid (dwGrid), 0, "Table Name", 4000, True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                  .AddColumnToGrid (dwGrid), 1, "Actual Table Name", 2000, False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              ' Add Rows
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      .AddItem "©Contact©,©Contact©"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      .AddItem "©Company©,©Company©"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      .AddItem "©Placement©,©Contract©"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      .AddItem "©Requirement©,©Requirement©"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      .AddItem "©Users©,©Users©"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      .AddItem "©FieldDescription©,©FieldDescription©"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      .AddItem "©FormProperties©,©FormProperties©"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' Select first row and fire detail event
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                dwGrid.AddItemBookmark 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Call InitialiseGridDetail( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      FormObjectsLocal.ShowForm.GetFieldWidget _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ("CompanyConfigFields", "GridDetail"), "Contact")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Grid_RowSelection ()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set fd = FormObjectsLocal.ShowForm. _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           GetFieldDescriptionFromWidgetHwnd (FormObjectsLocal.EventControl.hWnd)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If fd Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If fd.TableFieldName = "GridMaster" Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Set dwGrid = FormObjectsLocal.EventControl
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      sTableName = dwGrid.Columns(1).Text
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Call InitialiseGridDetail(FormObjectsLocal.ShowForm.GetFieldWidget _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ("CompanyConfigFields", "GridDetail"), sTableName)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub InitialiseGridDetail(dwGrid, sTableName)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              Dim i, c
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              If dwGrid Is Nothing Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               MessageBox.appmsg "GridDetail Not found!"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              ' Initialise grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .Columns.RemoveAll
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .DataMode = 2                ' Add Item Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .AllowAddNew = False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .AllowUpdate = False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .Caption = "First 10 Rows of Table: " &amp;amp; sTableName
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .MaxSelectedRows = 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .RecordSelectors = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .SelectTypeRow = 1           'Single Select
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .Redraw = False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
             
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                i = 0
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                sSQL = "Select Top 10 * From " &amp;amp; sTableName
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               Set rs = TriSysDatabase.OpenRecordset((sSQL))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               Do While Not rs.eof
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                     i = i+1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                     If i = 1 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                         ' Add columns
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                             For c = 1 to rs.Fields.Count
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                          DataWidgets.AddColumnToGrid (dwGrid), c-1, _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           rs.Fields(c-1).Name, 1000, True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                         Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      ' Add row to grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      sAddItemString = ""
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                       For c = 1 to rs.Fields.Count
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            If c &amp;gt; 1 Then sAddItemString = sAddItemString &amp;amp; ","
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                    sAddItemString = sAddItemString &amp;amp; "©" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           StringFunctions.VBFormat(rs.Fields(c-1).Value, "@") &amp;amp; "©"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                   Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      dwGrid.AddItem sAddItemString
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      rs.MoveNext
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              Loop
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              rs.close
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              dwGrid.Redraw = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Grid_DblClick ( Cancel )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set fd = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.ShowForm.GetFieldDescriptionFromWidgetHwnd _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           (FormObjectsLocal.EventControl.hWnd)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If fd Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If fd.TableFieldName = "GridDetail" Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Set dwGrid = FormObjectsLocal.EventControl
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      sField1 = dwGrid.Columns(0).Text
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      MessageBox.appmsg "You double clicked record: " &amp;amp; sField1 &amp;amp; "?"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 5: Edit the script if necessary and replace CompanyConfigFields with the table upon which your created the grids.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 6: Apply the changes and open the TriSys form and it should operate as follows when any row in the grid is selected in the master grid (with either the mouse click or cursor key up/down), the detail grid should show the first 10 records from the table:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The code demonstrates a number of features:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Creation of empty grids with no standard functionality
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Dynamic creation of grid columns
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Grid Event processing: row selection and row drill down
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Master/Detail functionality which can be applied to any database tables
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Speed at which the script engine can interact with the database in real-time
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Flexibility of independence from the TriSys entity builder framework
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           8.     Field Visibility Example Code – How to Use FormFields within ShowForm
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In order to fully address the issue of widget visibility from script, I attach some code which you will find useful.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Here is a technical explanation of the TriSys internal config forms engine:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Each CShowForm class (the run-time FormObjectsLocal.ShowForm object) has a number of child objects.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           One of the objects is CFormField which is an on-form instance of the CFieldDescription class which describes the field.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           By setting the Visible (or Enabled, BackColour, FontSize, ForeColour, Left, Top, Height, Width, ReadOnly, ShowLabel, ToolTipText) property of the CFormField object, you allow CShowForm to treat the field in the way you want it which overrides the form designed attributes.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The example below shows how I have done it for the contact availability date which I do not want to be viisible when the contact is a client.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The SetFieldVisible function can be placed on any form and used accordingly for any field.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Hide/Show controls accordingly
           &#xD;
      &lt;br/&gt;&#xD;
      
            Sub ProcessContactType()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               ' Determine whether the contact is a client or not
           &#xD;
      &lt;br/&gt;&#xD;
      
               bClient = Not FormObjectsLocal.ShowForm.GetFieldValue("Contact", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "ContactTypeCandidate")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               ' Now set the visibility of these fields
           &#xD;
      &lt;br/&gt;&#xD;
      
               Call SetFieldVisible("Contact", "AvailabilityDate", Not bClient)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            ' Generic function to set a fields (and labels) visibility
            &#xD;
        &lt;br/&gt;&#xD;
        
             Private Sub SetFieldVisible(sEntityName, sTableFieldName, bVisible)
            &#xD;
        &lt;br/&gt;&#xD;
        
               Dim objField, objLabel, formField
            &#xD;
        &lt;br/&gt;&#xD;
        
                   
            &#xD;
        &lt;br/&gt;&#xD;
        
               With FormObjectsLocal.ShowForm
            &#xD;
        &lt;br/&gt;&#xD;
        
                  ' Get the widget and CFormField object for the specified field
            &#xD;
        &lt;br/&gt;&#xD;
        
                  Set objField = .GetFieldWidget((sEntityName), (sTableFieldName))
            &#xD;
        &lt;br/&gt;&#xD;
        
                  Set formField = .GetFormFieldFromFieldName((sEntityName), (sTableFieldName))
            &#xD;
        &lt;br/&gt;&#xD;
        
                           
            &#xD;
        &lt;br/&gt;&#xD;
        
                          
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            ' If field found, set visiblity so that CShowForm class knows when to show
            &#xD;
        &lt;br/&gt;&#xD;
        
                  If Not formField Is Nothing Then formField.Visible = bVisible
            &#xD;
        &lt;br/&gt;&#xD;
        
             
            &#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Only set the visibility if this field if in view
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If FormObjectsLocal.ShowForm.isWidgetVisibleOnCurrentTab( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           objField.hWnd) Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                         
            &#xD;
        &lt;br/&gt;&#xD;
        
                       ' Make field widget visible/invisible right now
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ without refreshing whole form
           &#xD;
      &lt;br/&gt;&#xD;
      
                 If Not objField Is Nothing Then objField.Visible = bVisible
           &#xD;
      &lt;br/&gt;&#xD;
      
                  
           &#xD;
      &lt;br/&gt;&#xD;
      
                 ' Do control label visibility now too
           &#xD;
      &lt;br/&gt;&#xD;
      
                 Set objLabel = .GetFieldWidget((sEntityName), (sTableFieldName), 1)
           &#xD;
      &lt;br/&gt;&#xD;
      
                 If Not objLabel Is Nothing Then objLabel.Visible = bVisible
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           end if
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             End With
           &#xD;
      &lt;br/&gt;&#xD;
      
            End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            ----- Original Message -----
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           From: Arnold Lieberman &amp;lt;
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="mailto:arniel@justassociates.com" target="_blank"&gt;&#xD;
      
           arniel@justassociates.com
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      
           &amp;gt;
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           To: GaRRy Lowther &amp;lt;
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="mailto:garry@technical.demon.co.uk" target="_blank"&gt;&#xD;
      
           garry@technical.demon.co.uk
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      
           &amp;gt;
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Cc: Graham Bridle &amp;lt;
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="mailto:grahamb@justassociates.com" target="_blank"&gt;&#xD;
      
           grahamb@justassociates.com
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      
           &amp;gt;
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Sent: 30 January 2001 17:33
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Subject: Request for new facilities
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           &amp;gt; GaRRY,
           &#xD;
      &lt;br/&gt;&#xD;
      
            &amp;gt;   There are a couple of things that I need:
           &#xD;
      &lt;br/&gt;&#xD;
      
            &amp;gt; * When a config form is clicked on, all the controls refresh themselves. If there is any script on the form to modify the controls' appearance, the
           &#xD;
      &lt;br/&gt;&#xD;
      
            &amp;gt; changes are lost when the refresh is completed. Can I have a hook to intercept the refresh?
           &#xD;
      &lt;br/&gt;&#xD;
      
            &amp;gt; * When selecting a placement to display from the requirement form, the placement form is loaded but the controls are not displayed until the form
           &#xD;
      &lt;br/&gt;&#xD;
      
            &amp;gt; is clicked on. Can you investigate this? I can send you an export schema if that will help.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           9.     Button Visibility Example Code – How to Use FormButton within ShowForm
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In order to fully address the issue of button visibility from script, here is some code which you will find useful.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This is very similar to that in the previous chapter, but uses the form buttons collection.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Button_Click
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' Not interested in non-config buttons
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           if FormObjectsLocal.EventControl.Name &amp;lt;&amp;gt; "btn" then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set btn = FormObjectsLocal.ShowForm.GetButtonFromIndex("btn", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            FormObjectsLocal.EventControl.Index)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If btn Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Select case btn.ButtonFunction
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Case “The One To Make Invisible”
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            Call SetButtonVisibility(btn.ButtonFunction, False)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End Select
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Set the visibility of the specified button.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            ' This uses the CShowForm class to control the buttons visibility between
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ tab clicks
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Function SetButtonVisibility(sButtonFunction, bVisible)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' Get the form button from the CShowForm class
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set formButton = FormObjectsLocal.ShowForm.GetButtonFromFunction( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "btn", (sButtonFunction))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If formButton Is Nothing Then Exit Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' Set its visibility
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                formButton.Visible = bVisible
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' Now set the current widget instance visibility
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set btnWidget = formButton.FormWidget
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If btnWidget Is Nothing Then Exit Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Only set the visibility if this button if in view
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If FormObjectsLocal.ShowForm.isWidgetVisibleOnCurrentTab(btnWidget.hWnd) Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           btnWidget.Visible = bVisible
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           10. Setting Selected Tab In Script
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Developers,
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           To force another tab to get focus on a config form and force redraw of the tab widgets, use the following code
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With FormObjectsLocal.FormRef
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              .Tabby.Tabs(2).Selected = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              .tabby_click
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This performs the same processing as if the user selected the tab with the mouse.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The .tabby_click event corresponds to the Public Sub tabby_Click method of the underlying form (you VB'ers).
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Garry.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           -----Original Message-----
           &#xD;
      &lt;br/&gt;&#xD;
      
            From: Graham Bridle [
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="mailto:Grahamb@justassociates.com" target="_blank"&gt;&#xD;
      
           mailto:Grahamb@justassociates.com
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            ]
            &#xD;
        &lt;br/&gt;&#xD;
        
             Sent: 29 January 2001 09:52
            &#xD;
        &lt;br/&gt;&#xD;
        
             To:
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="mailto:'garry@technical.demon.co.uk'" target="_blank"&gt;&#xD;
      
           'garry@technical.demon.co.uk'
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
      
            Subject: Selecting Tabs
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Garry,
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            I am using the following command to select differrent tabs on a form, it works, but it is not drawing the form objects until you click on the form somewhere.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Me ? or you ?
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            g
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               FormObjectsLocal.FormRef.Tabby.Tabs(2).Selected = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           11. Detecting Which Button is Pressed
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Create a button using form designer and give it a function name: “TabTest”
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Drop it onto a form.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Write the following script code to catch the button click even for it:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Button_Click()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' Not interested in non-config buttons
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           if FormObjectsLocal.EventControl.Name &amp;lt;&amp;gt; "btn" then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Set btn = FormObjectsLocal.ShowForm.GetButtonFromIndex(“btn”, _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  FormObjectsLocal.EventControl.Index)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      If btn is nothing then exit sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      If btn.ButtonFunction = “TabTest” Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  ‘ Your code for this button in here
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      End if
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           12. Firing an Action Button
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This tiny script allows you to invoke an action from a config form.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Steps to reproduce:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ol&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;span&gt;&#xD;
          
             Create action
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;span&gt;&#xD;
          
             Create an action button
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;span&gt;&#xD;
          
             Add the action button to the form
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Write this code to fire the action associated with the button from script:
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ol&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Sub YourFunction() 
            &#xD;
      &lt;br/&gt;&#xD;
      
              Call FireActionButton("Get In Touch")
           &#xD;
      &lt;br/&gt;&#xD;
      
            End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub FireActionButton(sActionName)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              Set btn = FormObjectsLocal.ShowForm.GetButtonFromFunction("btn", (sActionName))
           &#xD;
      &lt;br/&gt;&#xD;
      
              If btn Is Nothing Then Exit Sub
           &#xD;
      &lt;br/&gt;&#xD;
      
            
           &#xD;
      &lt;br/&gt;&#xD;
      
              ' Fire the action button
           &#xD;
      &lt;br/&gt;&#xD;
      
              btn.FormWidget.Value = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           See next example for more code relating to this.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           13. Firing an Action From Script Code
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            This script allows you to invoke an action from any form using script code alone.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In the example, a button is created with no link to an action or extension. This is then fired to operate upon the details of an independent script-controlled grid to fire the action using the grid data.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This makes use of an exposed function on the underlying form:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                          FormObjectsLocal.FormRef.RunFormAction ActionId, ClientContactId, CandidateId,
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                          CompanyId, RequirementId,, PlacementI, TimeSheetId
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Steps to reproduce:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ol&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Follow section above: Step by Step Example of Master-Detail Dynamic Grid Handling in order to create master/detail script controlled grids.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Create action (or reuse existing action e.g. Note/Call etc…) – Note the ActionId
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Create a button called RunActionAgainstContactId – do NOT assign to an action.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Add the button to the form beneath the detail grid.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Write this code to fire the action associated with the button from script:
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ol&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Button_Click
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' Not interested in non-config buttons
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           if FormObjectsLocal.EventControl.Name &amp;lt;&amp;gt; "btn" then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set btn = FormObjectsLocal.ShowForm.GetButtonFromIndex("btn", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            FormObjectsLocal.EventControl.Index)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If btn Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If btn.ButtonFunction = "RunActionAgainstContactId" Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Call RunActionAgainstContactId
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Button clicked to fire an action against the currently selected contact
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub RunActionAgainstContactId
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Set dwGrid = FormObjectsLocal.ShowForm.GetFieldWidget( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "CompanyConfigFields", "GridDetail")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      If dwGrid Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      If instr(dwGrid.Caption, "Contact") = 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  MessageBox.AppStopMsg _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "You can only fire this button when contacts are displayed in the grid."
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      ' Get selected contactid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      ContactId = CLng(GetGridCellValue(dwGrid, "ContactId"))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      'MessageBox.appmsg "Running action against Id: " &amp;amp; ContactId
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      ' ActionId=32 is Note
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      FormObjectsLocal.FormRef.RunFormAction 32, clng(ContactId), 0, 0, 0, 0, 0
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           14. Validating Action Values
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Example to demonstrate the capturing in script of the on-screen fields
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' in an action so that the action can be prevented from running if all
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' expected fields are not correctly input by the user.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Feb 2001
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Validate input here
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_BeforeSaveRecord ( Id, Cancel )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                bCancel = Not ValidateActionFields
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If bCancel Then FunctionStatus.SetParameter("Cancel") = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Function ValidateActionFields()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' Check the candidate Id - must be set when creating a placement
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '    candidateId = FormObjectsLocal.ShowForm.GetFieldValue("ContractPlacement", "CandidateId")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set candidateIdCollection = FormObjectsLocal.Formref.candidateIdCollection
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If candidateIdCollection Is Nothing Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      bCandidateError = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Else
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      If candidateIdCollection.count = 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            bCandidateError = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Else
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            If clng(candidateIdCollection(1)) = 0 Then     
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  bCandidateError = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If bCandidateError Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      MessageBox.AppStopMsg "Please select a candidate for the placement."
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Exit Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' Make sure rates are set
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                payRate = cdbl(FormObjectsLocal.ShowForm.GetFieldValue("Requirement", "StandardPayRate"))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If payRate &amp;lt;= 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      MessageBox.AppStopMsg "Please enter a valid candidate pay rate."
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Exit Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                chargeRate = cdbl(FormObjectsLocal.ShowForm.GetFieldValue("Requirement", "StandardChargeRate"))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If chargeRate &amp;lt;= 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      MessageBox.AppStopMsg "Please enter a valid client charge rate."
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Exit Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' Make sure we have valid dates
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                startDate = FormObjectsLocal.ShowForm.GetFieldValue("Requirement", "EarliestStartDate")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If len(startDate) = 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      MessageBox.AppStopMsg "Please enter a start date for the placement."
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Exit Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                endDate = FormObjectsLocal.ShowForm.GetFieldValue("Contract", "ContractEndDate")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If len(endDate) = 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      MessageBox.AppStopMsg "Please enter an end date for the placement."
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Exit Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' All OK?
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ValidateActionFields = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           15. Processing Requirement Shortlist
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           When performing shortlisting using bespoke workflow processing (e.g. headhunting) the script may require access to the search results shortlist and delete check boxes which indicate which contacts the user has selected for shortlisting or deletion.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            The script develop can change this column caption using script, but obtaining the actual selected rows is difficult because the grid does not perform as expected.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           To get around this limitation, two extra functions have been exposed on the requirement form so that the script developer can get access to the respectively selected contacts in the same way that TriSys does internally.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            The functions are:
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           GetShortlistedCandidatesFromSearchResults
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           GetDeletedCandidatesFromSearchResults
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Both return a collection of ContactId’s of contacts where the user has selected the shortlist or delete columns.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The example below demonstrates the usage:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Button_Click ()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' Not interested in non-config buttons
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           if FormObjectsLocal.EventControl.Name &amp;lt;&amp;gt; "btn" then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set btn = FormObjectsLocal.ShowForm.GetButtonFromIndex("btn", FormObjectsLocal.EventControl.Index)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If btn Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If btn.ButtonFunction = "ScriptShowShortlisted" Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      ' Get all folk shortlisted in grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Set candidateCollection = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.FormRef.GetShortlistedCandidatesFromSearchResults
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      If candidateCollection Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                       ' Enumerate through collection to display to user
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ (or whatever you like?)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      If candidateCollection.Count &amp;gt; 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            For i = 1 to candidateCollection.count
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  If i &amp;gt; 1 Then s = s &amp;amp; ", "
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  s = s &amp;amp; candidateCollection(i)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            MessageBox.appmsg "Selected CandidateId's: " &amp;amp; s &amp;amp; "?"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Now capture the contacts into the 'special' table: ‘RequirementCandidateUnderScriptControl
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                             ' These will then cause the following refresh method to actually
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ remove them from the search results
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            For each v in candidateCollection
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  ContactId = clng(v)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  MySQL = "Insert into “ &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           “RequirementCandidateUnderScriptControl” &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           “(RequirementId, ContactId)" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                        " Values(" &amp;amp; m_RequirementId &amp;amp; ", " &amp;amp; ContactId &amp;amp; ")"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  TriSysDatabase.Execute (mysql)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            ' Now refresh the grid to cause those selected to disappear
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            btnIndex = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.ShowForm.GetButtonFromFunction("btn", "Search").Index
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            FormObjectsLocal.FormRef.btn(btnIndex).Value = 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           16. Creating a Lookup Combo
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This procedure takes the example of creating a job title combo on the company form and populating it with job titles. This is not possible to do using reference fields.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Steps to reproduce:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           a.                   Open form designer for company form and create a new config field called JobTitles.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           b.                 This should be of type Lookup, not searchable, and with no values.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           c.                  Drop this onto the company form
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           d.                 Write the following piece of code into the script editor for the form:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterLoad
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' JobTitles Combo
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Call InitialiseJobTitlesCombo _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           (FormObjectsLocal.ShowForm.GetFieldWidget( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            “CompanyConfigFields”, “JobTitles”))   
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ JobTitles Combo
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub InitialiseJobTitlesCombo(cmbJobTitles)   
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If cmbJobTitles Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                cmbJobTitles.clear
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                MySQL = “Select JobTitle From JobTitle” &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      “ Order by Ordering”
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set rs = TriSysDatabase.OpenRecordset((MySQL))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Do While Not rs.EOF
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      sJobTitle = rs(0)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      With cmbJobTitles
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            .AddItem sJobTitle
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            If .ListCount = 1 Then .ListIndex = 0
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      rs.MoveNext
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Loop
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                rs.Close
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The widget on the form should look as follows when run in TriSys:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           17. Asking the User to Choose from a List
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This procedure shows how to use the internal frmSelection form to offer the user a choice of items in order to choose one.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub SelectionFormTest
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set frmSelection = FormFunctions.GetFormReference("frmSelection")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                With frmSelection
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      .ClearItems
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      .AddItem "1. Do Nowt at " &amp;amp; Now
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      .AddItem "2. Do Something at " &amp;amp; Now
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      .Caption = "Selection Test"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      .label = "Please select any option"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      .ShowModal
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      If Not .Selected Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      MessageBox.AppMsg "You selected '" &amp;amp; .SelectedItem &amp;amp; "' ?"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           For a discussion and examples of using the more sophisticated SQL selection mechanism, see the following section.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           18. Using SQL Selection Object
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This procedure shows how to use the internal SQL selection object (5.00.063 or later) to pass in a SQL statement, setup grid columns etc and retrieve the selected records from a modal dialogue box.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           It is of use when the you need to offer the user a choice of selecting a range of records from any table or tables in the database.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' This function will allow the user to select a candidate contact from
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' a pop-up and will show the correct priority and type to boot!
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub SQLSelectionFormTest
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 Set SQLSelection = Selection.GetSelectSQLObject
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 With SQLSelection
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        .Columns = 6
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        .ColWidth(0) = 0
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        .ColWidth(1) = 0
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        .ColWidth(2) = 0
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        .ColWidth(3) = 1500
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        .ColWidth(4) = 2000
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        .ColWidth(5) = 1200
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        .Caption = "Select any Candidate"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        .SQL = "Select Top 50 ContactId, Priority, Type, Christian as Forenames, " &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                     “Surname, DateOfBirth as 'Date of Birth'" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                     " From Contact" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                     " Where Contact.Type = 1" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                     " Order by Surname, Christian"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        .ContactSelection = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        .PriorityColumn = 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        .TypeColumn = 2
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        If Not .Selection Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        MessageBox.AppMsg "You selected ContactId:" &amp;amp; .SelectedRecord(1) &amp;amp; " ?"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' SQL selection of any number of placements
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub SQLSelectionPlacement
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 Set SQLSelection = Selection.GetSelectSQLObject
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 With SQLSelection
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        .Columns = 4
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        .ColWidth(0) = 0
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        .ColWidth(1) = 1200
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        .ColWidth(2) = 2000
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        .ColWidth(3) = 2500
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        .Caption = "Select one or more Placements"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        .SQL = "Select ContractId, Reference, Company.Name as Company" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                     ", Christian + ' ' + Surname as Candidate" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                     " From Contract, Company, Contact" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                     " Where Contract.CompanyId = Company.CompanyId" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                     " And Contract.CandidateId = Contact.ContactId" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                     " Order by Reference"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        .MultipleSelection = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        If Not .Selection Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        For i = 1 to .SelectedCount
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                               If i &amp;gt; 1 Then s = s &amp;amp; ", "
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                               s = s &amp;amp; clng(.SelectedRecord(cint(i)))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        If len(s) &amp;gt; 0 Then MessageBox.appMsg "You selected " &amp;amp; .SelectedCount &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           " placements: " &amp;amp; s &amp;amp; "?"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Note how you can set up the column widths, specify multiple record selection (using shift/ctrl keys), set caption, assign SQL statement, cater for contact priorities and contact types to allow colours.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           19. Modal Virtual Form Interaction
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This procedure shows how to use the modal virtual form capability of TriSys (5.00.063 or later) by invoking it from script code to display defaults, validate the data and return the data to the caller.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 1: Create a modal virtual entity
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 2: Design the modal virtual entity form and create data capture fields
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 3: Design the modal virtual entity script code to capture data and validate it
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' On button click - validate input and close if OK
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Button_Click ()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 With FormObjectsLocal.showform
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        sForenames = .GetFieldValue("AddContactConfigFields", "Forenames")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        sSurname = .GetFieldValue("AddContactConfigFields", "Surname")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        If len(sForenames) = 0 or len(sSurname) = 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                               MessageBox.AppStopMsg "Please enter both forenames and surname." &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sForenames &amp;amp; sSurname
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                               Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                 
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 ' All OK, then close form using correct exposed method to preserve stacked scripts
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 FormObjectsLocal.FormRef.FormUnload
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
      
            Step 4: Create a button on the calling form for the user
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 5: Write code for the button to invoke the modal virtual form, pass in default values and capture validated values from it.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Button_Click
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 ' Not interested in non-config buttons
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           if FormObjectsLocal.EventControl.Name &amp;lt;&amp;gt; "btn" then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 Set btn = FormObjectsLocal.ShowForm.GetButtonFromIndex("btn", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.EventControl.Index)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 If btn Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 If btn.ButtonFunction = "AddContact" Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        Call AddContactButton
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Show a modal virtual entity to capture contact details to add to our grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub AddContactButton
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                  Set dwGrid = FormObjectsLocal.ShowForm.GetFieldWidget("CompanyConfigFields", "GridUpdate")     
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 If dwGrid Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 Set frmModalForm = FormFunctions.GetFormReference("frmAddContact")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 If frmModalForm Is Nothing Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        MessageBox.AppStopMsg "Could not find form: frmAddContact"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                 
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 With frmModalForm
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        ' Send initialisation data in
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        .SetFieldValue("Forenames") = StringFunctions.VBFormat(Now, "DDDD DD")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        .SetFieldValue("Surname") = StringFunctions.VBFormat(Now, "MMMM YYYY")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        ' Show it
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        .ShowModal
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        ' After modal form is closed, read the values from it
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        sForenames = .GetFieldValue("Forenames")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        sSurname = .GetFieldValue("Surname")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 End With     
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 If len(sForenames) &amp;gt; 0 and len(sSurname) &amp;gt; 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        dwGrid.AddItem "©" &amp;amp; sForenames &amp;amp; "©,©" &amp;amp; sSurname &amp;amp; "©"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 6: What it looks like in operation:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 7: This data is then added to the underlying form grid:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           20. Action Form Collection Manipulation
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This procedure shows how to add a contact to the list of default contacts in an action collection.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           It also demonstrates how to use the FastContactSearch function to pop-up a contact selection dialogue.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Sub Form_AfterLoad
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Dim coll, i, s
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set coll = FormObjectsLocal.formref.ContactIdCollection
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If coll Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If coll.count = 0 Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' Add another client
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                 ContactId = Selection.FastContactSelection(True, False)
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If ContactId = 0 Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' Add to collection
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                FormObjectsLocal.formref.ContactIdCollection.Add cstr(ContactId)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' Show visuals
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                FormObjectsLocal.ShowForm.SetFieldValue("CallClient", "ClientContactId") = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      "&amp;lt; List: " &amp;amp; FormObjectsLocal.formref.ContactIdCollection.Count &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      " Client Contact records &amp;gt;"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           21. Firing A Report From Script
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Reports can be easily invoked from the print button or by a new button which is linked to a specific report. This works fine for standard entities or new entities, where all record processing is taken care of when set up in form designer by the forms engine.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If however, a virtual entity has been implemented, or the report requires specific pre-processing (as opposed to writing script inside a report form), then invoking the report from script is the appropriate method.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This section shows how this is done.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 1: Create an entity.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 2: Create a Crystal report which links the tables and configure this in forms designer (see reports design and tutorial document).
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 3: Add a button onto the form, but do not set it up as a report button as it will defeat the object of this example!
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Step 4: Copy this code into the form script editor. Note how we capture the loaded or saved record id and this is used to create a SQL IN clause which is passed into the PrintReport function of the Initialisation.Reports collection.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Dim m_AdvertisementId        ' as Long
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterLoadRecord ( Id )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                m_AdvertisementId = id
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterSaveRecord ( Id )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                m_AdvertisementId = id
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Button_Click
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' Not interested in non-config buttons
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           if FormObjectsLocal.EventControl.Name &amp;lt;&amp;gt; "btn" then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set btn = FormObjectsLocal.ShowForm.GetButtonFromIndex _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ("btn", FormObjectsLocal.EventControl.Index)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If btn Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If btn.ButtonFunction = "PrintReportFromScript" Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Call PrintReportFromScript
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub PrintReportFromScript
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If m_AdvertisementId &amp;gt; 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Initialisation.Reports.PrintReport "Advert Test.rpt", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "(Advertisement.AdvertisementId = " &amp;amp; m_AdvertisementId &amp;amp; ")"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           22. Using Classes in VBScript – Object Oriented Programming
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           VBScript version 5 is supported in TriSys. This adds sophisticated capabilities to VBScript, namely support for classes. Classes provide programmers with the opportunity to develop fully object oriented code by encapsulating re-usable business logic into a class. The class can be implemented to abstract the complexity of the logic by exposing a neatly designed interface which can be used by the programmer.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The potential of classes is shown in this very simple example:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Create a class inside a global module in form designer :
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This is the code:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Class CTestClass
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Private sTestString
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Property Get TestString
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      TestString = sTestString
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End Property
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Property Let TestString (s)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      sTestString = s
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End Property
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Class
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The class is called CTestClass (classes should be prefixed by C). The class contains its own private variable calls sTestString which can only be accessed by users of the class using the properties defined.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           There are 2 properties, both called TestString which respectively Get and Set (via the Let operator) the value of the private variable. Private variables cannot be accessed directly by users of the class.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           To see how the class might be used, see the following code:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set m_TestClassObject = New CTestClass
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           m_TestClassObject.TestString = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           StringFunctions.VBFormat(Now, "DD-MMM-YYYY HH:nn:ss")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MessageBox.appmsg "CTestClass.TestString=" &amp;amp; m_TestClassObject.TestString
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The code creates a new instance of CTestClass thus creating an object (the definition of an object in OOP (object oriented programming) is that it is an instance of a class) which exposes all of the properties/functions/subroutines of the class.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Thus in the above example, we assign a value to the TestString property (Let), then display it (Get).
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Clearly the properties can do much more that simply set a value e.g. perform calculations, access the database, send messages etc…
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           When you access the TriSys objects e.g. TriSysDatabase, this is actually an internal (VB6) object which is an instance of the class CDatabase.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           23. Programming Grid Column/Cell Colours
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The grid is a Sheridan Data Widget. Thus the properties and methods and events for the grid must follow this conventions demonstrated below.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This example processes the Grid_RowLoaded event and colours a contact grid according to the normal contact colours for type and priority, but also colours rows of another grid where the cell is set to a particular value:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           There are examples of how to do this in the ITContract database: Company and Contact forms. Look for Grid_RowLoaded event.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This is how to set the row colours for any grid:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Sub Grid_RowLoaded
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              With FormObjectsLocal.EventControl
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 .Columns(2).BackColor = vbRed
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                  .Columns(2).ForeColor = vbBlue
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           And for a tighter control, you can do this:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Grid_RowLoaded ()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set dwGrid = FormObjectsLocal.EventControl
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If dwGrid Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set fd = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.ShowForm.GetFieldDescriptionFromWidgetHwnd (dwGrid.hWnd)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If fd Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Select Case fd.TableFieldName
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Case "GridDetail"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            If instr(dwGrid.Caption, "Contact") &amp;gt; 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                               Call DataWidgets.ColourContactPriorities ((dwGrid), _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                           CInt(GetGridCellValue(dwGrid, "Type")), _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                           CInt(GetGridCellValue(dwGrid, "Priority")) )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Case "GridUpdate"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            ' Colour the row with my name in it to blue with yellow text
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            sName = GetGridCellValue(dwGrid, "Surname")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            If instr(sName, "Lowther") &amp;gt; 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                             styleSetName = "Style" &amp;amp; vbYellow &amp;amp; vbBlue
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                             
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                             With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                   .StyleSets((styleSetName)).ForeColor = vbYellow
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                   .StyleSets((styleSetName)).BackColor = vbBlue
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                                   
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                   For i = 0 To .Columns.Count - 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                       .Columns(i).CellStyleSet ((styleSetName))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                   Next     
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                               End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End Select
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Function GetGridCellValue(dwGrid, ColumnName)
           &#xD;
      &lt;br/&gt;&#xD;
      
              With dwGrid
           &#xD;
      &lt;br/&gt;&#xD;
      
                For i = 0 to .Columns.Count - 1
           &#xD;
      &lt;br/&gt;&#xD;
      
                    If lcase(.columns(i).Caption) = lcase(ColumnName) Then
           &#xD;
      &lt;br/&gt;&#xD;
      
                        GetGridCellValue = .Columns(i).Value
           &#xD;
      &lt;br/&gt;&#xD;
      
                        Exit Function
           &#xD;
      &lt;br/&gt;&#xD;
      
                    End If
           &#xD;
      &lt;br/&gt;&#xD;
      
                Next
           &#xD;
      &lt;br/&gt;&#xD;
      
              End With
           &#xD;
      &lt;br/&gt;&#xD;
      
            End Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This last example uses the knowledge about contact types to colour the grid based upon the users preferences.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
      
            24.
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           Multi-Select Grid Rows
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In order to create a grid with multi-select rows, the .SelectTypeRow property must be set to either 2 or 3:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Initialise grid columns
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                .Columns.RemoveAll
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .DataMode = 2                ' Add Item Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .AllowAddNew = False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .AllowUpdate = False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .Caption = "Placements for " &amp;amp; sSalesOffice
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .MaxSelectedRows = 8
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .RecordSelectors = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .SelectTypeRow = 2           ' 1 - single, 2 - multi
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In order to select all highlighted rows into an array, use this code:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              m_NumSelectedPlacementIds = 0
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                  ' Multi select - Get in order as appear in grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                  For r = 0 To .Rows - 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      bm = .AddItemBookmark(r)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      For i = 0 To dwGrid.SelBookmarks.Count - 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                          If CStr(bm) = CStr(.SelBookmarks(i)) Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                           m_NumSelectedPlacementIds = m_NumSelectedPlacementIds + 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                           ReDim Preserve m_SelectedPlacementIds _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           (cint(m_NumSelectedPlacementIds))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                           m_SelectedPlacementIds(m_NumSelectedPlacementIds) = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           CLng(.Columns(0).cellValue(bm))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                          End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                  Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           25. Launching Core Entity Forms From Script
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If a grid is under script control and the user is permitted to drill down into the underlying record, these functions should be used :
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If FormFunctions.isformloaded("frmPerson") Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set f = FormFunctions.GetAFormInstance("frmPerson", True)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Make it have focus
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set frmMainBinder = FormFunctions.GetAFormInstance("frmMainBinder",True)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call frmMainBinder.AddFormToTabView((f), "Contact")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Else
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Load new form then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set f = FormFunctions.LoadFormByName("frmPerson", clng(ContactId), _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "Script Contact")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           f.LoadContactDetails clng(ContactId)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Load entity form using same technique
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If FormFunctions.isformloaded("frmContractorInvoice") Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set f = FormFunctions.GetAFormInstance("frmContractorInvoice")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Else
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Load new form then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set f = FormFunctions. LoadFormByName ("frmContractorInvoice",1, _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "Script ContractorInvoice")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           f.LoadEntityDetails 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Or for entity forms
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If FormFunctions.isformloaded("frmAdvertisement") Then
            &#xD;
      &lt;br/&gt;&#xD;
      
             Set f = FormFunctions.GetAFormInstance("frmAdvertisement")
           &#xD;
      &lt;br/&gt;&#xD;
      
             f.LoadEntityDetails 0
           &#xD;
      &lt;br/&gt;&#xD;
      
             FormFunctions.AddFormToTabView (f), ""
           &#xD;
      &lt;br/&gt;&#xD;
      
            Else
           &#xD;
      &lt;br/&gt;&#xD;
      
             Set f = FormFunctions.LoadFormByName("frmAdvertisement", 0, "New Advert")
           &#xD;
      &lt;br/&gt;&#xD;
      
            End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
      
            This is an example of how to use a global function in a global module to encapsulate this complexity:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '**************************************************************
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'This Routine is called when any form in TriSys needs to be opened.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Edited by Garry Lowther on 20 April 2002
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            '**************************************************************
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub gOpenForm(strFormName, intID)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Dim f, bLoadRecord
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                bLoadRecord = True           ' In most cases, we explicitly load the record
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If FormFunctions.isformloaded("frm" &amp;amp; strFormName) Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Set f = FormFunctions.GetAFormInstance("frm" &amp;amp; strFormName, True)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      ' Form exists so focus upon the form and associated tab
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                   Set frmMainBinder = FormFunctions.GetAFormInstance("frmMainBinder", True)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                   Call frmMainBinder.AddFormToTabView((f), "Script" &amp;amp; strFormName)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Else
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      ' Load new form then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Set f = FormFunctions.loadformbyname( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            "frm" &amp;amp; strFormName, clng(intID), "Script" &amp;amp; strFormName)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      If clng(intID) &amp;gt; 0 Then bLoadRecord = False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Will have loaded the record already
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                 ' Now load the record
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               If Not f Is Nothing and bLoadRecord Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Select Case strFormName
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            Case "Company":        f.LoadCompanyDetails CLng(intID)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            Case "Person":         f.LoadContactDetails CLng(intID)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            Case "Requirement":    f.LoadRequirementDetails CLng(intID)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            Case "Contract":       f.LoadPlacementDetails CLng(intID)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            Case "Advert":         f.LoadAdvertDetails CLng(intID)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            Case Else:             MessageBox.AppMsg "Unknown form: " _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           &amp;amp; strFormName
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      End Select
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           26. Using FileSystemObject in VBScript
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The file system object component (SCRRUN.DLL) needs to be installed and registered for it to be used in script.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This gives access to the FileSystemObject which exposes many file system features. Search MSDN to find complete list. (“Microsoft Scripting Run-time Library Features”)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This example demonstrates how to use the object from a TriSys VBScript function to get attributes from a folder and file and to copy a single file:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub CopyFileUsingFileSystemObject
           &#xD;
      &lt;br/&gt;&#xD;
      
            Dim fso, fldr, f
           &#xD;
      &lt;br/&gt;&#xD;
      
            
           &#xD;
      &lt;br/&gt;&#xD;
      
            Set fso = CreateObject("Scripting.FileSystemObject")
           &#xD;
      &lt;br/&gt;&#xD;
      
            If fso Is Nothing Then
           &#xD;
      &lt;br/&gt;&#xD;
      
                MessageBox.appstopmsg "Could not instantiate the Scripting.FileSystemObject"
           &#xD;
      &lt;br/&gt;&#xD;
      
                Exit Sub
           &#xD;
      &lt;br/&gt;&#xD;
      
            End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Set fldr = fso.GetFolder("c:")
           &#xD;
      &lt;br/&gt;&#xD;
      
            MessageBox.AppMsg "Folder name: " &amp;amp; fldr.Name
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Set f = fso.GetFile("c:\Winnt\TriSys32.ini")
           &#xD;
      &lt;br/&gt;&#xD;
      
            MessageBox.AppMsg "Last modified: " &amp;amp; f.DateLastModified
           &#xD;
      &lt;br/&gt;&#xD;
      
            
           &#xD;
      &lt;br/&gt;&#xD;
      
            ' Copy file
           &#xD;
      &lt;br/&gt;&#xD;
      
             fso.CopyFile "c:\winnt\TriSys32.ini", "c:\temp\Copied.ini"
           &#xD;
      &lt;br/&gt;&#xD;
      
            End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           27. Read all Grid Rows
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If a grid is scripted, i.e. one that you have total control over?
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If so it is known as an AddItem grid. Other grid population mechanisms are known as Bound (bound to a SQL recordset) and Unbound (grid calls you back for each row of data it requires). Standard TriSys grids usually use Unbound as they are more efficient.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Scripting currently cannot populate grids using any technique other than AddItem.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This example demonstrates reading a single column from all rows in the grid:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Dim strAdvertIdList, bm   ' Bookmark
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           strAdvertIdList = ""
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              For row = 1 To .Rows
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 bm = .AddItemBookmark(row - 1)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 if len(strAdvertIdList) &amp;gt; 0 then strAdvertIdList = strAdvertIdList &amp;amp; ", "
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                   strAdvertIdList = strAdvertIdList &amp;amp; .Columns(0).CellValue(bm)
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           28. External Document Launching
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           These functions are useful for launching the operating system features to open browsers, e-mail, auto-dial and documents:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Fire E-Mail Client to send mail to recipient Miscellaneous.EMailHotLink(sEMailAddress as String)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                 
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            ' Fire Browser to view address
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Miscellaneous.WorldWideWebHotLink(sWWWAddress as String) 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
             
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            ' Play specified .wav file
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Miscellaneous.PlaySound(sWaveFile as String)   
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                   
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Dial specified number using TAPI
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Miscellaneous.AutoDialNumber(sTelNumber as String)         
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Fire Shell Association program
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ShellExecute.OpenThisDoc(hWnd as long, sFilename as string)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In this last function, you will need to pass in the actual window handle.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Do this as follows:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Check if file exists
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           if FileSystem.FileExists(sFilePathAndName) then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              ' Open the specified file.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              ' This function will open word for .DOC's, IE for .jpg, gif etc...,
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              ‘ media player for .mpg etc...
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              ShellExecute.OpenThisDoc FormObjectsLocal.FormRef.hWnd, (sFilePathAndName)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           end if
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           29. Global Parameter Value
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Each script runs in its own address space for the current form.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The only ways to share variables between forms/scripts is to either communicate through the database (slow/inefficient) or via formobjectsglobal and access form widgets (cumbersome).
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           A neater solution is to have a shared collection of parameters which can be accessed from any script direct into/out of memory.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This is accomplished by a let/get property on the Initialisation object:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Property Let GlobalParameterValue(sParameterName as String, sValue as Variant)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Property Get GlobalParameterValue(sParameterName as String) as Variant
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This is used in the following example:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Assign a variable to the global parameters
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Initialisation.GlobalParameterValue(“PlacementId”) = 100
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           …….
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Retrieve a variable from the global parameters from any form script
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           PlacementId = clng(Initialisation.GlobalParameterValue(“PlacementId”))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           30. Launching E-Mail Client
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In order to send an e-mail from script, an object reference to the internal EMailGateway object must be used. This provides a generic encapsulation of the various e-mail clients and an easy to use set of properties and methods which allow for e-mails to be sent to many recipients with attachments.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This example demonstrates the mechanism:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Sub SendEMail
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Const RecipientTo = 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Const RecipientCC = 2
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Const RecipientBCC = 3
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Const ProtocolMAPI = 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Const ProtocolOutlook = 4
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Const ProtocolMailTo = 5
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Const ProtocolNotes = 6
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Get the e-mail address and attachment to send
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sEMailAddress = FormObjectsLocal.ShowForm.GetFieldValue( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "ReferenceConfigfields", "RefereeEmail")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sAttachment = FormObjectsLocal.ShowForm.GetFieldValue( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "ReferenceConfigfields", "ReferenceRequest")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sCandidateName = FormObjectsLocal.ShowForm.GetFieldValue( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "ReferenceRequest" , "CandidateId")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Get the normal TriSys Email object references from TriSysEMailGateway.dll
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set eMailObj = EMailGateway
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If eMailObj Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               With eMailObj
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .EMailProtocol = ProtocolMAPI
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                     .NewMessage
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .AddRecipient sEMailAddress, sCandidateName, RecipientTo
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
               
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .Subject = "Reference request for " &amp;amp; sCandidateName
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                     .Message = "Please find attached a request for a reference."
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                     .AddAttachment sAttachment
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                     .ShowDialogue = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                     .Send (sErrStr)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The following example is a real-world example of how to create a set of e-mails direct to candidates from the candidate search giving them the log in name and password to connect to the web site.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The script should be called from a new button added to the action form.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Manually invoke e-mail to send web password to a list of candidates.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Jan 2002
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Garry Lowther
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Button_Click ()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' Not interested in non-config buttons
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If FormObjectsLocal.EventControl.Name &amp;lt;&amp;gt; "btn" Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set btn = FormObjectsLocal.ShowForm.GetButtonFromIndex("btn", FormObjectsLocal.EventControl.Index)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If btn Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If btn.ButtonFunction = "MergeFromScript" Then Call SendEMail
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Sub SendEMail
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Const RecipientTo = 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Const RecipientCC = 2
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Const RecipientBCC = 3
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Const ProtocolMAPI = 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Const ProtocolOutlook = 4
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Const ProtocolMailTo = 5
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Const ProtocolNotes = 6
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set candidateIdCollection = FormObjectsLocal.Formref.candidateIdCollection
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If candidateIdCollection Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If candidateIdCollection.Count = 0 Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' Get the normal TriSys Email object reference
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set eMailObj = EMailGateway
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If eMailObj Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                With eMailObj
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      .EMailProtocol = ProtocolOutlook
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      ' Loop for each candidate in the list which has a valid e-mail address
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      For each v in candidateIdCollection
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            candidateId = clng(v)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            EMailAddress="": Forenames="": Surname="": WebPassword=""
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            Call GetContactEMailDetails(candidateId, EMailAddress, Forenames, Surname, WebPassword)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            If candidateId &amp;gt; 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  CandidateName =  Forenames &amp;amp; " " &amp;amp; Surname
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                               .NewMessage
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  .AddRecipient (EMailAddress), (CandidateName), RecipientTo
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  .Subject = Initialisation.User.Name &amp;amp; " E-Mail to " &amp;amp; CandidateName
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                .Message = "Dear " &amp;amp; Forenames &amp;amp; vbcrlf &amp;amp; vbcrlf &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                        "Login Name: " &amp;amp; CandidateName &amp;amp; vbcrlf &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                        "Password: " &amp;amp; WebPassword &amp;amp; vbcrlf &amp;amp; vbcrlf &amp;amp; vbcrlf &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                        "Regards" &amp;amp; vbcrlf &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                        Initialisation.User.Name                     
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                .ShowDialogue = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                .Send (sErrStr)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                ' TODO: Note/History + Follow ups if necessary?
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                          End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub GetContactEMailDetails(ContactId, EMailAddress, Forenames, Surname, WebPassword)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If ContactId = 0 Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                MySQL = "Select EMail, Christian, Surname, WebPassword" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      " From Contact Left Join ContactConfigFields" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      " On Contact.ContactId = ContactConfigFields.EntityId" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      " Where Contact.ContactId = " &amp;amp; ContactId
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set rs = TriSysDatabase.openrecordset((MySQL))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If Not rs.eof Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      On Error Resume Next   ' Ignore NULLS
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      EMailAddress = rs.Fields("EMail")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Forenames = rs.Fields("Christian")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Surname = rs.Fields("Surname")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      WebPassword = rs.Fields("WebPassword")                                 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                rs.close
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           31. Colouring Tabs
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           It may be necessary to colour the tabs on data entry forms for data validation or to draw attention to certain tabs or even to satisfy the artistic design tendencies of customers!
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This is how to do this:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           set tab = FormObjectsLocal.FormRef.tabby.Tab(1)      ' First tab
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           with tab
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              ' Set the tab back colour
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              .BackColor = vbRed      ' Or any RGB colour
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              .BackColorSource = 1   ' Important - it can’t work this out on its own!
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              ' Set the tab foreground colour - the text
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              .ForeColor = vbYellow   ' Or any RGB colour
           &#xD;
      &lt;br/&gt;&#xD;
      
              .ForeColorSource = 1   ' Important - it can’t work this out on its own!
           &#xD;
      &lt;br/&gt;&#xD;
      
            end with
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           32. Crystal Report Form Script
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           When a report has been designed to have an associated data input form to capture parameters (See Reports Design Document and Tutorial), it is possible (build 5.00.081 or later) to manipulate the complete query before this is passed to the report for execution.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This allows the script developer to manipulate the query and add/remove portions of the SQL query depending upon user input. This example is taken from the report tutorial:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This example demonstrates the mechanism:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            ' This function is called after the user has requested the print of the report having filled in
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' all on-screen values.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' This is the query from TriSys when invoked:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'Select
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '*
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'From
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' ((Requirement Inner Join Contact Contact On
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'Requirement.ContactId = Contact.ContactId)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'Inner Join Users On
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'Requirement.UserId = Users.UserId)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'Inner Join Company On
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'Requirement.CompanyId = Company.CompanyId
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           '
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            'Where 1=1
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            ' And Requirement.RequirementId In
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            ' (12,13,7,16,90,42,19,48,60,61,64,65,66,70,71,72,88,92,91,6,32,34,14,21)
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Or Requirement.RequirementId In ' (77,10,4,94,96,95,1,39,40,44,68,79,82,83,85,86,87,5,93,11)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'Order By Requirement.Reference ASC
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterSaveRecord ( Id )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                  'MessageBox.appmsg "Pre Tweak: " &amp;amp; vbcrlf &amp;amp; ReportProperties.SQLQuery
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 ' Tweak the formula now
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 ReportProperties.SQLQuery = RemoveRequirementIdInClause
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                  ' Get the input reference   
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 sReference = FormObjectsLocal.ShowForm.GetFieldValue("RequirementsListConfigFields", "AField")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                  If len(sReference) &amp;gt; 0 Then
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        ReportProperties.SQLQuery = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           AddAndClause("And Requirement.Reference Like '%" &amp;amp; sReference &amp;amp; "%'")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                  'MessageBox.appmsg "Post Tweak: " &amp;amp; vbcrlf &amp;amp; ReportProperties.SQLQuery
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Function RemoveRequirementIdInClause()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 Dim x, y
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 Const AndRequirementIdIn = "And Requirement.RequirementId In ("
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 Const OrRequirementIdIn = "Or Requirement.RequirementId In ("
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                 
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 sFormula = ReportProperties.SQLQuery
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                 
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 Do While True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        x = instr(sFormula, AndRequirementIdIn)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        If x = 0 Then x = instr(sFormula, OrRequirementIdIn)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        If x = 0 Then Exit Do
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        ' Now find matching closing bracket
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        y = instr(x, sFormula, ")")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        ' Get pre and post string segments
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        sPre = Left(sFormula, x - 1)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        sPost = Mid(sFormula, y+1)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        ' Assemble again
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        sFormula = sPre &amp;amp; sPost
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 Loop
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                 
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 RemoveRequirementIdInClause = sFormula
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Function AddAndClause(sAndClause)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 Dim sFormula
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                 
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 sFormula = ReportProperties.SQLQuery
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                 
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 ' Find Order by
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 x = instr(sFormula, "Order By")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 If x &amp;gt; 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                        sFormula = Mid(sFormula, 1, x-1) &amp;amp; " " &amp;amp; sAndClause &amp;amp; " " &amp;amp; Mid(sFormula, x)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                 
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 AddAndClause = sFormula
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           33. Automating Word
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Script can access the same word processor classes as used by TriSys. This is exposed through the WordProcessor object as the following example demonstrates:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub WordMagic
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                With WordProcessor
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      .Initialise False
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      .OpenFile "D:\CVData\Upload\File1.doc", False, True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                     .AppendFile "D:\CVData\Upload\File2.doc", True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                     .SaveAs "D:\CVData\Upload\" &amp;amp; StringFunctions.VBFormat(Now, _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "YYYYMMMDDhhnnss") &amp;amp; ".rtf"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In the above example, File1 is opened in word and File2 is appended to it. This is then saved as an RTF file with the current date/time stamp.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Other useful functions for automating word are:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub CloseFile(sFileName as String)              ‘ Close named file
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Property Get Description() As String             ‘ Get name of word processor version
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Property Get GetFileContents() As String     ‘ Get unformatted text from open document
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Property Let SetFileContents(s As String)     ‘ Set unformatted text in open document
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub HighlightWord(sWord as String)            ‘ Highlight word in open document
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub MailMerge(sDataSource as String)         ‘ Mail merge current document using data source
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub NewFile()                                                ‘ Open a new document
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub ReplaceInSection(section As Object, sOldWord As String, sNewWord As String)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      ‘ Replace old word with new word in named section
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           34. Searching for Requirements within Post Code Radius
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This function has been exposed explicitly for script. It performs a search of the QAS post code database and returns a collection of requirements within a specified mile radius of a post code.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The example shows a function called which displays the list of requirement Id’s:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub ViewAllRequirements
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Get a post code
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With BigInput
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      .Text = "E1 1LU"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                     .Caption = "Enter a valid post code?"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                     .ShowModal
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                     If .Cancel Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                     sPostCode = Trim(.Text)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                With BigInput
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      .Text = "10"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                     .Caption = "Enter miles radius of " &amp;amp; sPostCode &amp;amp; "?"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                     .ShowModal
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                     If .Cancel Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                     lRadius = Trim(.Text)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                     If Not isNumeric(lRadius) Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              ' Call it now
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              Set requirementIdCollection = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Initialisation.Requirements.GetRequirementCollectionWithinPostCodeRadius _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ((sPostCode), clng(lRadius))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              If requirementIdCollection Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              ' Display it
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              sMessage = "Found " &amp;amp; requirementIdCollection.Count &amp;amp; " Requirements:" &amp;amp; vbcrlf
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              For i = 1 to requirementIdCollection.Count
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               sMessage = sMessage &amp;amp; " " &amp;amp; requirementIdCollection(i)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              MessageBox.AppMsg (sMessage)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           35. Updateable Grid for Data Entry
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This section demonstrates how to create an updateable grid and use it for data input purposes:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Create a new field of type Grid called: GridUpdate.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Create a button to retrieve the grid data with button function: GridUpdateButton.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Open script editor to write code to initialise the grid:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Editable grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call InitialiseGridUpdate( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.ShowForm.GetFieldWidget("CompanyConfigFields", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "GridUpdate"))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ….
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' The editable grid which can capture data input and validate it.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Can also allow add new rows if necessary.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub InitialiseGridUpdate(dwGrid)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              Dim i
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              If dwGrid Is Nothing Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               MessageBox.appmsg "GridUpdate Not found!"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              ' Initialise grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .Columns.RemoveAll
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .DataMode = 2                ' Add Item Grid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .AllowAddNew = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .AllowUpdate = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .Caption = "Updateable Grid"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .MaxSelectedRows = 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .RecordSelectors = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .SelectTypeRow = 1           'Single Select
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              ' Add columns
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              With DataWidgets
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                  .AddColumnToGrid (dwGrid), 0, "Forename(s)", 1500, True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                  .AddColumnToGrid (dwGrid), 1, "Surname", 1500, True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              ' Add Rows
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      .AddItem "©Garry©,©Lowther©"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      .AddItem "©Graham©,©Bridle©"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ Capture button click
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If btn.ButtonFunction = "GridUpdateButton" Then Call GridUpdateButton
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ….
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Called when the button is pressed to see the data
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub GridUpdateButton
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set dwGrid = FormObjectsLocal.ShowForm.GetFieldWidget( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "CompanyConfigFields", "GridUpdate")     
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If dwGrid Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              On Error Resume Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                  ' Important to force save of existing updated data
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                  .Update
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                  
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                  For row = 1 To .Rows
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      bm = .AddItemBookmark(row - 1)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      If row &amp;gt; 1 Then s = s &amp;amp; VbCrLf
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      For col = 0 To .Columns.Count - 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                          s = s &amp;amp; " " &amp;amp; .Columns(col).cellValue(bm)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                  Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              MessageBox.appmsg "Grid contents: " &amp;amp; s &amp;amp; "?"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Now run TriSys and open the form, the initial data should appear as follows:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           You can then type into any row and update the text.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           To add new rows, simply place the cursor into any cell in the row marked with an asterisk and all further rows can be added this way as shown below:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Pressing the Show Data button will show the input data as follows: 
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In order to capture when user is inputting data, write code in the Grid_AfterUpdate event:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
      
            36.
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           Programmed Fields Re-Appearing on Record Save
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The problem with saving from tabs and causing fields under script control to show incorrectly can be a problem in certain circumstances.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The simple fix is to write code for the form after save record event which will force the first tab into focus, or if this is not acceptable, then the following script sample demonstrates how to cause the tabs to redraw the visible fields so that the fields do not show up:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Called after record has been saved.
           &#xD;
      &lt;br/&gt;&#xD;
      
            Public Sub Form_AfterSaveRecord ( Id )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            ' Force a refresh of the currently selected tab so that programmed fields do not
            &#xD;
      &lt;br/&gt;&#xD;
      
            ' show up on save when curren tab is not the first.
           &#xD;
      &lt;br/&gt;&#xD;
      
             With FormObjectsLocal.FormRef
           &#xD;
      &lt;br/&gt;&#xD;
      
                selectedIndex = .tabby.selectedtab.index
           &#xD;
      &lt;br/&gt;&#xD;
      
                 If selectedIndex &amp;lt;&amp;gt; 1 Then
            &#xD;
      &lt;br/&gt;&#xD;
      
                   .Tabby.Tabs(1).Selected = True
           &#xD;
      &lt;br/&gt;&#xD;
      
                   .Tabby.Tabs(selectedIndex).Selected = True
           &#xD;
      &lt;br/&gt;&#xD;
      
                   .tabby_click
           &#xD;
      &lt;br/&gt;&#xD;
      
               End If
           &#xD;
      &lt;br/&gt;&#xD;
      
            End With
           &#xD;
      &lt;br/&gt;&#xD;
      
            End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           37. AddItem Grid Rows
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Build 5.00.089 has easy to use functions to add fields and entire recordsets to a grid:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           DataWidgets.AddItem (dwGrid As SSDBGrid, ParamArray FieldList())
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           DataWidgets.AddRecordsetRow (dwGrid As SSDBGrid, rs As Recordset)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           DataWidgets.PopulateGridFromSQLQuery (dwGrid As SSDBGrid, sSQL as String)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           DataWidgets.InitialiseAddItemGrid (dwGrid As SSDBGrid, sCaption as string)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This function is passed the handle to a grid and a list of values for each column:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ Initialise grid columns, SQL etc..
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set rs = TriSysDatabase.OpenRecordset( (sSQL) )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Do while not rs.EOF
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                DataWidgets.AddItem (dwGrid), rs(“ContactId”), rs(“FullName”)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                 rs.MoveNext                                         
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Loop
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           rs.Close
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If the recordset contains all possible columns and you do not want to do any field manipulation (formatting, lookups), another function can be used which accepts a recordset:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ Initialise grid columns, SQL etc..
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set rs = TriSysDatabase.OpenRecordset( (sSQL) )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Do while not rs.EOF
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               DataWidgets.AddRecordsetRow (dwGrid), (rs)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                rs.MoveNext       
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Loop
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           rs.Close
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Both of these functions remove the need to manipulate strings and field delimiters in order to add a row to a grid.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The ultimate function is PopulateGridFromSQLQuery which requires only a reference to the grid and a SQL statement in order to fully populate itself. It even generates the columns in the grid from the query if none exist.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ Get the top 50 companies ordered by company name
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sSQL = “Select Top 50 * From Company Order by Name”
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           DataWidgets.PopulateGridFromSQLQuery (dwGrid), (sSQL)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This one function call populated the entire grid from a SQL statement.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           A full (very small) example of how to populate a grid created in Form Designer is:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterLoad()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set dwGrid = FormObjectsLocal.ShowForm.GetFieldWidget( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      “EntityName”, “GridFieldName”)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                if dwGrid is nothing then exit sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                With DataWidgets
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      .InitialiseAddItemGrid (dwGrid), “Top 50 Contacts”
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      .PopulateGridFromSQLQuery (dwGrid), “Select top 50 * From Contact”
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           38. Unbound Virtual Grid Population
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Build 5.00.090 has easy to use functions to bind a SQL statement to a grid to provide:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Virtual unbound recordsets – the data is demand paged from the server
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Sortable columns – standard column sorting (right mouse column header click)
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Automatic column generation – for prototyping purposes, all columns are generated
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The techniques demonstrated here should be used for all grids which can be fully populated from a SQL statement.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The following new functions are now available:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           DataWidgets.InitialiseUnboundGrid (dwGrid As SSDBGrid, sCaption as string)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           DataWidgets.PopulateGridFromSQLQuery (dwGrid As SSDBGrid, sSQL as String)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Note: the word unbound derives from the 3 modes that the data grid can operate:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Add Item – rows are added to the grid 1 at a time like a list box. This is used for small non-SQL oriented data sets.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Bound – the grid is bound to a data control on a form. This is useful when developing prototypes but does not scale to production databases.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;span&gt;&#xD;
          
             Unbound – the grid is populated from a SQL recordset which is demand paged from the server.
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           A simple example demonstrates how to add an unbound grid to view all companies:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterLoad()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set dwGrid = FormObjectsLocal.ShowForm.GetFieldWidget( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      “EntityName”, “GridFieldName”)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                if dwGrid is nothing then exit sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                With DataWidgets
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      .InitialiseUnboundGrid (dwGrid), “All Companies”
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      .PopulateGridFromSQLQuery (dwGrid), “Select * From Company”
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Not only can the grid now efficiently process very large recordsets, but it also automatically provides column sorting:  by right mouse clicking on the column header.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Warning: Column sorting is very generic so you must obey an important rule when writing your SQL query. This rules relates to fields of type TEXT in SQL Server. TEXT fields cannot be sorted unless cast to a VARCHAR data type. For example the JobTitle column should be written as:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            SELECT….. Convert(Varchar(64), JobTitle) as JobTitle …. FROM….
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This will ensure that sorting the JobTitle column will be efficiently processed.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           It is normal to add your own style to columns (width, type etc..) and this should be done using DataWidgets.AddColumnToGrid before calling DataWidgets.PopulateGridFromSQLQuery.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           39. Refreshing Grids on Other Entity Forms
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           When a form wishes to fire a button on another entity form which can be virtual or not, perhaps to refresh a grid or view, then this example shows how to click the button programmatically from another form script:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub RefreshBidManagerGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set frmBidManager = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormFunctions.GetAFormInstance( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "frmFormDesignedByUser", True, "", "BidManager")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If frmBidManager Is Nothing Then exit sub ‘ Form not open
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set btn = frmBidManager.GetShowForm.GetButtonFromFunction( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "btn", "RefreshBidStagesGrid")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If btn Is Nothing Then Exit Sub    ‘ Button not found
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                btnIndex = btn.FormWidget.Index
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                frmBidManager.btn(btnIndex).Value = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If the form is a virtual entity, replace "frmFormDesignedByUser" with "frmVirtualFormDesignedByUser" in the GetAFormInstance function.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           28 March 2002 Update:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           It is now possible to use the frm{EntityName} in order to access forms which is more intuitive. The example below shows how this works:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If FormFunctions.isformloaded("frmAdvertisement") Then
            &#xD;
      &lt;br/&gt;&#xD;
      
             Set f = FormFunctions.GetAFormInstance("frmAdvertisement")
           &#xD;
      &lt;br/&gt;&#xD;
      
             f.LoadEntityDetails 0
           &#xD;
      &lt;br/&gt;&#xD;
      
             FormFunctions.AddFormToTabView (f), ""
           &#xD;
      &lt;br/&gt;&#xD;
      
            Else
           &#xD;
      &lt;br/&gt;&#xD;
      
             Set f = FormFunctions.LoadFormByName("frmAdvertisement", 0, "New Advert")
           &#xD;
      &lt;br/&gt;&#xD;
      
            End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           40. Running Mail Merges From Script
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The mail merging technology was embedded within the actions system and not exposed to script until 5.00.091. This build includes a script friendly interface to easily generate mail merges without requiring any pre-processing of the data sources into the expected format.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           A new object is exposed: MailMerge, which can be accessed from the script editor.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This object exposes a number of properties/methods:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             Name
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Type
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Description
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              NewDocument
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Method
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Called to instantiate a new merge document
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              KeySQL
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Property
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            The SQL which generates the ID’s of the keys
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              Template
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Property
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            The word template .DOT file
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              AppendDocument
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Method
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Append a document to collection
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              SaveAs
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Property
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Save the merged document as this file name
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              UserId
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Property
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Set the user who is running the merge
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              RunMailMerge
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Method
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Run the merge and generate the document
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
             
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The use of this technique is now described by use of an example:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub MailMergeTest
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              With MailMerge
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 .NewDocument
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 .KeySQL = "Select CompanyId, 26531 as ContactId, 99 as RequirementId, " &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           " 25 as ContractId, " &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                           " 33518 as CandidateId, 4 as AdvertisementId, " &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                           " 3 as ContractorInvoiceId, 1 as TestEntityId" &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                           " From Company Where CompanyId = " &amp;amp; m_CompanyId
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 .Template = "\\TriSys2000\ActionTemplates\client mailshot.dot"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 .AppendDocument "D:\CVData\P\Synonyms Test.doc"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 .SaveAs "\\TriSys2000\ActionTemplates\Mailshots\MMTest.rtf"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 .RunMailMerge
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The .KeySQL property accepts a SQL string returning only the keys of the underlying entities. In this example, we want to merge the document consisting of the current company (m_CompanyId), requirement 99, placement 25, candidate 33518, advertisement 4, contractor invoice 3 and test entity 1.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This allows you to control the relationships between the records.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The .Template property is the full path to the word .dot file.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .AppendDocument can be called any number of times to append any number of documents (CVs perhaps) to the end of the merge.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The .SaveAs method tells the merge that the resulting merged file will be saved to the specified file name.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The .RunMailMerge method starts the process of creating the data source (.tmm file), instantiating word, opening the .dot template and merging to a new document using the data source. If the .SaveAs file is set, it then saves the document. The resulting document is then made visible for viewing.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           41. Diagnostics and User Activity Logging for Debugging and Audit Trails
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           For debugging, consider using the Diagnostics object for debugging as this logs to the diags file in real-time without intrusion and can capture hundreds of messages. Turn diagnostics on either via the Configure-&amp;gt;Diagnostics menu option, or using the /Diag command line option.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           To use in your code, just use the following syntax:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Diagnostics.Diag _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "Your message goes here... Concatenate variables, properties etc..."
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The main advantage to this approach is that you can leave these in production systems and messages are only logged when diagnostics are enabled when attempting to debug a problem encountered on-site.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The .out file produced also contains version + ancilliary information which can help diagnose problems.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Note, that when diagnostics are enabled, all MessageBox.AppMsg and AppStopMsg and QuestionYesNo etc.. are also logged to the .out file.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           For logging user activity to SQL Server as an audit trail, use the following:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Initialisation.Users.DbInsertUserActivity (Initialisation.UserId), _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "The message to be logged", startDate, endDate
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The startDate and endDate can be set to Now, but these can be used to capture the time taken for a particular operation.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           All records are written to the UserActivity table only if the Configure-&amp;gt;User Activity Logging menu option is set by administrator.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           42. Closing Action Forms
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           It may be necessary to close an action form from script for example when a user is not permitted to run an action. In this case the following method can be called from the Form_AfterLoad event in order to stop the form from loading and displaying:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.FormRef.FormUnload
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           43. Intercepting Shortlisting Events
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            New scriptable event available from both requirement and candidate search forms which is raised when a contact is added to the shortlist either via the shortlist button or via active searching pop-up window.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterShortlist ( ContactId )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This event is called after the contact is added to the underlying tables (CandidateSearchHits, RequirementCandidate, RequirementCandidateAction) but before the associated grids are refreshed. This gives the scripter the opportunity to manipulate the underlying records, or indeed add the record to other unrelated tables (customised lists).
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Catch each candidate as they are added to the shortlist so that we can
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' do our own thing with them.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterShortlist ( ContactId )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                MessageBox.appMsg "Script: ContactId: " &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      ContactId &amp;amp; " Added to requirement: " &amp;amp; m_RequirementId
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           44. Post Code Lookup
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           5.00.100 added post code database lookup capability to the system and exposed this as script. If the customer has licensed the post code address file (PAF) from QAS Systems, then the post codes will exist in the database.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The object PostCodeLookup is exposed through script and can be used as follows:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Button_Click ()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set btn = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.ShowForm.GetButtonFromIndex("btn", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.EventControl.Index)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If btn Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                On Error Resume Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               Select Case btn.ButtonFunction
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                     Case "AlternativeAddressPostCodeLookup"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Call AlternativeAddressPostCodeLookup
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End Select
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Button lookup from alternative address fields.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub AlternativeAddressPostCodeLookup
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                sPostCode = FormObjectsLocal.ShowForm.GetFieldValue( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "ContactConfigFields", "Alternative1PostCode")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If len(sPostCode) = 0 Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      MessageBox.VBMsgBox gVBmsgBoxSpaceOut ( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "Please enter a post code before searching for a matching address.")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' Do the lookup now
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                With PostCodeLookup
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      .PostCode = sPostCode
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      If .Search Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            FormObjectsLocal.ShowForm.SetFieldValue("ContactConfigFields", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "Alternative1StreetAddress") = .Street
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            FormObjectsLocal.ShowForm.SetFieldValue("ContactConfigFields", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "Alternative1StreetSuburb") = .Suburb
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            FormObjectsLocal.ShowForm.SetFieldValue("ContactConfigFields", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "Alternative1City") = .City
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            FormObjectsLocal.ShowForm.SetFieldValue("ContactConfigFields", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "Alternative1County") = .County
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            FormObjectsLocal.ShowForm.SetFieldValue("ContactConfigFields", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "Alternative1PostCode") = .PostCode
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Other properties of the PostCodeLookup object are as follows:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
             Enabled
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Read
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            True of post code lookup enabled for site
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              PostCodeRadialSearching
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Read
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            True if radial searching enabled for site
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              TopRecordCount
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Write
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Number of records to display in wildcard post code search
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              PopUpSelection
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Write
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            Set to True if a wildcard pop-up selection dialogue is to be displayed.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           45. Using Bookmarks in Grids
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           As a rule, it is not advisable to enumerate through the grid to access the rows and cells directly as this is inefficient. See the following section to see how to access the underlying unbound recordset.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            In order to retrieve all rows in a non-additem grid, use the following code:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                 .Redraw = False 
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                .Movelast
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                .Movefirst
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                For i = 0 to .Rows - 1
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      .Bookmark = i
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      ContactId = .Columns(0).Text
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                       If i = 0 Then
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            s = s &amp;amp; (ContactId)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Else
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            s = s &amp;amp; ", " &amp;amp; (ContactId)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                .Redraw = True
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           46. Accessing Grid SQL Query Recordset and Cloning
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           When a grid is populated from a single SQL statement using the function: DataWidgets.PopulateGridFromSQLQuery, the grid handling is performed automatically by the application.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           There are occasions however, when you may require access to the underlying recordset in order to perform some extra processing (calculating totals etc..).
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The following example shows how to populate a grid, retrieve the automatically generated underlying recordset, clone it and enumerate through the cloned recordset to access the values:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With DataWidgets
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               .InitialiseUnboundGrid (dwGrid), "First 1000 Rows of Table: " &amp;amp; sTableName
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                sSQL = "Select Top 1000 * From " &amp;amp; sTableName
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                   
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' One stop shop - even easier than drinking beer!
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .PopulateGridFromSQLQuery (dwGrid), (sSQL)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Test access to the recordset using cloning technique
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           s = ""
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Set rs = DataWidgets.GetUnboundScriptedGridRecordsetFromHWnd(dwGrid.hWnd)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If Not rs Is Nothing Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set cloneRS = rs.Clone
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                With cloneRS
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      .MoveFirst
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Do While Not .EOF
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            s = s &amp;amp; " " &amp;amp; .Fields(1).Value &amp;amp; .Fields(2).Value
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            .MoveNext
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Loop
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      .Close
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MessageBox.appmsg "Recordset contents=" &amp;amp; s
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
      
            47.
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           Unbound Grids - Formatting Columns
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           As regards formatting, there are 2 ways to achieve this: Using SQL (fastest and most efficient) and using Row Level Callbacks (slower, but more control)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           SQL Method
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Code the SQL Select with the convert function to get a UK display date format:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Select convert(varchar(11), StartDate, 113) as StartDate
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The numbers might not be exactly what you want but this is what you do to get your formatting:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Select Convert(varchar(11), convert(decimal(10,5), numField)) as numField
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This will give you a number with 5 decimal places. (Notice the double convert to get the value into text format because ADO will strip trailing zeros).
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Row Level Callbacks
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Use the Grid_RowLoaded event to capture the loaded row from the SQL statement and format the specified column explicitly. Example:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Grid_RowLoaded
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              Set dwGrid = FormObjectsLocal.EventControl
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              If dwGrid Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              Set fd = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.ShowForm.GetFieldDescriptionFromWidgetHwnd(dwGrid.hWnd)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              If fd Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              Select Case fd.TableFieldName
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                 Case "DateViewGrid"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                     ' Format the third column (0 base columns) which is a date into
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' the format e.g. 19-Feb-2002
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                       With dwGrid
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                           If .Columns.Count &amp;gt; 2 Then           
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                           .Columns(2).Text = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           StringFunctions.VBFormat(.Columns(2).Text, "DD-MMM-YYYY")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                           End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                    End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
              End Select
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Warning: Failure to check the column counter before setting the column value will result in accessing a non-existent grid cell which will cause the grid to bring down the application!
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           48. Fast Contact Search – Script Access
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The Selection.FastContactSearch function was added in build 5.00.054 to allow script developer to access the fast contact search pop-up.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           An example is shown in section 27.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In order to more tightly control this, a new AND SQL argument has been added in 5.00.121 which can be used by the script programmer to add an extra SQL WHERE clause to the query.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The function signature is:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' VB Script friendly function to get a selected contact
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Function FastContactSelection( _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ClientContacts As Boolean, _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           CandidateContacts As Boolean, _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                     Optional CandidateDefault As Boolean = False, _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Optional AndSQL As String = "") As Long
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           An example is shown below:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub FastContactSelection
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                 ' Find a contact - either client (arg1) or candidate (arg2)
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' - default client (arg3) - called Smith (arg4)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ContactId = Selection.FastContactSelection(True, True, False, _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            "And Contact.Surname = 'Smith'")
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If ContactId = 0 Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set Contact = Initialisation.Contacts.FindFirst((ContactId))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                MessageBox.AppMsg "You selected contact: " &amp;amp; Contact.Christian &amp;amp; _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           " " &amp;amp; Contact.Surname &amp;amp; "?"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           49. Form_Unload – Preventing form from closing from Script
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            By using the Form_Unload (Cancel ) event, it is possible to prevent the user from closing the form without saving the changes controlled by script.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The application knows when a form is ‘dirty’ i.e. fields have been changed but not saved and it correctly prompts the user in these instances. The application however, knows nothing about the script behaviour and which fields it may control, so offers this event to allow script to prevent the form from closing in such circumstances.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Here is an example:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ' Ask user to quit
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_Unload ( Cancel )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Cancel = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           (MessageBox.QuestionYesNo("Are you sure you want to quit?", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           "Form_Unload") &amp;lt;&amp;gt; vbYes)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                FunctionStatus.SetParameter("Cancel") = Cancel
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In the above example, the event is called from the application when the user wants to close the form. The event simply asks the user for verification and returns the status to the application.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           If the user answers Yes, the form will close, otherwise it will not.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           50. Spin Increments – Setting Visibility from Script
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            It is sometimes necessary to set the visibility of some fields (Candiate Vs Client etc..) by script.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The numerical data entry fields spin increment widgets:   are separate from the actual field.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           They have the same index as the field so it is possible to write a generic function as follows:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Function gSetSpinIncrementVisibility(sEntityName, sTableFieldName, bVisible)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                With FormObjectsLocal.ShowForm
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Set objField = .GetFieldWidget((sEntityName), (sTableFieldName))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      If objField Is Nothing Then Exit Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Set formField = .GetFormFieldFromFieldName((sEntityName), (sTableFieldName))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      index = objField.Index
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Set spin = FormObjectsLocal.formref.controls("spinIncrementValue")(index)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                       If .IsWidgetVisibleOnCurrentTab((objField.hwnd)) Then
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                            spin.Visible = bVisible
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      End If     
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End With   
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Function
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This can be used as follows:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Tab_Click ()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Call InvisibleNotClientFields
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterLoadRecord ( Id )
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Call InvisibleNotClientFields
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Public Sub InvisibleNotClientFields
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                                             
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call SetFieldVisible("ContactConfigFields","RequiredRemuneration",
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                       ContactType)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                                                                               
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Call SetFieldVisible("ContactConfigFields","RemunerationRequiredPeriod",
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                       ContactType)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           'set spin increments invisible
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                                                                               
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Call gSetSpinIncrementVisibility("ContactConfigFields", "RequiredRemuneration",
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  Not ContactTypeClient)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                                                                               
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Call gSetSpinIncrementVisibility("ContactConfigFields", "MinimumPerm",
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                  Not ContactTypeClient)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           51. FreeTextSearchEngine – Searching CV’s using ISYS from Script
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In build 6.00.089 or later, script developers can now get access to the ISYS CV search functionality.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            A new object: FreeTextSearchEngine is available for this purpose:
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ Returns the number of documents found
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Public Function Search(sFreeText As String) As Long 
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ Returns the long path name for the specified index
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Function GetDocumentLongFileName(Index As Long) As String
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ Returns the number of hits in the document at the specified index
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Function GetDocumentHits(Index As Long) As Long
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ‘ Returns the relative path of the document at the specified index
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Function GetDocumentRelativeFileName(Index As Long) As String
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Example Code:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With FreeTextSearchEngine
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               lNumDocuments = .Search("unix // oracle")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               MessageBox.AppMsg "Found " &amp;amp; lNumDocuments &amp;amp; " CV's?"
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                                                                                  
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               For i = 1 to lNumDocuments
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                     s = s &amp;amp; vbcrlf &amp;amp; .GetDocumentLongFileName(i)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
               Next
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
                MessageBox.AppMsg "CV’s: " &amp;amp; s &amp;amp;
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End With
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           52. Using CommonDialogue Friendly Function to Find Files
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The FileSystem.CommonDialogue method is not script friendly (passes parameters byref) so a wrapper function: FileSystem.FileDialogue has been developed to provide the same functionality for pointing at files on the file system.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Button_Click ()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' Not interested in non-config buttons
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If FormObjectsLocal.EventControl.Name &amp;lt;&amp;gt; "btn" Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set btn = FormObjectsLocal.ShowForm.GetButtonFromIndex("btn", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           FormObjectsLocal.EventControl.Index)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If btn Is Nothing Then Exit Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Select Case btn.ButtonFunction
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      Case "ImportHTML":     Call ImportHTMLFile
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End Select
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Private Sub ImportHTMLFile
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                sFile = FileSystem.FileDialogue("Find HTML Page", (sFile), "*.*", _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      "All Files (*.*)|*.*", 1)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                MessageBox.appmsg "File=" &amp;amp; sFile
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Use 1 for File Find and 2 for new file.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           53. Access System Settings
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           An administrator can set system wide settings using the ConfigureàSystem Settings menu:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           To access these from script, use the Initialisation.GetSystemSetting(sName) function.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This is available from version 6.01.006.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Example:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           sSystemSetting = Initialisation.GetSystemSetting ("YourSettingName")
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Programmers can now generate and update their own settings using the Initialisation.SetSystemSetting(sName, sValue) property:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Initialisation.SetSystemSetting("GoToAssistDefaultId") = lDefaultId
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This function writes the new value directly to the database SystemSetting table.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           54. Setting Script Timeout Globally or for Each Form
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In build 6.01.017 onwards, it is possible to set the script timeout for each form in order to control the timing of the script engine.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This is done by the exposure of the ScriptEngines object which is a collection of all script engines within the system. The ScriptEngines object exposes a property and an object of interest to scripts:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ScriptEngines.ScriptTimeoutMilliseconds
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ScriptEngines.GetScriptEngine(hWnd as Long)
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The following example code shows how to set the global and local script timeouts:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Public Sub Form_AfterLoad ()
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' Set script timeout for all subsequently instantiated script engines
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ScriptEngines.ScriptTimeoutMilliseconds = 60000
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                ' Set script timeout in milliseconds for this form only
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                Set objEngine = _
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           ScriptEngines.GetScriptEngine((FormObjectsLocal.FormRef.hWnd))
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                If Not objEngine Is Nothing Then
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                      objEngine.ScriptTimeoutMilliseconds = 10000
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
                End If
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h1&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;br/&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="null" target="_blank"&gt;&#xD;
      
           55. Appendix A - Type Mismatch Errors
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/h1&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This excerpt from MSDN explains the reason why some functions in TriSys will not be allowed to be called with BYREF parameters because of limitations in the VBScript (or JavaScript) language.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h2&gt;&#xD;
    &lt;span&gt;&#xD;
      
             INFO: Type Mismatch Errors When You Pass Parameters from ASP to a Visual Basic Component
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h2&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
               
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The information in this article applies to:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;span&gt;&#xD;
          
             Active Server Pages
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Microsoft Visual Basic Learning, Professional, and Enterprise Editions for Windows, versions 5.0, 6.0
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
             
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h2&gt;&#xD;
    &lt;span&gt;&#xD;
      
           SUMMARY
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h2&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            The code sample below illustrates various scenarios that causes
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Type Mismatch
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            errors with method calls from an Active Server Page (ASP) using Visual Basic Script to Visual Basic COM components.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
            
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
           'VB Code : [Project=prjParam;Class=clsParam]
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
           'By default, the parameter is passed 'ByRef'
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
            
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
           Sub x( a as string )
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
              a = "Changed"
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
            
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
           'ASP Code
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
           k = "Hello"
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
            
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
           'Create the above VB object
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
            
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
           Set obj = Server.CreateObject("prjParam.clsParam")
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
            
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
           obj.x k        'Type Mismatch error occurs
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
            
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
           obj.x (k)      'Using PARANTHESIS forces 'ByVal' , 'k' does not change
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
            
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
           Call obj.x (k) 'Type Mismatch error occurs
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
            
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
           Call obj.x cstr(k)   'The CSTR function returns a string,
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
                                'the address of the variable (k) is not passed.
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
                                'The value of 'k' doesn't change
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
            
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
           Set obj = Nothing
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            The following is another example that can cause the error:
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
            
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
           'VB Code : [Project=prjParam;Class=clsParam]
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
           'If you do not specify, by default the parameter is passed 'ByRef'
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
           'Note: Parameter type is VARIANT
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
            
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
           Sub y( a as variant )
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
              a = "Changed"
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
           End Sub
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
            
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
           'ASP Code
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
           k = "Hello"
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
            
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
           'Create the above VB object
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
            
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
           Set obj = Server.CreateObject("prjParam.clsParam")
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
            
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
           obj.y k        'changes 'k'
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
            
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
           obj.y (k)      'Using PARANTHESIS forces 'ByVal' , 'k' doesn’t change
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
            
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
           Call obj.y (k) 'changes 'k'
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
            
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;code&gt;&#xD;
      
           Set obj = Nothing
          &#xD;
    &lt;/code&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
            
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h2&gt;&#xD;
    &lt;span&gt;&#xD;
      
           MORE INFORMATION
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h2&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            VBScript only supports VARIANT ByRef parameters. You can use VBScript to call a procedure that takes ByRef strings, but the default behavior of components built with Visual Basic is to fail with a type mismatch error when trying to pass ByRef parameters to these components. OLE Automation's default type-coercion function fails when asked to convert a ByRef variant into any other ByRef type.
             &#xD;
        &lt;br/&gt;&#xD;
        
             
            &#xD;
        &lt;br/&gt;&#xD;
        
             VBScript does not impose this restriction. However, it is the default behavior of the component that decides that a ByRef variant cannot be converted into a ByRef string.
             &#xD;
        &lt;br/&gt;&#xD;
        
             
            &#xD;
        &lt;br/&gt;&#xD;
        
             If a parameter to a procedure is enclosed in parenthesis, the parameter is first evaluated as an expression. Because the result of an expression cannot be passed by reference, the parameter is passed ByVal and no error is reported.
             &#xD;
        &lt;br/&gt;&#xD;
        
             
            &#xD;
        &lt;br/&gt;&#xD;
        
             Avoid using ByRef parameters unless they are explicitly needed. This is because:
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;ul&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            ByRef procedures cause more overhead during cross-process marshaling, because COM must marshal the value both to and from the object. ByVal parameters require only one-way marshaling.
            &#xD;
        &lt;br/&gt;&#xD;
        
             
            &#xD;
        &lt;br/&gt;&#xD;
        
             However, if you are willing to accept the overhead of any marshaling at all, an extra parameter marshal back is unlikely to cause a huge performance degradation.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        
            ByRef parameters can introduce hard-to-find bugs in your code if you accidentally change the value of one of the parameters.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
    &lt;li&gt;&#xD;
      &lt;span&gt;&#xD;
        &lt;span&gt;&#xD;
          
             JScript does not support ByRef parameters of any type, so if you plan to write components that will support JScript, you should not use ByRef parameters at all.
            &#xD;
        &lt;/span&gt;&#xD;
      &lt;/span&gt;&#xD;
    &lt;/li&gt;&#xD;
  &lt;/ul&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-577585.jpeg" length="175376" type="image/jpeg" />
      <pubDate>Tue, 25 Apr 2000 15:36:28 GMT</pubDate>
      <author>garry@trisys.co.uk (Garry Lowther)</author>
      <guid>https://www.trisys.co.uk/trisys-scripting-engine-bible</guid>
      <g-custom:tags type="string">bible,vb script,programmers,TriSys Business Software,Recruiting CRM</g-custom:tags>
      <media:content medium="image" url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-577585.jpeg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/md/pexels/dms3rep/multi/pexels-photo-577585.jpeg">
        <media:description>main image</media:description>
      </media:content>
    </item>
  </channel>
</rss>
