Tuesday, December 17, 2013

60 Top and Best Project Management Software Solutions and Services

60 Top and Best Project Management Software Solutions and Services

As the software management is getting complex day by day, many software management software solutions and services have been available in the market to sort out the problem of project management. These project management softwares are loaded with plenty of exciting features like Agile Project Management, Budget & Expense Management, Collaborative Software, Document Management System, Issue Tracking System, Project Portfolio Management, Resource Management, Risk Management, Scheduling, Task Management, and Project Management etc. Following is the list of best and widely used Project Management Softwares which you can use for your business. Lets have a quick look on these project management softwares.

1. Genius Project On-Demand Project Management Software

Genius Inside delivers world class process-driven project and portfolio management software tailored to your company's needs. Designed to manage the entire lifecycle of your projects, Genius Project delivers industry solutions built on powerful collaboration and workflow capabilities.

2. Intervals Project Management Software

Intervals is web-based project management software that marries time tracking and task management in a collaborative online space with powerful reporting.

3. Clarizen Project Management Software

Clarizen uniquely combines true social collaboration with powerful project management to align your team and drive increased productivity and profitability. Fast to deploy and easy to use, Clarizen harnesses the power of the cloud to help you get work done on time, on budget and with better results.

4. PPM Central Project Management Software

PPM Central is Métier's premier project portfolio management software product. PPM Central has revolutionized the way that users interact with enterprise software. No longer do users have to learn complex, enterprise software. With PPM Central, the power is in the background. Users easily search for what they want or explore using our cutting edge visualization tools. Never-before-seen visualizations provide powerful reporting and analysis that help manage and optimize your business.

5. HumanEdj Project Management Software

HumanEdj is cloud software for virtual team planning - unique software for managing change across multiple organizations.

6. ZilicusPM Project Management Software

ZilicusPM is complete project management software that keeps you on top of everything, quick and easy. It offers comprehensive functionality, stylish dashboards, useful reports and highly intuitive interface.

Used in more than 80 countries, ZilicusPM users have found flexible scheduling with interactive Gantt chart, easier track task, issue and risk progress, manage meetings, and collaborate on projects quite effectively.

7. ProjectManager.com Project Management Software

ProjectManager.com was founded in 2008 by 4 guys who wanted to create a better toolset for managing projects. In just 12 months of going live, ProjectManager.com grew to 25 staff and a healthy revenue stream. ProjectManager.com now have customers in more than 100 countries and ProjectManager.com is one of the fastest project management service providers on the net. More than 70% of our customers are based in the USA with organizations like NASA, United Nations, Boeing and Volvo all managing projects on our platform.

8. Wrike Project Management Software

Wrike makes the work of all types of teams, both co-located and distributed, fast and stream-lined. Collaborating within single friendly and flexible system helps to keep everyone up-to-date with the work progress. It is a smart solution for your project management, saving you time to get more things done.

9. Easy Redmine Project Management Software

Open source web-based project management software, Redmine 1.x or 2.x compatible extension. It has dozens of minor helpful features and plugins such as project templates, document versions, new personal page modules, resource management, project budgets, help desk, alerts etc.

10. Apptivo Projects Project Management Software

Until now, the cost of software alone made it impossible for many small businesses to keep up. Problem is, the vast majority of companies in our world are not huge corporations, but small and moderately sized entrepreneurial ventures. Determined to fuel the growth of small businesses around the globe, the innovators at Apptivo have been hard at work, drawing on their individual strengths and talents to level the playing field.

11. Breeze Project Management Software

Breeze makes managing projects easy by letting you see everything in one place. Simple and effective boards where you can store all your tasks. Visualize every step of your workflow. See what tasks are coming and finish work in less time.

12. 5PM Project Management Software

5pm? makes team collaboration easy. Share your projects, tasks, notes and files with your team; track progress and time, send alerts, run reports - all in one place.5pm is easy to use - get your team on it with no training.

13. TeamworkPM Project Management Software

TeamworkPM is an easy-to-use online teamwork & project management software application that helps managers, staff and clients work together more productively online.

14. UniPhi Project Management Software

UniPhi suite of solutions covers the end to end life cycle of projects and engages with all people working within that environment.

The key benefits to UniPhi's solutions are:

a) Transparency of information
b) Real time data entered once used many times
c) Integrating both people and information
d) Fostering collaboration

15. EcoSys EPC Project Management Software

EcoSys is fast becoming the global standard for enterprise Project Controls software. Our easy-to-use web-based platform, EcoSys EPC, helps organizations worldwide plan and manage project portfolios, control project costs, and improve project performance.

16. Projektron BCS Project Management Software

Comprehensive functions - individual customizing - reliable technology: The web-based Business Coordination Software Projektron BCS embodies quality, efficiency and transparency in project and business.

17. Seavus Project Planner Project Management Software

Seavus is a software development and consulting company with a proven track-record in providing successful enterprise-wide business solutions, covering the European and US market from several offices in the world. We serve over 3,000 customers worldwide, with the knowledge and the skills of over 500+ experts

18. Project Insight Project Management Software

Project Insight is the leading web-based project management software for the mid-market developed by Metafuse, Inc. It brings project teams and management teams together to collaborate on projects in real-time, whether across the globe or street. Project Insight software solutions and project management services help organizations operate more efficiently and productively.

19. Unifier Project Management Software

Oracle's Primavera Unifier is the best-in-class project lifecycle management solution for capital planning, project delivery, cost control, and facilities and real estate management. It provides governance across all project phases, from planning and building to operations and maintenance. The Business Process Automation engine integrates critical business processes, data, and documents across the organization.

20. WebActionHero Project Management Software

WebActionHero is a state of the art enterprise risk management cloud that delivers Unparalleled Project Performance. The WebActionHero story is driven from difficult professional experiences and transformed into a robust and diverse enterprise risk management solution.

21. VPMi Project Management Software

VPMi Professional is a full featured online project portfolio management software system. It goes far beyond Basecamp and other simplistic virtual management software solutions but will never overburden your staff like Microsoft Project Server, @Task, Innotas, SAP, or Daptiv.

22. Microsoft Project Project Management Software

Get started quickly with a flexible online solution for project portfolio management (PPM) and everyday work delivered through Office 365. Includes full desktop management capabilities as a subscription.

23. Daptiv PPM Project Management Software

Daptiv takes a unique approach to project portfolio management (PPM). We provide industry-leading PPM functionality, but unlike vendors that force you to change your processes to fit their tools, we've designed our solution with you and your team in mind. It's flexible and easily configured so that you can introduce powerful new PPM capabilities--when and where your organization is ready for them.

24. TrackerSuite.Net Project Management Software

TrackerSuite.Net Web work management applications are accessed via Microsoft Internet Explorer, or through Firefox. TrackerSuite.Net can integrate with other project management software applications including Microsoft Project, most popular CRM applications and virtually any other Service Oriented Architecture (SOA) compatible enterprise platform.

25. Trakeze Project Management Software

Trakeze is an affordable, web-based small business management application including extensive CRM project planning, Gantt charting, project management, task management, requirements management, time tracking, human resources management, and collaboration features.

26. EPM Live Project Management Software

EPM Live is designed to manage all work in the truest sense. Organizations can now manage their projects, their products and their services as well as all other work in one platform without the need for integration. Because all of this work is managed differently, EPM Live has solution apps that allow each department/team the right tools they need to manage any type of work.

27. KeyedIn Projects Project Management Software

Connecting easily with your organization's existing systems, KeyedIn Projects gives project, program and portfolio managers the control and insight they need throughout the entire project lifecycle. It ensures resources are used strategically, risks addressed, and costs managed tightly - together driving project performance and profitability.

28. VisionProject Project Management Software

VisionProject is a Project Management Software that enables you to manage projects in an efficient way, saving you time and money.
VisionProject supports the Lean and Agile (such as Scrum and XP) way to manage projects with tools such as Task Board, Kanban Board, Burn-Down Charts and Cumulative Flow Diagrams (CFD), but can also be used for Traditional Project Management.

29. Project Portfolio Office Project Management Software

Released in 2005, Project Portfolio Office (PPO) is an award winning online project portfolio management (PPM) and collaboration application. Designed by project managers to assist project teams within organisations of any size and across all industries, PPO helps to plan, manage, collaborate, execute and report on projects, programs and portfolios.

30. Project'Or RIA Project Management Software

Project'Or RIA is an open source Project Management Software, trying to gather in a single tool every functionality needed to organize your projects. The objective is to keep it simple, easy to use on a day to day activity, while covering most of the project management

31. ProjectVision Project Management Software

ProjectVision was developed with the end user in mind. It is a comprehensive, mature and established project management solution providing companies, organisations and public sector bodies. Our skills and knowledge have enabled us to become a world leader in Project, Portfolio and Performance Management Software. We value our extensive client base and provide a comprehensive range of services to ensure our customers gain the full value and benefits from using ProjectVision.

32. Onepoint Projects Project Management Software

Onepoint Software is the leading provider of integrated project and portfolio management solutions for innovative small and medium-sized businesses. Unlike traditional PPM software, Onepoint Project integrates formal, agile and JIRA projects into a single project portfolio and resource utilization database.

33. LiquidPlanner Project Management Software

Modern teams need a fast, streamlined way to manage their work. Our unique approach offers an easy alternative to Microsoft Project and can be used by just about anyone - traditionally-trained project teams, agile teams, or even teams that use ad-hoc processes. LiquidPlanner customers report an average of 16 hours saved per month due to automation.

34. AtTask Project Management Software

Prioritize work across multiple projects--Make sure the right work gets done at the right time. Collaborate in the context of work--Stop losing work in email and chat, and eliminate expensive and frequent status meetings. Do it all, in one tool--Request management, work prioritization, Agile, ad hoc work, traditional projects, and collaboration. Don't bolt on a disconnected tool.

35. Psoda Project Management Software

Psoda is a young, dynamic company with a single-minded focus on providing the toolset of choice for program and project professionals worldwide.The company is privately-owned, incorporated in New Zealand, with a global vision

36. OrangeScrum Project Management Software

OrangeScrum is an Awesome Project Collaboration Tool that gives you full visibility and control over your projects. It is an agile project management tool.

37. Timefox Project Management Software

With more than 40,000 users in over 100 countries, TimeFox is the proven timesheet and project management system for creative professionals.

38. Timeless Project Tracking Project Management Software

Timeless Project Tracking enables project managers to focus on resolving issues and actually managing projects rather than wasting time chasing estimates. It gives managers up-to-date information to make more informed decisions, which is especially important in dynamic and agile project environments.

39. Celoxis Project Management Software

Celoxis offers a comprehensive web based project management software along with great integrated tools to manage your resources, collaboration, time sheets, expenses and workflow.

40. Smartsheet Project Management Software

Smartsheet.com, a leading Software as a Service (SaaS) company, offers an enterprise-ready cloud app for project management and collaboration. The award-winning tool is trusted by more than 20,000 subscribing organizations in over 100 countries.

41. QuickBase Project Management Software

QuickBase project management software is easily customized to fit your organization's specific processes and help your team with task management

42. eStudio Project Management Software

same-Page is the developer of eStudio, an awarding winning provider of a powerful suite of collaboration software for small businesses, non-profits, government agencies and entrepreneurs. Every day thousands of people log in and depend on eStudio to share files, schedule events, meet deadlines, assign tasks, centralize feedback, have web meetings and get on the same page with clients and consultants.

43. Mavenlink Project Management Software

Mavenlink is the #1 application in the Google Apps Marketplace. Go beyond project management and start managing your business. Collaborate, enter tasks, track time, work within a budget, and send invoices. All in one place.

44. Planbox Project Management Software

Planbox. An agile project management tool simple and powerful enough for any team, from the Scrum-savvy to the Scrum-dummy.

45. Innotas Project Management Software

The Innotas Cloud platform is a better way to run your IT business. Instead of building & running applications yourself, you can run on a high performance platform set in a SAS 70 compliant data center with world class security. When you subscribe to Innotas, you just log into a web browser and start using it. That's the power of the Innotas Cloud. The benefits include:

a) Faster time-to-value
b) Lower overall costs
c) Reduced risk
d) Accommodates constantly changing demands

46. eTask-it Project Management Software

eTask-it includes an interactive and proactive document system, built to deliver the right information at the right time to the user who needs it.

Document templates, instructions, examples and Task guides can be designed as part of the Blueprint, standardizing quality, minimizing misunderstandings and reducing reworks and cost. eTask-it can function as a main repository of documents, with appropriate version control, or can easily be linked to existing KM systems.

47. iCoordinator Project Management Software

iCoordinator is an online collaboration software that can act as the central nervous system of your business, assisting you to collaborate easily, manage efficiently and achieve higher productivity.Collaborate easily and effectively with different departments and external parties.

48. CrossPoint Project Management Software

At its core, CrossPoint is a central repository for all your project-related data. It is a server-based, multi-user application, which provides for easy, yet solid multi-project creation and management. CrossPoint helps you organize all the project details that take away from your ability to actually manage, and untangles the complexities around providing real answers to the basic project management questions

49. Unanet Project Management Software

Unanet Project Management software can support your organization with centralized project management capabilities and resource scheduling.

50. ActiTIME Project Management Software

actiTIME is a web timesheet software. It allows you to enter time spent on different work assignments, register time offs and sick leaves, and then create detailed reports covering almost any management or accounting needs. actiTIME is a web-based application that means you will access it via web browser. The application itself can be installed in your office or hosted at our secure data center and provided to you as a service.

51. AgileWrap Project Management Software

AgileWrap successfully supports defect management by allowing users to define a defect, assign it to a feature, schedule it in an iteration and track its progress throughout the software development life cycle. AgileWrap grants you this ability by having requirements and defects stored in a single backlog.

52. Workgroups DaVinci Project Management Software

Workgroups DaVinci manages the sales process with smart forms built to manage prospects, opportunities, as well as project initiation (for example creative briefs) and management. Workgroups Davinci even seamlessly integrates with other CRM systems.

53. TALIKA PMS Project Management Software

Talika PMS is real time scheduling centric erp which works at micro-level. The future schedule automatically adjusts itself as events (task completions, delays, breakdowns, etc.) are notified in real-time as and when they occur.

54. Genius Project for Domino Project Management Software

Genius Project's IBM Lotus Notes and Domino delivery option integrates seamlessly with your Lotus Notes platform, without third party software. Having all the features of Genius Project integrated into your system through a shared platform means a shorter learning curve and reduced implementation costs.

55. EasyProjects.net Project Management Software

Easy Projects is a tool for managing your projects, first and foremost. Therefore, EasyProjects has spent more than 30,000 hours on the project management aspect of product! Now, they have consolidated all that work and experience into one place where you can easily keep your projects under control.

56. Feng Office Project Management Software

Feng Office is a Web-based Software that integrates Project Management, Client Relationship Management,Billing, Financing, among other features that help you
efficiently run your Professional Services Business.

57. Teamwork Project Management Software

Teamwork is a proven, reliable and friendly web based project management solution for handling work in any field.

58. Visma Severa Project Management Software

Manage individual projects from sales to billing as well as your entire project portfolio. Visma Severa's PSA software fits into your existing workflow to provide the information you need with integrated CRM, project management, resourcing, time tracking and invoicing. Industry standard compatibility with third-party systems and customization services are available.

59. Projecturf Project Management Software

Projecturf is used by thousands of businesses, freelancers, and departments within large companies worldwide to manage projects, collaborate with people, and complete tasks. Getting things done has never been easier.

60. TeamLab Project Management Software

TeamLab is a universal cloud office. It enables you to manage documents, projects, team and customer relations in one place. In other words, you don't need to switch back and forth between multiple applications to perform different tasks. Here you obtain the single multi-featured system to organize every step of your work. Improving your productivity and optimizing efforts for success.

Best Online Project Management Softwares, Services, Solutions and Reviews

Best Online Project Management Softwares, Services, Solutions and Reviews

Project management software helps you to plan, organize, and manage resource pools and develop resource estimates. Depending on the sophistication of the software, Project management software can manage estimation and planning, scheduling, cost control and budget management, resource allocation, collaboration software, communication, decision-making, quality management and documentation or administration systems.

We will discuss the need of online project management tools and how to choose best project management services from hundreds of vendors in the market. We have also listed down some best online project management tools, their pros and cons for your guidance.

Why do you need online Project Management Software, Services and Solutions?

Some companies estimate an increase in production by as much as 30 percent after implementing a project management system. This means you could potentially accept 30 percent more projects and pull in more revenue using the same resources you have now. If your collection of spreadsheets and limited collaboration tools are becoming burdensome and inefficient, it is time to consider an online project management solution. Most top project management software works alongside your current business solutions, including Outlook, SAP, ERM, CRM, accounting software and Salesforce, either via direct integrations or advanced programming interfaces (APIs).

The best online project management services can help PMOs manage multiple projects, from the initial project request to the final invoicing. Nowadays, most of these services also provide mobile tools and modern social networking tools for time entry, expense tracking, status updates and secure team collaboration. The most capable solutions also provide free client interfaces so that your customers can submit requests and view projects' statuses. Global and remote teams can take advantage of always-available web access, and companies that need to control their own security can install the solution on-premise. Endless, customizable reporting options can help you easily prepare communications for your executives and clients.

How to choose best Project Management Software?

When choosing online project management products, always consider their basic project management tools as well as their resource management and collaboration tools. Also evaluate the online project management software companies in general, because adding a project management solution is often a long-term partnership and it is important that the company has a proven track record of supporting its product and its customers. Consider many companies and ask each company what new features they have added over the past year and what new features are in development. 

Also consider their relevance, based on the answers to the following questions: 

1. Have they created a useful product that caters to market and customer demand? 

2. Are they evolving with emergent technologies? 

3. Will they answer your phone when you really need them? 

4. Will they fly in to train your team in person? 

The best companies value customer retainment and strive to provide exceptional service.

Below are the criteria which you should use to evaluate online project management services:

1. Project Management Tools

Top online management solutions support traditional project-management ideologies and incorporate emergent technologies. For example, they should be able to easily handle traditional methodologies such as Waterfall, Agile, PRINCE2 and Chain methods and have the ability to create proprietary processes. You should also evaluate whether the project management tools can handle all basic functions such as request management, budgeting, issues, risk assessment and task management. The best products also provide extensive reporting options and easy ways to share those reports with stakeholders and other interested groups.

2. Resource Management

Always evaluate the tools available for project managers to manage and allocate resources, including team members, external resources, generic resources, documents and physical assets. In addition, this category includes the tools for tracking expenses and timesheets. Also look for advanced search tools for filtering resources so that project managers can find resources that are not only available, but are also at the experience level and price that fits projects' requirements.

3. Collaboration

Although this comparison focuses on project manager tools, also briefly look at how team members can interact and what tools there are for clients to monitor projects. Collaboration tools include features such as discussions or streams, social networking type tools, file sharing and announcements. Also look to see if the services offer free tools for non-paid users, such as report viewing and read-only accounts.

4. Ease of Use

High adoption rates are directly related to ease of use. If the software is difficult to use, it may not be used, which will directly affect your company's return on investment (ROI). Also, inscrutable project management software may not be used to its fullest capacity. We looked for convenience features such as project templates, customization options, import tools, automated functions and more to determine how easy and convenient each project manager is to use. The service should also provide ample training through webinars, documentation, videos and even one-on-one training to help your team learn how to use the service quickly.

5. Integration & Professional Services

Implementing a project management solution is not a casual, one-time purchase; it is a partnership. It is imperative to find a company that will provide the services you require, such as custom integrations, on-site training and direct support options. The best services create customized implementation plans, provide one-on-one management training and connect you with a dedicated account manager (for large contracts). Support should be provided throughout the life of your contract, and the support teams should be dedicated and motivated to help you resolve all issues to your satisfaction.

Best Online Project Management Softwares

There are lot of online project management softwares available in the market. We have listed some of them with their pros and cons.

1. Clarizen

Pros: Clarizen provides all project management and collaboration tools you need while requiring none of your IT resources. It works across platforms, languages and currencies. It comes with dedicated implementation assistance and integrates with popular business solutions.

Cons: This project management service does not offer on-premise or network versions for companies that require in-house control for compliance or security reasons.

2. Genius Project

Pros: Genius Project is flexible and adaptable to your business. It supports a variety of deployment options, generates more than 500 reports, has traditional and ad-hoc workflows, and incorporates modern enterprise-level social media tools. Genius Inside provides solutions for new product development, IT departments and professional services, as well as other types of project teams.

Cons: Although Genius Project accounts can be accessed using web-enabled devices, an Android-specific app is not yet available. Neither is 24-hour telephone support.

3. AtTask

Pros: AtTask greatly reduces project failure rates by accounting for all of the little things that influence project delays, such as side work, ad-hoc work, overburdened resources and other distractions. By providing complete visibility and advanced collaboration tools, AtTask helps managers see everything happening within a project so that they can make wiser, better-informed planning decisions.

Cons: This project management service does not include invoicing tools; however, you can create a custom integration with your accounting solution if you have the resources.

4. Project Insight

Pros: This online project management service provides full mobile access, supports traditional and proprietary methodologies, is Microsoft certified and includes free training. It is compatible with Sage accounting software as well as CRM and ERP solutions. Metafuse continually adds new functionalities to improve ease of use, mobility and visibility.

Cons: Project Insight accounts do not include free access accounts for shareholders; however, project requests can be managed using custom forms. In addition, you can turn generic member accounts off and on to accommodate externals or clients on specific projects.

5. ProjectManager

Pros: This online project management service continues to add in-demand features. It is flexible, works across geographically dispersed locations and supports mobile tools. ProjectManager also provides volumes of education and training for team members and managers. It can manage numerous projects, unlimited resources and budgeting.

Cons: ProjectManagment is not yet available for Android devices. However, since this is an online service, new features are available to all members as soon as they are released.

6. Daptiv PPM

Pros: Daptiv is one of the most integrated online project management solutions in the industry. It continues to add new compatibilities and now provides more than 150 direct integrations. In terms of project management, Daptiv PPM can manage any type of project, size of team and type of task. It provides complete visibility, highly customized reporting and interactive offline reports.

Cons: This project management service does not provide an on-premise option for those who want to control their own storage and security. The company has not yet developed social media type tools that most of the PM market now demands.

7. Tenrox

Pros: Tenrox provides all levels of professional services, power PM tools, unlimited integration options and a robust reporting module. It includes configurable timesheets, expense reporting and receipt tracking, and security and restriction tools.

Cons: This online project management solution relies on SharePoint's collaboration tools to facilitate team communications. However, SharePoint has recently added social media tools if you are looking for enterprise-level social networking tools.

8. Celoxis

Pros: Celoxis can manage more than 10,000 tasks per project eloquently. It includes powerful interactive Gantt charts, free client logins and email accounts, a choice of six languages and online training. It has excellent auto-scheduling and resource management tools.

Cons: For now, most custom integrations have to be created using the company's APIs. If you have the resources to create custom integrations for your business, you will appreciate the access to development tools Celoxis provides for both hosted and on-premise solutions.

9. LiquidPlanner

Pros: LiquidPlanner has an innovative priority-based scheduling engine that provides faster, more-accurate results. It supports numerous projects within one workspace, so you never overbook resources and you can get a bird's-eye view of your projects together. It is a great PM tool for modern teams that may be dispersed or work remotely.

Cons: This online project management service does not include many out-of-the-box integrations. If you need a solution that will integrate with CRM, ERP or accounting software, you will need to create those integrations using LiquidPlanner's APIs, or select a different PM service.

10. EPM Live

Pros: EPM Live directly integrates with Microsoft SharePoint and Office to create a complete project management solution that uses technologies you are already familiar with. Upland Software provides numerous free apps to add additional integrations, and provides generous professional support options.

Cons: This project management solution is intended to work with SharePoint; if this is not the collaboration tool you would like to use, you may want to select a different solution. In addition, the lowest price requires a 36-month contract.

Monday, December 16, 2013

How to run XPath Query in Delphi using MSXML DOM?

How to run XPath Query in Delphi using MSXML DOM?

This article illustrates a simple example on how to run XPath query to XML file in Delphi by using MSXML DOM. XPath Query is used to select a certain subset of the XML. XPath, the XML Path Language, is a query language for selecting nodes from an XML document. In addition, XPath may be used to compute values from the content of an XML document. XPath was defined by the World Wide Web Consortium. We will try to locate the value for <Link role="self"> in the following XML File using a XPath query. 

Sample XML file

<ResourceSet>
    <Resources>
        <Id>ID</Id>
        <Link role="self">http://theprofessionalspoint.blogspot.com/</Link>
        <Status>Pending</Status>            
    </Resources>
</ResourceSet>

Following is a simple Delphi function to located the value in the node "Link" under attribute "role".

function TForm1.RunXPathQueryInDelphi(XMLFilename : string): string;
var
  iNode : IDOMNode;
  Sel: IDOMNodeSelect;
begin
  try
    XMLDoc.Active := False;
    XMLDoc.FileName := XMLFilename;
    XMLDoc.Active := True;

    Sel := XMLDoc.DOMDocument as IDomNodeSelect;

    Result := '';
    iNode := Sel.selectNode('//Link[@role = "self"]');  //XPath Query
    if Assigned(iNode) then
      if (not VarisNull(iNode.NodeValue)) then
        Result := iNode.NodeValue;

    XMLDoc.Active := False;

  Except on E: Exception do
    begin
      MessageDlg(E.ClassName + ': ' + E.Message, mtError, [mbOK], 0);
      LogEvent(E.Message);
    end;
  end;
end;

Dataset EnableControls and DisableControls Methods in Delphi

Dataset EnableControls and DisableControls Methods in Delphi

EnableControls re-enables data display in data-aware controls associated with the dataset. Call EnableControls to permit data display in data-aware controls after a prior call to DisableControls. EnableControls decrements the disabled count variable for the dataset if it is not already zero. If the disable count variable is zero, EnableControls updates the current state of the dataset, if necessary, and then tells associated controls to re-enable display. 

Usually DisableControls is called within the context of a try...finally block that re-enables the controls even if an exception occurs.

Simple Delphi Example to show the usage of EnableControls and DisableControls

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  ListBox1.Clear;
  ListBox1.Items[0]:= 'Destination Airports:';
  with Flights do
  begin
    DisableControls;
    try
      First;
      i:= 1;
      ListBox1.Items[0]:= 'Destination Airports:';
      while not Eof do
      begin
        ListBox1.Items[i]:= Fields[2].Value;;
        i:= i + 1;
        Next;
      end;
    finally
      EnableControls;
    end;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  Flights:= TTable.Create(Form1);
  with Flights do
  begin
    TableName := 'Flights';
    DatabaseName := 'databasepath';
  end;
  DS2.DataSet:= Flights;
  DBGrid2.DataSource.DataSet:= Flights;
  Flights.Active:= True;
end;

Use BeginUpdate and EndUpdate to increase performance of Delphi Visual / Design Components

Use BeginUpdate and EndUpdate to increase performance of Delphi Visual / Design Components

If you are using Delphi visual / design components like a ListBox, Memo, TreeList, ListView, DataView etc. and you add or modify a lot of items (lines, nodes etc.), the component's performance becomes very slow. This is due to the fact that after each change, it is redrawn on the screen.

Thus, modifying 10000 items of a ListBox causes 10000 redraws, and that takes from several seconds to several minutes, depending on the computer's speed and the complexity of the process. Imagine how slow it can become if the process involves inserting, deleting, modifying and swapping many thousands of items. But you can speed up things enormously with the following tip:

Call BeginUpdate before making the changes to the items. When all changes are complete, call EndUpdate to show the changes on screen. BeginUpdate and EndUpdate prevent excessive redraws and speed up processing time when items are added, deleted, or inserted.

Using BeginUpdate and EndUpdate is an implementation of the lock and unlock pattern in Delphi. It allows you to you temporarily lock an aspect of the class, avoiding unneeded notifications.

Here's a simple source code example for using this technique with a ListBox:

ListBox1.Items.BeginUpdate;

for i := 1 to 10000 do
    ListBox1.Items.Add('abcd');

ListBox1.Items.EndUpdate;

To give you an idea of the improvement, we timed the code above (your PC may be faster or slower):

without the BeginUpdate/EndUpdate lines: 4.3 seconds...
with BeginUpdate/EndUpdate: 0.1 seconds, that's 43 times faster!

Here's a source code example for using this technique with a Memo:

Memo1.Lines.BeginUpdate;

for i := 1 to 5000 do
    Memo1.Lines.Add('abcd');

Memo1.Lines.EndUpdate;

without BeginUpdate/EndUpdate: 25 seconds...
with BeginUpdate/EndUpdate: 0.6 seconds!

Example with Panels

The following example adds a panel to the status bar control when the user clicks the button and adds a caption to the panel. The code uses BeginUpdate and EndUpdate to prevent repaints until the operation is complete. A try...finally block ensures that EndUpdate is called even when an exception occurs.

procedure TForm1.Button1Click(Sender: TObject);
var
  PanelIndex : Integer;
begin
  with StatusBar1 do
  begin
    Panels.BeginUpdate;
    PanelIndex := StatusBar1.Panels.Count - 1;
    try
      Panels.Add;
      Inc(PanelIndex);
      Panels.Items[PanelIndex].Text := 
        'Panel' + IntToStr(PanelIndex);
    finally
      Panels.EndUpdate;
    end;
  end;
end;

Locking and Unlocking mechanism in Delphi

Locking and Unlocking mechanism in Delphi

This article provides a mechanism to temporarily lock and unlock some aspects of a class. We will discuss locking and unlocking patterns in Delphi with a simple example.

Often you’ll find that a object dispatches notifications as a result of changing it’s internal state. Clients will handle these notifications to synchronise with the object. If multiple changes are to be applied at once, this will result in multiple notifications and subsequent synchronisations. The lock pattern let’s you temporarily lock an aspect of the class, avoiding unneeded notifications. Locking can be applied nested.

Consider for example a TBag class which implements collection like behaviour. TBag dispatches an OnChange event each time something changes. If we wanted to add multiple objects to a bag, this would result in multiple change notifications. A GUI control wiring the OnChange event would have to be repainted each time, resulting in a poor performance. The lock pattern enables locking the bag before adding the objects. When the objects are added, the bag is unlocked again, which will result in a single dispatch of OnChange. The advantage of using a lock pattern rather than setting a Boolean flag, for example FUpdating, is that calls to Lock and Unlock can be nested.

Implementation

The implementation for the lock pattern applied to a class TBag is: (only pattern related code is shown)

type 
  TBag = class (TObject) 
  private 
    FLockCnt: Integer; 
  protected 
    function Locked: Boolean; 
    procedure SetLocking(Updating: Boolean); 
  public 
    procedure Lock; 
    procedure UnLock; 
  end;

implementation

procedure TBag.Lock; 
begin 
  Inc(FLockCnt); 
  if FLockCnt = 1 then SetLocking(False); 
end;

function TBag.Locked: Boolean; 
begin 
  Result := (FLockCnt <> 0); 
end;

procedure TBag.SetLocking(Updating: Boolean); 
begin 
end;

procedure TBag.UnLock; 
begin 
  Dec(FLockCnt); 
  if FLockCnt = 0 then SetLocking(True); 
end;

In this implementation notice: The field FLockCnt which stores the state of the locking mechanism. FLockCnt = 0 represents an unlocked state. Any other value implicates a locked state. This allows nested calls to Lock and Unlock which are the only methods changing this field. The methods Lock and Unlock which provide the locking interface. Each time a call to one of these methods causes a locked state change, method SetLocking is called. Method SetLocking has one parameter Updating. If Updating is True, the bag has become unlocked due to a call to Unlock. If Updating is False, the bag has become locked due to a call to Lock. You would typically insert some code in this method which deals with the lock state change. Method Locked returns the state of the locking mechanism.

Notice how calls to Lock and Unlock always must be paired to avoid the Bag to remain locked forever. Therefore it is wise to use a try..finally block to make sure pairs are always matched, as is demonstrated in the following example.

A typical use of the lock mechanism would be:

procedure TBag.Add(Item: Pointer); 
begin 
  { Add Item to internal structure } 
  Change; 
end

procedure TBag.AddItems(Items: TList); 
begin 
  Lock; 
  { Add multiple items } 
  try 
    for I := 0 to Items.Count - 1 do 
      Add(Items[I]); 
  finally 
    { use try..finally to make sure Unlock is called } 
    Unlock; 
  end; 
end;

procedure TBag.Change; 
begin 
  if not Locked then 
    if Assigned(FOnChange) then FOnChange(Self); 
end;

procedure TBag.SetLocking(Updating: Boolean); 
begin 
  if Updating then { Bag has become unlocked } 
    Change; 
end;

Since this mechanism can be used in many situations, the lock patterns let’s you edit the patterns field and method names. This pattern is one of the few patterns that can be applied to the same class more than once and still be meaningful. You would of course need different names, such as LockUpdate, LockScreenUpdate or BeginUpdate.