TurboBird IBX lazarus / 16-Databases ---------------------------------------------------------------------- maurog · 2025-12-06 00:38 @Tonyw, I have migrated TurboBird (an older Firebird admin tool) from SQLDb to IBX. IBX is definitely the best framework for Firebird. Thanks to IBX, I can now access Firebird versions (server + databases) 2.5, 3, 4, 5, and 6 within a single instance of TurboBird without any problems. I would like to express my sincere appreciation for your excellent work on IBX. My question: May I integrate your example programs — such as Backup, Restore, etc. — as tools in TurboBird? They work excellently and are complete, which is why I would very much like to include them directly. Once again, thank you very much! Best regards, Maurog. ---------------------------------------------------------------------- Nicole · 2025-12-06 09:28 A long time ago I tested a lot of tools for Firebird. TurboBird was one of them. I found all of them messy or just too old. The best choice for me was FlameRobin. FlameRobin has the disadvantage, that the version are spread all around to platforms and it is really hard to fine, which is the most recent one. I grabbed one version and saved it to my software- treasury-bin for a rainy day. I am not sure, if I ever aill search for updates again. What about this Turbobird you are hosting compared with FlameRobin? Is it an old version or did you make a complete update? ---------------------------------------------------------------------- maurog · 2025-12-06 13:56 @Nicole You can find more information here: https://forum.lazarus.freepascal.org/index.php/topic,71389.0.html I haven’t uploaded the IBX version yet — I’d like to wait for Tony’s feedback first. However, the current version on GitHub already supports quite a bit more than the original TurboBird. Best regards, Maurog. ---------------------------------------------------------------------- maurog · 2025-12-07 01:56 QuoteMy question: May I integrate your example programs — such as Backup, Restore, etc. — as tools in TurboBird? They work excellently and are complete, which is why I would very much like to include them directly I’ve just realized that Tony’s examples are licensed under the GPL. Since TurboBird is released under the MIT license, a 1:1 integration is unfortunately not possible. ---------------------------------------------------------------------- rvk · 2025-12-07 06:10 Quote from: Nicole on December 06, 2025, 10:28:55 amFlameRobin has the disadvantage, that the version are spread all around to platforms and it is really hard to fine, which is the most recent one. I grabbed one version and saved it to my software-treasury-bin for a rainy day. I am not sure, if I ever aill search for updates again. FlameRobin hard to find??? It has its own home page and development page. http://www.flamerobin.org/ https://github.com/mariuz/flamerobin GitHub always has the latest releases. https://github.com/mariuz/flamerobin/releases Also see the blog on their main page for those latest version. https://flamerobin.blogspot.com/ If you have other versions, you don't have the original but a forked version from someone else (which I wouldn't recommend unless you have reasons for it). ---------------------------------------------------------------------- Zoran · 2025-12-07 21:40 Quote from: rvk on December 07, 2025, 07:10:47 amFlameRobin hard to find??? It has its own home page and development page. http://www.flamerobin.org/ But did you read these pages you linked to?  The home first (the home page is of course the first and the most important, right)? This is the "news" on the front home page: Quote New Flamerobin snapshot 0.9.7 is available with a few Firebird 4 fixes. 3 May 2023 New Flamerobin snapshot 0.9.7 is is available with a few Firebird 4 fixes. That is the main site, the front page, the home page, the page where you go first. Then, in there somewhere, persistent users might dig the link to the "blog"... Quote from: rvk on December 07, 2025, 07:10:47 amAlso see the blog on their main page for those latest version. https://flamerobin.blogspot.com/ There: QuoteMonday, April 28, 2025 Flamerobin 0.9.14 Snapshot released with a few fixes and features What a mess. ---------------------------------------------------------------------- rvk · 2025-12-07 21:44 Quote from: Zoran on December 07, 2025, 10:40:19 pmWhat a mess. The home page might be a mess but I always go to the GitHub page anyway because that's always the latest from that developer (often with source). I never use a "home page" that might be outdated. But to say it's hard to find the latest release of FlameRobin... ---------------------------------------------------------------------- Zoran · 2025-12-07 22:06 Quote from: rvk on December 07, 2025, 10:44:55 pmThe home page might be a mess but I always go to the GitHub page anyway because that's always the latest from that developer (often with source). I never use a "home page" that might be outdated. What impression about the project which present itself with this front page do new users get? I wonder what is the idea of keeping some blog and leave the main page outdated. The front page represents the project, not blog, not github. Quote from: rvk on December 07, 2025, 10:44:55 pmBut to say it's hard to find the latest release of FlameRobin...  For someone not interested in looking into source code repositories (an ordinary user), it is. Please read what you actually said -- it is not hard for you -- as you already know that you shouldn't use a "home page" that might be outdated, so you go to the source code repository instead. And that's what you call not hard to find. ---------------------------------------------------------------------- rvk · 2025-12-07 22:07 Quote from: Zoran on December 07, 2025, 11:06:15 pmAnd that's what you call not hard to find. Not for a developer. But ok,maybe that's just my opinion. ---------------------------------------------------------------------- maurog · 2025-12-08 03:41 Here is Tony's response: QuoteYes, of course you can make use of the example code. I don't see any problem with you using the example programs and combining them with Turbobird under the MIT licence. You can have my permission to use the example program code under the MIT licence. Thank you, Tony! I will include Tony’s cleaned-up and improved code in the next version of TurboBird. Regarding FlameRobin: I just had a look at it. If I had known earlier that such a practical tool existed for Firebird, I probably wouldn't have started creating TurboBird at all. (It's very well thought out, practical, and robust.) Best regards, Maurog ---------------------------------------------------------------------- maurog · 2025-12-20 04:06 Hello, does anyone have experience using RxDBGrid with TRxSortIBX (IBX) in Lazarus? Is there any working example available for (multi-column) sorting via title click? Regards, Maurog ---------------------------------------------------------------------- Nicole · 2025-12-20 20:57 Not sure, about this x-components. For sorting I use DynamicGrid, written by Tony. I use it with IBX. They allow the sorting by column title. The modification of the query at runtime is slightly different. Details are all in this forum. And Tony is around to help us out. btw: Thank you so much to all authors for IBX as well as the components. ---------------------------------------------------------------------- maurog · 2025-12-21 18:53 @Nicole QuoteThank you so much to all authors for IBX as well as the components. I can only agree with you on that. IBX is simply excellent. Not for fun, I migrated TurboBird completely (about 25,000 lines) to IBX. As a sign of appreciation and respect, I also dedicated half of the TurboBird About dialog to MWA Software and Tony (my name does not appear in the dialog). This way, every TurboBird user will get to watch Tony at work at least once 🙂 See screenshot. Best regards, Mauro G. ---------------------------------------------------------------------- maurog · 2025-12-25 11:17 Hello, I have uploaded TurboBird version 1.2.1.1263 (IBX). As I am currently experiencing issues with my GitHub account, the release binaries are temporarily hosted on my homepage. The source code and changelogs can be downloaded as usual from GitHub: https://github.com/mdadali/TurboBird Linux release (x86_64, GTK2): https://www.hackcad.com/maindownloads/TurboBird_x86_64-linux64-gtk2- release-v1.2.1.1263.zip Windows release (x86_64): https://www.hackcad.com/maindownloads/TurboBird_x86_64-win64-win- release-v1.2.1.1263.exe.zip Detailed information and discussion: https://www.firebirdforum.de/viewtopic.php?t=387&start=80 Best regards, Maurog. ---------------------------------------------------------------------- Zoran · 2025-12-25 17:08 It is strange that you haven't tagged this release on github, why? Currently, the latest tag there is from september: https://github.com/mdadali/TurboBird/tags The latest release also from september: https://github.com/mdadali/TurboBird/releases ---------------------------------------------------------------------- maurog · 2025-12-25 22:47 So far, I’ve been hosting everything on GitHub: the source code via Linux shell and the releases through the browser. At the moment, there’s an issue with accessing GitHub via the Git GUI, and I don’t know how to upload release binaries through the shell. That’s why I committed the source code as usual, but temporarily hosted the release binaries on my own homepage. GitHub support will get back to me in 2–3 business days. Once I have normal access again, I’ll upload the release binaries to GitHub as well. ---------------------------------------------------------------------- maurog · 2025-12-26 04:19 Hello everyone, I discovered and fixed an important bug in the DB registry. New versions of the binaries and source code have already been uploaded. The links remain the same. For those who have already downloaded the previous version, I apologize for the inconvenience. Please use the new version. Best regards, Maurog. ---------------------------------------------------------------------- tonyw · 2025-12-26 15:08 Quote from: maurog on December 21, 2025, 07:53:36 pm@Nicole QuoteThank you so much to all authors for IBX as well as the components. I can only agree with you on that. IBX is simply excellent. Not for fun, I migrated TurboBird completely (about 25,000 lines) to IBX. As a sign of appreciation and respect, I also dedicated half of the TurboBird About dialog to MWA Software and Tony (my name does not appear in the dialog). This way, every TurboBird user will get to watch Tony at work at least once 🙂 See screenshot. Best regards, Mauro G. Mauro, Thank you for showing your appreciation for my work on IBX in the about box for Turbobird. It is much appreciated. Adding "stars" on github is also appreciated. Given that you have also chosen to honour MWA Software, I thought, for those interested, it might be a useful point to give some background on the name "MWA Software" and IBX for Lazarus, as well as what I am currently working on. The acronym "MWA" goes back to 1992 when I registered the company "Mccallum Whyman Associates Ltd (MWA). Before then I had been a Principal Consultant with a large software company working mostly in the Defence and Civil Aviation sectors; times weren't good and I was unsure whether the company I was working for would survive (it got taken over later that year). I had been supporting UK NATS working on a new idea - replacing air traffic control air to ground voice communications with datalink comms - and negotiated a new contract for myself with the the Brussels based Eurocontrol Agency. I would still be working on the same international project (co-ordinated by ICAO) but with a funding agency that neatly side-stepped a non-compete clause. I needed MWA as the anchor for the contract. It was meant to be a five year stint but ended up dominating the rest of my career until my retirement earlier this year. At least I can point to the fact that most modern airliners now use the Controller to Pilot Datalink Communications (CPDLC) system that I played a role in creating. I still get asked "what happened to Mccallum" (I am the Whyman in MWA). The answer was and still is that "I married her". MWA Software came out of this (as the name suggests). I first got into this business through a love of programming and, given that even successful consultancy has some downtime, I filled this in with a bit of programming work. One of these bits of programming led to the creation of a database of training materials for CPDLC and for the Eurocontrol Institute. That database and the software that generated the presentations and workbooks was written in Pascal using Delphi 2.0. The database was InterBase and initially I used the Borland Database Engine to connect the two. That really was too inefficient to do the job and I replaced with with an early incarnation of Borland IBX. That database itself led to a training and conferencing company - but that's another story. MWA Software also came out of a spin off of the project. Software was needed to render JPEG images and there was nothing suitable at the time for Delphi. However, the IJG had published an open source package written in 'C' for this purpose and I wrote a Pascal API to use it. Various message boards at the time were demanding such a package and so I documented what I did and published this Pascal API as shareware. "MWA Software" was the name I choose as a trading name for the publisher and mwasoftware.co.uk as the domain name for a first generation website to take registrations and from which the software could be downloaded. It was surprisingly successful with registrations coming from hobbyist programmers to large corporations, and was only superceded when, somewhen after Delphi 7, Delphi came with a JPEG library of its own. MWA Software also had a similar success with a text editor for very large text files (known as J-Write). Before going back to IBX, it's probably worth recounting why Pascal and why Delphi. Its really my university supervisor's doing, when I was a postgraduate back in the late seventies. He was an old buddy of Niklaus Wirth's. They had worked together on Algol 60 and _the_ University computer used AlgolW as its main programming language - for the Maths and Computer Science Dept that is - the Physicists insisted on using Fortran. Pascal was the next generation on from AlgolW and there was considerable interest in the department about moving to it. However, I never got to go beyond example use until when, a couple of years later, I worked on some early Ethernet projects at ICL. The idea here was to develop Z80 based comms gateways to link older 1970s terminals to the mainframe via a modern Ethernet (then a thick yellow coaxial cable). Using Pascal as the main programming language for a real time box was almost an act of faith in this new programming language and I got recruited because I was still one of the few to have in depth knowledge of the language. I was initially responsible for the toolchain before becoming the project's Chief Designer. Perhaps, some might say remarkably, it all worked and we sucessfully developed an efficient real time system on a Z80 using Prospero Software's Pascal Compiler. Somewhat later, I worked on another real time development using 'C' and I still cannot understand why anyone perfers 'C' over Pascal - there are just so many bugs to get rid of in a 'C' program  (due to its lack of data typing) and it takes so much longer to do the same programming task. (I suppose the answer is that the gcc toolchain was Open Source while Pascal compilers cost serious money until Borland created TurboPascal, and subsequently the development of the Free Pascal Compiler). Anyway, given this background, Object Pascal and Delphi were, to me, an obvious choice for my database project. Moving on, I was working on another project in the late 2000s, originally written in Delphi with IBX and a Firebird database. The problem was it was limited to Windows and we wanted to move the project to Linux. Kylix was no more and thus I investigated this new IDE called Lazarus and the Free Pascal Compiler. Even then it looked good and most of the software orginally written for Delphi could be quickly ported to Lazarus and FPC. The exception was IBX and it was needed to access the Firebird Database. As it happens, when Borland/Imprise made available Interbase 6 as Open Source, they also did the same for IBX. I took copies of both sets of source code. The Firebird project of course came out of the Interbase software, but the IBX Open Source edition had just gathered dust. That is until I ported it to Lazarus. In the end it took about 3 months of part time work to do this and remove all Windows dependencies (the SQL monitor was the worst bit), but it worked and I published the result in compliance with the Interbase public license and in the hope that wider use would help improve stability. That was in 2010. The software gathered users and I couldn't resist improving it. The code today only bares a passing resemblance to the original version. There has not just been extensive code cleanup, but also the Firebird OOAPI is now supported, a completely new buffer management strategy and more, including the Firebird Pascal API providing a managed (COM) interface for programmatic rather than visual access to the database. I also wrote a near complete User Manual for IBX, but if I am going to point to what is the biggest improvement then it is the Test Plan and its implementation. Here, I borrowed techniques used in the high reliability world of aviation software, identified all the package's features and designed a set of tests to demonstrate the correct operation of each feature at least once. The test program runs from the command line and, in use, the output is compared with the last known good test output. This is used to identify any regressions. Before I release a new version of IBX, the rule is that the test plan must be passed for Firebird 2.5, 3, 4, and 5 and on both Linux and Windows. I regard this as essential to ensure product quality. Another rule is that whenever a new bug is reported and fixed, the tests must be updated to ensure that that bug never repeats. Similarly, whenever a new feature is added, the test plan is extended. Across all IBX packages there are now 52 individual test programs each designed to test a subset of the 335 separately identified features. The Test Plan, in addition to ensuring product quality also gives me the confidence to make major improvements - a good example being the relatively recent new buffer management strategy. A successful result when running the tests with a major improvement gives the confidence necessary to release an update. Another important update is due to the next release of FPC; this FPC update is currently in development. The new release of FPC changes the in memory layout for object instantiation and has consequentially invalidated the original Pascal implementation of the Firebird OOAPI. In order to make IBX FPC 3.3 and later compliant, I have had to change the Pascal Firebird OOAPI to one using extended records inside of object instances, changing Firebird's cloop utility in order to do this. The extended record interface is backwards compatible with FPC 3.2 and is in current use across all FPC versions. As long as you are using a recent version of IBX (with the fbintf package 1.4.2 or later) upgrade from FPC 3.2 to the next version should be seamless. Again, the Test Plan allowed me to release this fundamental update with confidence. IBX for Lazarus is now mature. I may certify it for use on Delphi, but otherwise there is nothing planned. Currently, I am working on Indy OpenSSL 3.x support. In itself this is a spin off from another project I have been working on to record and analyse statistics from the various Energy Management devices I have around the house. These include Solar Inverters, Batteries, Diverters and weather reporting. All come from different suppliers, each with their own cloud services and REST based APIs. For one I needed an oauth2client, all have JSON encoded data (FPC has excellent support for JSON) and all need an https client with up-to-date TLS 1.3 support. The long standing Indy Component Library provides an https client but didn't work with recent versions of OpenSSL (needed for TLS 1.3 and modern encryption). I have been putting work into providing an addon to Indy supporting the latest OpenSSL releases and oauth2client support. The current versions of both the OpenSSL addon IndySecOpenSSL and the oauth2client are both available on github and OPM. There is also an alternative (TaurusTLS) available. I have been working on and off with its developer and our objective is next to merge the codebases. In this regard, I have been going down the rabbit hole of 'C' header file to Pascal unit conversion. This is really the issue that caused problems with bringing Indy up-to-date. There are more than 50 header files for OpenSSL and which change with each major release. The current IndySecOpenSSL package uses the result of a manual (h2pas supported) conversion of a limited API subset necessary to support http. However, there is still a long term maintenance problem with each new release of OpenSSL and supporting new features. I have thus been trying to develop a much more automated approach using gcc to perform C macro expansion and an improved version of h2pas. The h2pas program that comes with FPC is a very old program that appears to predate the introduction of "classes" to object Pascal. It also has many "features" (bugs) that needed correcting. This work is going well but there is still a need to patch the original 'C' header files to deal with issues such as header file circularity, incomplete types and declaration order. It should deliver the intended result with the effort of supporting a new OpenSSL release reduced to updating the patches. Hopefully, this work will get published in Q1/Q2 2026 and provide an example pathway for the 'C' to Pascal conversion of other complex 'C' APIs. My Energy Management project is already working in prototype supported by a Firebird database and, of course, IBX. I hope to publish this on github later on in the year. Otherwise, I have accumulated many other useful Pascal code libraries and projects that I intend to tidy up and publish. Just a few things in the way of finding the time to do all this - a house that was bought as a bit of a "doer-up-er" and six grandchildren under the age of seven all demanding attention... ---------------------------------------------------------------------- maurog · 2025-12-27 16:56 @Tony Thank you very much for this detailed and very personal reply. It was a great pleasure for me to acknowledge your work on IBX and the contribution of MWA Software in TurboBird. IBX is today an exceptionally stable and high-quality foundation for Firebird under Lazarus, and without this work TurboBird would not be possible in its current form. Your background, your commitment to quality – especially the test plan – and your long-term dedication are truly impressive and deserve great respect. Thank you for making IBX available to the community and for continuing to maintain it so consistently. With great appreciation, Maurog. ---------------------------------------------------------------------- maurog · 2025-12-27 23:27 Hello, My GitHub account is active again. I have updated TurboBird v1.2.1.1263 and uploaded the new version to GitHub. Sorting by multiple columns has already been implemented. Binaries: https://github.com/mdadali/TurboBird/releases/tag/TurboBird_v1.2.1.126 3 Source code: https://github.com/mdadali/TurboBird Best regards, Maurog ---------------------------------------------------------------------- maurog · 2025-12-31 02:25 Hello, I have made a minimal modification to Tony’s restore example so that multiple database files should be created during the restore process. Below you can see the restore dialog and my slightly modified code. Regardless of what values I enter, I always receive the following error message: Engine Code: 336331014 Message: size specification either missing or incorrect for file /opt/firebird/examples/empbuild/employee.fdb -unknown ISC error 336330835 I also get the same error if I change the order of the primary database file and the segment file. What am I doing wrong here? Is the file size specification format incorrect? Or is there an error in the code? Thank you very much in advance. Best regards Maurog. Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i procedure TRestoreDlg.FormClose(Sender: TObject; var CloseAction: TCloseAction);var i: integer;begin  if ModalResult <> mrOK then Exit;   if PageControl1.ActivePage = SelectTab then  begin    CloseAction := caNone;    if SourceArchive.Text = '' then      raise Exception.Create('A Backup File Name must be given');      if ServerSideBtn.Checked then      begin        IBXServerSideRestoreService1.DatabaseFiles.Clear;        IBXServerSideRestoreService1.DatabaseFiles.Add(DBName.Text);        Application.QueueAsyncCall(@DoServerRestore,0)      end else      begin        IBXClientSideRestoreService1.DatabaseFiles.Clear;        IBXClientSideRestoreService1.DatabaseFiles.Add(DBName.Text);        for i := 0 to StringGrid1.ColCount - 1 do        begin          if Trim(StringGrid1.Cells[0, i]) <> '' then            IBXClientSideRestoreService1.DatabaseFiles.Add(StringGrid1.Cells[0, i]);        end;        Application.QueueAsyncCall(@DoClientRestore,0);      end;    PageControl1.ActivePage := ReportTab;  end; end; ---------------------------------------------------------------------- tonyw · 2026-01-01 11:46 The StringList "DatabaseFiles" is meant to be the list of files allocated to the database itself. To restore from multiple files, you should use TIBXClientSideRestoreService.RestoreFromFiles You appear to have added the archive file names to the list of database file names. See section 10.6 of the User Manual. Quote from: maurog on December 31, 2025, 03:25:37 amHello, I have made a minimal modification to Tony’s restore example so that multiple database files should be created during the restore process. Below you can see the restore dialog and my slightly modified code. Regardless of what values I enter, I always receive the following error message: Engine Code: 336331014 Message: size specification either missing or incorrect for file /opt/firebird/examples/empbuild/employee.fdb -unknown ISC error 336330835 I also get the same error if I change the order of the primary database file and the segment file. What am I doing wrong here? Is the file size specification format incorrect? Or is there an error in the code? Thank you very much in advance. Best regards Maurog. Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i procedure TRestoreDlg.FormClose(Sender: TObject; var CloseAction: TCloseAction);var i: integer;begin  if ModalResult <> mrOK then Exit;   if PageControl1.ActivePage = SelectTab then  begin    CloseAction := caNone;    if SourceArchive.Text = '' then      raise Exception.Create('A Backup File Name must be given');      if ServerSideBtn.Checked then      begin        IBXServerSideRestoreService1.DatabaseFiles.Clear;        IBXServerSideRestoreService1.DatabaseFiles.Add(DBName.Text);        Application.QueueAsyncCall(@DoServerRestore,0)      end else      begin        IBXClientSideRestoreService1.DatabaseFiles.Clear;        IBXClientSideRestoreService1.DatabaseFiles.Add(DBName.Text);        for i := 0 to StringGrid1.ColCount - 1 do        begin          if Trim(StringGrid1.Cells[0, i]) <> '' then            IBXClientSideRestoreService1.DatabaseFiles.Add(StringGrid1.Cells[0, i]);        end;        Application.QueueAsyncCall(@DoClientRestore,0);      end;    PageControl1.ActivePage := ReportTab;  end; end; ---------------------------------------------------------------------- maurog · 2026-02-17 00:53 Thank you very much, Tony. I have corrected the code and uploaded the new version TurboBird_v1.2.1.1264. Here is the latest release with changelog on GitHub: https://github.com/mdadali/TurboBird/releases/tag/TurboBird_v1.2.1.126 4 And here are several animated GIFs showing the new features: https://www.firebirdforum.de/viewtopic.php?t=387&start=90 Best regards, Maurog. ---------------------------------------------------------------------- valdir.marcos · 2026-02-17 09:38 Thanks. ---------------------------------------------------------------------- mariuz · 2026-02-25 10:01 TurboBird v1.2.1.1266 released with serveral bugs fixed  https://githu b.com/mdadali/TurboBird/releases/tag/TurboBird_v1.2.1.1266 ---------------------------------------------------------------------- maurog · 2026-02-26 15:34 TurboBird 1.2.1.1267 – New Release Available Hello everyone, This release brings some practical improvements and bug fixes: What's new in this version: Simple Activity Monitor: It is now possible to cancel attachments and statements directly. Object Filter in TreeView: Objects in the main TreeView can now be filtered selectively. Filter format is *Identifier Identifier* or *identifier*. Multilingual Help – Simple Interface: TurboBird now includes subfolders in the help directory for different languages, e.g., eng, ger, and fra. The language used for help can be set in the inifile: [UI] Language=eng Enter the name of the subfolder to use. The application will then load the index.html from that folder. (Note: The help itself is not fully implemented. The HTML pages currently serve as placeholders.) This simple interface can also be used later for setting the GUI language. Bug Fixes: Various minor bugs have been fixed, improving stability and usability. Downloads: Binaries: https://github.com/mdadali/TurboBird/releases/tag/TurboBird_ v1.2.1.1267 Sources: https://github.com/mdadali/TurboBird A special thanks goes to mariuz (author of FlameRobin), who follows TurboBird on GitHub, supports me with releases, and even included the project in the official Firebird news. Thank you for your support! Best regards, Maurog P.S.: I will create some animated GIFs demonstrating the new features and post them in the forum soon. ---------------------------------------------------------------------- maurog · 2026-02-26 16:09 TurboBird Activity Monitor: https://github.com/mdadali/TurboBird/blob/main/src/images/ActivityMoni tor.gif ---------------------------------------------------------------------- Nicole · 2026-02-27 16:20 WOW, this looks good! Thank you ! ---------------------------------------------------------------------- maurog · 2026-03-01 00:02 Thank you Nicole. Attached is a theme.ini file that roughly imitates GTK2 themes. It belongs to the data/config subdirectory of turbobird. ---------------------------------------------------------------------- maurog · 2026-03-01 15:59 Hello, I have uploaded TurboBird_v1.2.1.1268. In version TurboBird_v1.2.1.1267, the server registration form was unfortunately accidentally disabled. I apologize to everyone who has already downloaded that version. The current version is available again on GitHub: https://github.com/mdadali/TurboBird Best regards, Maurog. ---------------------------------------------------------------------- maurog · 2026-03-18 01:02 Hello, I have uploaded TurboBird v1.2.1.1270. New in this version: Transaction configuration added (Right-click on the database name → DB Tools → Transaction Config) Simple CSV Editor added (Menu: Built-In Tools → CSV Editor) SQL Editor (Design-Time) from IBX added (In the Query Window on the toolbar) In addition, several bugs have been fixed. Best Regards, Maurog. ---------------------------------------------------------------------- maurog · 2026-04-11 14:10 I have uploaded TurboBird v1.2.1.1272. https://github.com/mdadali/TurboBird/releases/tag/TurboBird_v1.2.1.127 2 This release includes several improvements and fixes: - DBReader integrated as a data recovery tool   (https://github.com/serbod/DBReader) - CSVEditor renamed to DataEditor, as it now supports multiple file formats for editing and export - New menu entry "Built-in Tools" added to the main menu - Support for Embedded Connections added   (please refer to the file "known_limitations_bugs.txt") - Known limitations/bugs are now included in the distribution - Several bugs have been fixed Best regards Maurog. ---------------------------------------------------------------------- valdir.marcos · 2026-05-15 23:18 It's working on Zorin OS/Ubuntu/Debian. Thanks. ---------------------------------------------------------------------- maurog · 2026-05-19 17:11 Hi, I have uploaded TurboBird v1.2.1.1273. This version is significantly more powerful than v1.2.1.1272. https://github.com/mdadali/TurboBird/releases/tag/TurboBird_v1.2.1.127 3 Here is an excerpt from the changelog: **+ Runtime Drag & Drop Form Designer & PascalScript (New)** - Dedicated "Forms" node in the database tree - Custom forms can now be created per database - Forms are saved as .cfrm + .rops files - "New Form" opens the visual designer - "Edit Form" loads an existing form into the designer - "Execute Form" runs a form directly - Double-click on a form starts execution - Storage location: data/PSStudio/Forms/// **! Table Management and Constraints (completely overhauled)** - All constraint types now visible as subnodes of each table - Primary Key with field list - Foreign Keys with reference display - Unique Constraints with field list - Check Constraints with condition - Not Null Constraints with affected fields - Indices (only user-defined, without system indices) - Multi-column keys are clearly grouped (PRIMARY KEY (Field1, Field2)) - Table management extended with new tabs:   - Primary Key: select fields via checkbox, changes generate SQL   - Foreign Keys: manage existing ones, create new ones with wizard   - Unique Constraints: select fields, assign name   - Check Constraints: edit expression directly   - Not Null Constraints: check fields, changes as ALTER statements **! Trigger Support (extended)** - New trigger types in the tree:   - Database triggers (ON CONNECT, ON DISCONNECT, ON TRANSACTION...)   - DDL triggers (BEFORE/AFTER CREATE TABLE, DROP TABLE, etc.)   - UDR triggers (EXTERNAL NAME ... ENGINE UDR) - "Create new Trigger" with appropriate template for each type - Trigger view shows correct type (Table/DB/DDL) - Editing and deleting of all trigger types possible **! Tree Structure (improved)** - Table fields now clearly grouped under "Fields" - Constraints and indices visible directly under the table - Table triggers visible directly under the table - "References" and "Permissions" under each table And several bugs fixed. I will also upload an animated GIF showing how to use PascalScript Studio. Best Regards, Maurog. ---------------------------------------------------------------------- maurog · 2026-06-04 13:36 New version 1.2.1.1277 is online. Automatic update notification is now active. Best regards, Mustafa. ---------------------------------------------------------------------- maurog · 2026-07-26 21:19 Hello everyone, I have just uploaded TurboBird v1.2.1.1280. Here are the changes in this release: TurboBird v1.2.1.1280 Build date & time: 26.07.2026 + Clone Table (Universal Copy Tool) Replaces three old dialogs: ImportTable, CloneToExternal, CopyTable Copies tables in all directions: FB → FB (local & Cross-Database), FB → External Table (binary format, up to 220,000 rows/sec), External Table → FB Automatic selection of the fastest copy method: INSERT...SELECT (local, up to 70,000 rows/sec), EXECUTE   BLOCK (Cross-DB, up to 4,600 rows/sec), Row-by-Row (Cross-DB with all field types) Data transformation support with $1 placeholder (e.g. $1 * 1.1, UPPER($1)) Optional data copy (table structure only or including data) Batch processing with configurable size Progress display with time measurement and speed Automatic detection and deselection of problem fields (BLOBs, Arrays) for external target tables + Data Editor (significantly enhanced) Universal interface between Firebird and text files Direct access to FB tables via right-click: "View in Data Editor" (Read-Only), "Edit in Data Editor" (Read-Write, using TIBTable) Loading FB tables with progress dialog and statistics All export formats available (CSV, JSON, HTML, PDF, Spreadsheet, etc.) Direct editing in the grid (Read-Write mode) + Create Table from DataSet (New) Creates a Firebird table directly from CSV/JSON/Excel data Accessible from Data Editor via "Create Table" Selection of server, database and table name, fields selectable via checkbox Optional data copy (structure only or including data) Batch processing with progress dialog Formula support (optional) + Bulk Export (New) Exports FB tables as Text files Server-side formatting for maximum speed Batch processing with configurable size, buffered stream for optimal write speed Progress display with time measurement and statistics Formula support for transformed exports, configurable via INI file - Removed old dialogs ImportTable, CloneToExternal, CopyTable (replaced by CloneTable) + Session Password Cache – temporary passwords are stored for the duration of the session - PascalScript Studio deactivated (currently unstable) * Several bugs fixed For reference, the performance numbers were achieved on a modest machine: an old AMD CPU, 3.5 GB RAM, a standard SSD, running Linux. With better hardware significantly higher speeds are possible. Greetings, Maurog. ---------------------------------------------------------------------- laguna · 2026-08-13 13:55 Hi! I saw your IBX-based TurboBird project and I have to say the porting is really great. I've done some testing and wanted to share my feedback:     Linux Version: Tested with the binaries and it works very well; I really liked it.     Windows Version: Using the precompiled binaries, I encountered an error at startup while registering fbclient.dll.         Note on Dependencies: Unlike the Linux version where GTK is standard, the Windows version currently depends on GTK. It would be much better if the Windows build could avoid this dependency to feel more native and avoid extra setup hurdles for Windows users. Building from Source (Windows): To work around the startup problem, I downloaded the sources and recompiled it, but I encountered some difficulties:     Add-ons conflicted during installation.     The project was set to Linux instead of the default (this issue has been resolved).     It would be helpful, if possible, to align the add-ons with the latest stable version of Lazarus. I haven't had a chance to try the macOS version yet, but I hope to do so this week. Thank you so much for your great work! Laguna ---------------------------------------------------------------------- laguna · 2026-08-20 08:53 Hi everyone, First of all, I want to say that IBX for Lazarus is an excellent component. I use it regularly and it works flawlessly on both Windows and Linux. However, I am currently facing a couple of issues when trying to use it on macOS 26: 1. Firebird 5 Installation Not Recognized Currently, the component does not recognize the installation of Firebird SQL 5 on macOS. Since Firebird SQL 5 is architecturally different from Firebird SQL 3, the detection process seems to fail completely, preventing me from using the latest version of the database. 2. "Invalid type cast" Error with Firebird 3 and TurboBird Because of the first issue, I fell back to using Firebird SQL 3. By making several compromises, I actually managed to get TurboBird IBX to compile and run on macOS 26. I can successfully register both the server and the database. However, whenever I click on a table to view it, I immediately get the following error:     Exception: Invalid type cast Has anyone successfully configured IBX with Firebird 5 on macOS, or does anyone know what might be causing the type cast exception when browsing tables with Firebird 3? Any guidance, patches, or workarounds would be highly appreciated. Thanks in advance for your help! ---------------------------------------------------------------------- maurog · 2026-08-22 07:18 @laguna thank you for the appreciation! Regarding Windows and GTK: There are the configurations x86_64-win64-win-debug and x86_64-win64-win-release – these two do not require GTK. They use pure Windows libraries. Please use one of these. Firebird 5 installation not recognized: I think I read somewhere in the forum that the problem can be solved by copying the fbclient into the IBX directory. "Invalid type cast" error with Firebird 3 and TurboBird: Please try different fbclient versions. In TurboBird, you can select and test any fbclient in the server and database configuration (Register/Edit). I use the client library that comes with Firebird 6 – it works with Firebird versions from 2.5 to 6.0. The library is very backward compatible. Maybe that helps. The form that causes the exception uses the TIBQuery component. You could create a small test project and test the component separately – that way you would see whether the error lies with the component or with TurboBird. I am very pleased that TurboBird is now also available on macOS. Thank you very much for that! Best regards, Maurog.