Category Archives: Xailer 5

What’s New in Xailer 5 (IV)

Dear Xailer users,

Fourth article of the improvements that will include Xailer 5, and is is very important and almost indispensable if you want to make applications for tablets with Windows 10 as OS. It is a control that already exists in Xailer from its beginning and is based on a native control of Windows but we have always wanted to get rid of it due to its limitations and is the control ‘TTabControl‘ and its inherited ‘TFolder ‘.

The new name control ‘TTabs’ includes all the functionality of the native control, but also includes the following improvements:

  • Any orientation (with correct visualization)
  • Definible Height and width of tabs
  • Ghost tab so the user can include more tabs
  • Possibility to move the tabs by the end user
  • Customizable tab borders
  • Absolute absence of any type of flicker

TTabs 1
The new TTabs control also allows you to trap the paint events in a simple way and thus completely change the appearance of the control. With this simple code:

METHOD Tabs1DrawTab( oSender, nIndex, cText, nImage, nClrText, nClrPane, nState, hDC, aRect ) CLASS TForm1

LOCAL hBrush
LOCAL aColors := {0x737373, 0x4986E7, 0x16A765, 0xE9B330, 0xA479E2}

 IF (nState == tsHOT .OR. nState == tsSELECTED) .AND. nIndex > 0
  nImage += 5
  hBrush := CreateSolidBrush( aColors[ nIndex ] )
  FillRect( hDC, { aRect[ rtLEFT ], aRect[ rtTOP ], aRect[ rtRIGHT ], aRect[ rtTOP ] + 2 }, hBrush )
  DeleteObject( hBrush )
  aRect[ rtTOP ] += 2


We get this effect: (Maybe I’ll remind you of something ;-))
TTabs 2
For Xailer 5 I have developed a total of ten new controls thinking especially in the new visual aspect that imposes Windows 10 and the need to have controls optimized for use in tablets. We understand that they are advanced usage controls and for that reason will only be present in the Enterprise version of Xailer. We encourage you to make the jump to Enterprise as soon as possible. The advantages are many, but certainly the most important, is to be able to use database servers directly without any type of connector such as ADO or ODBC.

Best regards,

Ignacio Ortiz de Zúñiga
Miembro del equipo de Xailer

What’s New in Xailer 5 (III)

Hello everyone,

Today I comment on another IDE improvement that I understand is quite useful and consists of the possibility of performing incremental searches on the search results offered by the IDE when a massive search is performed. In the new version of Xailer when you perform a massive search you can see a new icon on the messages window:

Search on search

Search on search

When we click this new button we can perform an incremental search on the search results obtained. The search system is incremental and begins to act as soon as we are more than half a second without introducing any character. I hope you like it.
Search on search results

Search on search results

There is less left for the Xailer 5 release!

The following articles will be much more important and interesting; We will address the ten new controls that includes Xailer 5 and the new local version control tool that is also fully compatible with the use of external version control systems such as SVN or CVS.

Best regards,

What’s New in Xailer 5 (II)

Dear Xailer user,

Today I want to talk about the control TListView. That great unknown 😉 This control is typical of the Windows API and basically is a Browse that allows you to display the information in the same way as the file explorer in Windows itself. It has the following types of view: Icon, small Icon, List, Tile and Details.

The Browse (TBrowse and its inherited) that incorporates Xailer looks like a TListView with ‘Details’ view. When we want to display information that way, with grid style, Xailer browse is infinitely more powerful than TListView. However, there are times when the TListView may be a better candidate for the data to display. Obviously when you prefer a view different from ‘Details’, but also can be a great candidate when you need to group the different elements of the browse or display a ‘checkbox’ in each one.

TListview with groups

TListview with groups

Until Xailer 5 the control was quite limited since you could not customize almost anything, but now it has completely improved its functionality allowing you to do things like this:

TListView OnDrawCell

TListView OnDrawCell

And this has been all the code needed to get it:

METHOD ListView1DrawCell( oSender, oItem, nColumn, nClrText, nClrPane, hDC, aRect ) CLASS TForm1
   LOCAL nWidth

   IF nColumn == 0
      RETURN 0 // Notify columns one by one
   ELSEIF nColumn == 1
      SelectObject( hDC, ::oFontBold:Handle )
     SelectObject( hDC, ::oFont:Handle )
     IF nColumn == 5
        InflateRect( aRect, -1, -1 )
        nWidth := Int( ( aRect[ 3 ] - aRect[ 1 ] ) * oItem:aData[ 4 ] / ::nMaxSize )
        aRect[ 3 ] := aRect[ 1 ] + nWidth
        FillRect( hDC, aRect, ::oBrushGauge:Handle )
       RETURN 2 // Do not paint anything

As you see all your get overloading your OnDrawCell event that is very easy to do. I hope you like this important improvement that I made to the control. I encourage you to start using the TListView control as soon as possible.

Best regards,

What’s New in Xailer 5 (I)

Dear Xailer users,

I would like in a series of articles to gradually count the improvements that I personally have incorporated into the future Xailer 5. From the smallest to the most important and without any kind of pre-established order.

On this first occasion I will comment on the improvements built into the filter bar of the browses. I’m sure more than one is going to sigh a finally ! 😉 These are:

  • Access to the filter bar simply by pressing the cursor up key from the first record of the Browse.
  • Ability to navigate between different filter fields with the TAB and May + TAB keys
  • Ability to force immediate filtering and return focus to browse by pressing cursor key down from any filter bar edit field

When we use the filter bar of the TDbBrowse in conjunction with a TMemDataset object, there are important improvements worth mentioning:

  • Possibility of establishing a range using the sequence ‘- (2 dashes)’. For example: 2–8, which would mean values between 2 and 8 inclusive.
  • Using logical operators: ‘&&’ for Y and ‘||’ For O. For example: 1 || 3, which would mean values 1 or 3

I hope you liked it. Be aware of future articles. Thank you for your attention.

Best regards,