Refactoring progress and ZeosLib

The replacement of the old API-code (mysql.pas) with the ZeosLib-code makes good progress. About 80% is already done. If progress goes on this way, the first HeidiSQL-installer will be ready this weekend!

Be aware that the first version will most probably have some new bugs in it - please post them here if you find any. And certainly it will be a pre-release. Further the used ZeosLib 6.5.1 has alpha-status at the moment, and the ZeosLib-Project-Management seems to have problems in finding good developers. So, if you're a Delphi-Freak, please support ZeosLib! ZeosLib is a great "database-driver" for delphi, kylix, cbuilder and lazarus, which connects to nearly all popular database-servers.

For now we need more development power. Everyone in the forum could see that. Because of that we decieded to start a "recruitment" in order to strengthen our development team. And what we need are developers that are ready to identify themselves with ZeosLib and seriously interested in ZeosLib development to improve and maintain our product. What we need most at the moment are developers who are able to care about the plain database driver support which is directly connected to the zdbc layer. Furthermore we need reinforcement to do the Lazarus support.

Foreign key constraint symbol names must be unique in a database. To avoid violation errors the "Copy table" dialog should just leave the CONSTRAINT clause out from the CREATE TABLE code. In that case MySQL auto creates a valid name on demand. See http://www.heidisql.com/forum.php?t=6086

Display progress bar when deleting rows in 1 or more tables via action "Empty table(s)". Also, use TRUNCATE on all server versions. Don't know why I did that per DELETE FROM on servers below 5.0.3. See http://www.heidisql.com/forum.php?t=6285

Make "Wrap long lines" button work globally, for all SynMemos except the SQL log. Also, store and restore its state when closing/opening HeidiSQL. See forum post: http://www.heidisql.com/forum.php?t=6476

The 3 procedures Parse(Table|View|Routine)Structure() already do some connection specific stuff, and now even more, so they're moved to TMySQLConnection now. In order to display the right collation even if only the character set was found in a CREATE TABLE code, the default collation per charset is detected via CollationTable. See http://www.heidisql.com/forum.php?t=6348 .

Main tabs get activated in an unpredictable way when hiding some of them. In order to avoid unwanted fetching row stuff, hide tabs later, after activating the wanted one. Fixes firing SELECT from an empty table name (Incorrect table name ''). See http://www.heidisql.com/forum.php?t=6646

Right click on query tab starts doubleclick timer when context menu closes. So, right click + left click is detected as double click and closes the selected query tab. Fixed hereby by ignoring right clicks. See http://www.heidisql.com/forum.php?t=6803

Use CREATE USER query for added users, as required since 5.0.2 servers when password is empty. Works around SQL error 1133 (Can't find any matching row in the user table). See http://www.heidisql.com/forum.php?t=6948

Modify identifier quoting logic: - Move QuoteIdent() and DeQuoteIdent() out of TMySQLConnection, make them classless - Remove TMainForm.mask(), instead always use QuoteIdent() - Introduce a third parameter to QuoteIdent(): "AlwaysQuote" - setting this to false will quote only if required - Set AlwaysQuote to false for all stuff which drops some code into the query editor, see http://www.heidisql.com/forum.php?t=6986