Category Archives: News

Xailer for Harbour (II)

The DLL support for Harbour is also ready, and in the same way we are used to, and not in the way Harbour imposes.

Until now, the DLLs made with Xailer and xHarbour were sustained on the VM and RTL of the executable, so the DLL was extremely small (no VM and RTL inside), and they perfectly integrate with our programs. A good example of this are the IDE and xEdit plugins and third party components that can be used inside the IDE.

Unfortunately, Harbour does not let you do it that way. Harbour only supports two types of pCode DLLs: with the complete VM & RTL inside of it, or depending on a external Harbour.dll.

On the first case, the DLL will be too big, since it includes all the Harbour libraries, besides all the problems due the fact that the code is running on a second VM, so in a different context of the main executable. This kind of DLLs are normally designed to be used with executables done with other programming languages or programming tools. And for that reason is the need to include everything on them so they can run by their self without any collaboration from the executable.

On the second case, although they are designed to be executed by a Harbour program, they have the big inconvenience that we must distribute Harbour.dll, that normally is larger than what we really need (All Harbour is inside of it), besides the fact that we must also create our executable using that Harbour.dll (on contrary we would use two VM at the same time). On our case is even worst, because we should also include a Xailer.dll with the complete Xailer RTL inside, so its accessible by any DLL and the main executable, that of course, should also be distributed with your programs.

Well, to be honest, Harbour also supports PCode DDLs that use the VM inside the executable, but only if the DLL contains PCode and doing some little hacks. But, in the moment the DLL includes any Harbour API function, they become completely useless. And I’m afraid this happens almost every time. As soon you create a C routine you are dead 🙁 since you surely will use hb_par*() or hb_ret*() functions. So, this option is not good for us, since in the practice it offers the same and with same limitations than .HRB files. For example, it will not serve to create IDE third party controls, since normally there is some (or a lot) of C code.

Fortunately, in Xailer, we have achieve what we really need: Small DLLs, sustained on the executable VM and RTL, what we already had running for years in xHarbour and exactly with the same facility: just need to check the ‘DLL’ option on the project properties and that’s all.

Now, the next step is the debugger, besides of course, of the complete code debugging of Xailer for Harbour libraries. As you can see, there is a little time to get everything done 😉

Xailer for Harbour (I)

XAILER FOR HARBOUR IS READY!

Well, to be honest, almost ready. A few details besides the complete debug are missing. But the 90% of Xailer is working nicely. Both the Xailer kernel and the OOP extensions have been ported with complete success, the complete Xailer run-time library, with all its controls, data source, and so on. The only things missing are the DLL creation support and the debugger, but we are already working on that. Also the IDE has been modified to be able to compile any project with xHarbour or Harbour (3.0).

For now all is done with BCC++. We have some code passed to MinGW, but on this first stage we want to make it work with BCC++, and when all is tested and we are sure everything works as expected, then we will make the jump to MinGW.

All our tests we have done so far are satisfactory, and we have check that the programs run a little bit quicker, consume less memory and the executable is a little bit smaller. Is not easy to give any statics, since it depends on how you do the test; some times you will gain more speed and less in others. However on a Ad-hoc test, we have achieved a speed increment of 75% against tje actual Xailer with xHarbour, which is not bad. This does not mean that your programs will run a 75% faster, since on any program there are many factors that can affect the performance, and only the operations that affect the OOP engine will be 75% faster. On the other hand and in general, Harbour is faster than xHarbour, so the improvement is guarantee.

On the jump to Harbour, we have try to minimize the possible differences between both compilers, so they do not affect to much on your actual Xailer programs. But I’m afraid some problems have been impossible to overcome, and every programmer must check all its programs to adapt them. In any case the changes are few and easy to fix. Here (in Spanish) you have a list will all the differences found from ourselves on the migration process. And here it is the official difference between both compilers: xhb-diff.txt.

Finally, although we have said on some occasions that Xailer 3.0 will work only with Harbour & MinGW, we are considering the possibility to publish a new version of Xailer 2.7 that will support xHarbour & Harbour through BCC++. The main objective is to debug Xailer & Harbour ASAP and your help can be great for that. If, in addition it serves to users that would like to recompile their programs taking the advantage of the best Harbour performance. If you want, you can use the comments to give us your opinion.

New Xailer 2.6 upgrade

New Xailer version 2.6.1 available!!

New Xailer version that includes important corrections and minor enhancements.

For this time the ‘Auto Update’ system is not available due the important changes: New IDE and new help files.

Best regards,
[Xailer team]

New Xailer version 2.6

New Xailer version available!

A new Xailer 2.6 version is available. This new version incorporates major improvements and fixes over the old version 2.5.

First of all, tell you that the IDE has completely changed its appearance, have completely changed all the images and icons and incorporated many new ones. We hope you enjoy it.

About the IDE, the system of plugins is fully operational. We recommend to use the plugins we’ve included as examples (the source of these have been included in samples) as ‘Quickfind’, ‘MoreEdit’ and ‘MiniBrowse’. And we encourage that you make your own plugins and if you want, you may share it with the rest of the community by uploading them to our website Xailer downloads at http://www.xailer.com/download/

Another improvement in the IDE that many of you will surely applause is the possibility to request confirmation when you try to delete a control on a form by pressing the Delete key.

In the general library there have been major improvements and new controls, which I would like to highlight the following:

  • New TCefBrowser control based on Chromium but completely native, to integrate a Web browser on your own application. (Only available in Enterpise)
  • New TLabelEx control with extended HTML functionality
  • Native support of PNG and TIFF images through GDI + so it is no longer necessary to include FreeImage.dll
  • Support for transparent images (PNG only) on TControl oBkgnd property
  • More options to set the background image position with the properties nBkgndMarginX, nBkgndMarginY and nBkgndMode
  • Support of gradients in a lot of controls and forms with the new properties nClrPaneEnd and nGradient
  • New property TPrinter: nPdfPrinter that allows to set the existence of a PDF virtual printer. When this property is greater than zero, in the print preview window there will be a new PDF export button. At the start of your applications Xailer will look for some printer containing the characters ‘PDF’ and it finds it then will set the property nPdfPrinter

Below we include detailed the Whastnew.htm file:
Continue reading

New Xailer 2.5 upgrade

New Xailer version 2.5.1 available!!

New Xailer version that includes important corrections and minor enhancements:

  • IDE:
    • Few corrections in Intellisense
    • Improvements on Plugins functionality
    • When copying controls, its events become duplicated on the XFM file
    • Error when deleting a ExplorerGroup
    • Persistence bug on controls font property
    • Error when trying to copy controls where its property aItems were not objects (f.ex. listbox)
    • SQLite Editor: New functionality to execute BATCH processes
  • General:
    • Due a important changes on Plugin systems, all of them must be recompiled
  • Controls
    • TOcx: Did not accpet accented characters
    • TControl: When clicking outside the menu popup the default menu action was triggered. Use new parameter lCanceled to gain the same functionality
    • TControl: New by reference parameter lCanceled on ShowPopupMenu(), that is set to .T. if the user cancels the popup menu
    • TControl: Use form oFont if its oFont propery is NIL and its property lParentFont is .F.
  • Samples
    • samplesMetaControlsOffice2007Buttons: Metacontrol sample that creates a Office2007 style button from a TGlassBtn control
    • samplesPluginsMoreOptions: New options and enhancements. Now it uses a dialog instead of a menu
    • samplesPluginsHelloWord: Basic plugin to use as a template for your own plugins
  • Documentation
    • Updated to latest changes

    For this time the ‘Auto Update’ system is not available due the important changes: New IDE, new help files and new samples.

    Best regards,
    [Xailer team]

  • Xailer 2.5

    Dear Xailer users,

    We are proud to announce Xailer 2.5 with a lot of new features, specially on the IDE:

    • IDE:
      • New: New copy/paste system fixes bugs on controls with embeded aItems
      • New: Intellisense
      • New: Templates (File->New->From template and File->Save as template)
      • New: Metacontrols
      • New: Plugins and plugin manager in Components->Plugins
      • New start window when there is no project open
      • Updated scintilla to 2.1.2
      • Suppor for hotspots (URLs) in code comments (Tools->Editor options->Look)
      • New button to restore default colors in Tools->Editor options->Syntax
      • Bug fixed on saving TOptionItem:Cargo property
      • Bug fixed on saving oExplorerGroup:Cargo property
      • Rare error when closing projects
      • Bug when setting font color for more than one control at the same time
      • Search TODO/TOFIX in multiline comments
      • Completed translations for all supported languages
      • New option “Set as main module” in the Project Manager
      • Rewritten float values editor for the Object Inspector
      • Show tooltip with file information for each tab in the code editor
      • New option “Close all tabs” in the Output window context menu
      • Hit F2 jumps to cText property in Object Inspector
      • Hit F2 in Object Inspector opens extended edit if allowed
      • Show number of matches and files in “Find in files”
      • SQLite editor: show the DDL statements executed on table changes
      • Show number of elements on the tab tooltip on ToDo, Breakpoints and Bookmarks views panes
      • Bug when doing double click in a C header file
      • Select file on Project Manager on double-click in the tab of the code editor
      • Stop compilation on closing the output window
      • Don’t start a new compile process when there it is already compiling
      • Show calltips aligned to the function
      • Remember Output window height when closing the IDE
      • ESC closes the Output window from the code editor
      • Bug selecting code between braces with Ctrl+E
      • Option to configure user folders in Tools->Options->Folders->User folders
      • Customize Intellisense font in Tools->Editor options->Calltips and Intellisense
      • Enter key jumps to code editor from ToDo, Breakpoints and Bookmarks views panes
    • General
      • Colors.ch: Color definition of type CLR_name are obsolete and will be deleted on next Xailer version
      • Controls.ch: Removed #translate ?
    • DataControls
      • TDbfDataset: Bug in lReuseDel
      • TDbfDataset: Enhanced error information in method OrdSetFocus()
      • TMySQL: Support for DateTime and TimeStamp

    • Forms
      • New event OnCopyData()

    • Controls
      • TGlassBtn: New button control using GDI+
      • TShiftPanel: New TPanel alike control
      • TOcx: Fixes in focus and other minor fixes
      • TRichEdit: Bug in GetLine() method
      • TRichEdit: Fixed oFont creation in Create() method
      • TRichEdit: Load conversion filter from Office 2010
      • TRichedit: Find conversion filters in the application folder
      • TMessagebox: Fixed return value in Run()
      • TMessagebox: Allow to show remaining time in the title
      • TStatusPanel: Adjust embebed controls positioning
      • TEditBtn: New styles ebARROW and ebPROMPT
      • TEditBtn: New property cPrompt
      • TBtnBmp: New style fsRAISED
      • TColorComboBox: New property lAddColor
      • TDBBrowse: Double check to avoid posible error in form destruction
      • TAdoDataSource: Bug in Execute() method when returning a recordset
      • TBrwCol: Wrong positioning of context menu in oHeader
      • TListViewGroup: Fix on setting cHeader, cFooter, nHeaderAlign and nFooterAlign
      • TListViewColumn: Fix on setting nAligment
      • TListViewColumn: Display image when changing nAlignment

    • Other classes
      • TBlatMail: Bug in lReceipt
      • TBlatMail: New properties: lUndisclosedRecipients, nTimeOut, nTries and nAuth
      • TMailSlotServer and TMailSlotClient: New clases for data exchange between applications
      • TCanvas: New methods AngeArc(), Arc(), ArcTo(), Chord() and Pie()
      • TCanvas: New method GetPos()
      • TMenu: New method Refresh()
      • TComboBox: Fix to not trim spaces when adding items
      • TCalculator: New parameter to paste result in active control
      • TRecentList: Refresh the list with lAutoSave and lAutoRemove
      • TFileOperationDlg: New properties lFilesOnly and lNoCopySecurityAttrib
    • Functions
      • New functions AngleArc(), Arc(), ArcTo(), Chord() and Pie()
      • New function SendWMCopyData()
      • New function SHGetFolder()
      • Function MakeNestedDir() return an error code compatible with DirMake()
      • Function GetFileVersionInfo() to extract version information from EXEs and DLLs
      • Full support for the GDI+ api (609 functions)
    • Samples
      • samplesMetaControlsPanelOkCancel: Metacontrol which builds a panel with two custom buttons
      • samplesGlassBtn: Sample for the new TGlassBtn control
      • samplesShiftPanel: Sample for the new TShiftPanel control
      • samplesPluginsMoreEdit: Plugin with two extensions:
        • MoreEdit: adds a menuitem “MoreEdit” to the Edit menu with options SetCaseUpper/Lower/Capitalize, mimicking the options in Edit->Special. Adds options to invert upper and lower case, sort lines and renumber numerics lists.
        • QuickFind: adds an option to the Search menu to do incremental searchs and mark text as in Firefox
      • samplesPluginsMoreOptions: Adds a new option “Editor extra options” to the Tools menu to customize some options that are not accesible from the configuration dialogs.
      • samplesMailSlotServer and samplesMailSlotClient: Using Inter Process Communications (IPC) between aplications using MailSlots
      • samplesWMCopyDataServer and samplesWMCopyDataClient: Using Inter Process Communications (IPC) between aplications using SendWmCopyData() and TForm:OnCopyData event
      • samplesGdiPlusExif: Show image information from EXIF tags
      • samplesGdiPlusConvert: Converts between diferent image formats
    • Documentation
      • Updated to latest changes

       

    We will like to remember, as it happened with Xailer 2.4 is that version 2.5 requires a a new registration because there is a change on the activation key. This register process can only be done on active machines with active subscriptions.

    You can check until which version of Xailer you can upgrade from the IDE menu option Help->Registry information.

    To simplify the process for all those people that can not reach our registry web system, we will send by Email the new registry values for all the active machines on active subscriptions.

    Do not try to upgrade to this new version until you are completely sure you are allowed to do it.

    Best regards,

    [Xailer team]

    Intellisense in Xailer

    Dear Xailer user,

    As you can surely imagine due this post title, the next version of Xailer (2.5) will include Intellisense (code completion) support like other well known development environments.

    Xailer will probably become the first development environment for [x]Harbour that supports Intellisense and not only on functions, but also on classes and class members at any hierarchy level, and on the Xailer RTL but also on all the projects and subprojects the user may have open.
    Continue reading

    Xailer 2.4

    Dear Xailer users,

    We are proud to announce Xailer 2.4 with a lot of new features, specially on the IDE, for example:

    • Use of tabs on the message area that allows to keep the latest search operations or compile without loosing any information on the message area
    • Disk global search
    • Extended the ‘Search definition under cursor’ system to the complete project
    • New TODO & TOFIX management system
    • Automatic case matching of variables, parameters and class members

    And some others important features that you may find at Whatsnew.htm.

    We have already very advanced the support of ‘Intellisense’ for the complete Xailer RTL and we expect that it will be ready for next version 2.5. The other three main areas we are working right now are:

    • Better Copy & Paste support on form editor
    • Undo operations on the form editor
    • Native support for Firebird on Xailer Enterprise

    We will like to remember, as it happened with Xailer 2.3 is that version 2.4 requires a a new registration because there is a change on the activation key. This register process can only be done on active machines with active subscriptions.

    You can check until which version of Xailer you can upgrade from the IDE menu option Help->Registry information.

    To simplify the process for all those people that can not reach our registry web system, we will send by Email the new registry values for all the active machines on active subscriptions.

    Do not try to upgrade to this new version until you are completely sure you are allowed to do it.

    Best regards,

    [Xailer team]

    Case match

    This time Ignacio brings to us a great addition to the IDE which will be ready for the next release: the case matching.

    The animated GIF shows this feature: when typing nKey (declared as a formal method parameter) and nIndex (declared as a local variable) in lower case, the IDE itselfs updates the case of the variables, parameters and class members to make them match with its definition.

    CaseMatch

    Xailer 2.3 upgrade

    Dear Xailer user,

    A new minor update of Xailer 2.3 is ready through are Auto Update system.

    Unfortunately we forgot to include the the file with latest changes made on this minor revision, so I include them at the end of this message.

    Best regards,

    Enhancements on Xailer 2.3.2

    • IDE:
      • Error on Tools menu options when no project was active
      • Project tree view error when adding a subproject
      • Minor fixes on ‘Clean project’
      • Avoid blink due proyect tree reload
      • Better detection of old format proyect files
      • Background highlight of parentheses
      • When pasting from the clipboard, the text was inserted instead of replaced
      • Do not erase DLL file on option ‘Clean project’
      • Minor fixes on ‘Publish project’ option
      • On some circunstances the IDE lost its font
      • When saving a new renamed module, the editor did not reflect the changes
      • Bug on autocomplete with ‘::’ when no project was active
      • New Clipper console functions added to Intellisense (841 functions)
    • DataControls
      • MySql: Ping mechanism to be sure the connection is active
      • MySql: Bug on Day(), Month() and Year() with dates saved as empty values
    • Controls
      • TComboBox: Compatibility with WINE on linux
      • TRichEdit: New properties lProtected, lSmallCaps, nHighLight and methods HasText(), GetFirstVisibleLine(), GoBotom(), GoTop(), SetProtected() and SetSmallCaps()
      • TRichEdit: Menu popup memory released
      • TRichEdit: Modified FindText() so it returns .T. if something found and .F. if not
      • TOptionList: Support of events OnLButtonDown and OnClick on area without items
      • TBrwColumn: Control of multiline headers for the conextual menu

    • Other classes
      • TApplication: Change of datasources close state check point when the application ends

       

    [Xailer team]