I've checked out the new version real quick. I have some remarks (which you may consider or not). These are just some observations and suggestions.
*) In project options > Compiler options > "Config and Target" the "Win32 gui app" isn't checked. This will result ALWAYS in a black screen behind the gui. If you check it, that black screen doesn't appear on Windows.
*) The lazdbexport is still not in dependencies. Maybe you didn't update the complete github-project yet.
*) The .pas files are also still not in the project manager (but again, maybe nog updated yet).
*) While adding the .pas files, I also noticed that you didn't use a consistent naming convention for the unit-names. For example you did use frmXXXX.pas for frmaboutunit.pas but used uprogress.pas for the progress form and just diskspecification.pas for the frmTechspecs. If you are going to clean your project it might be useful to name them all frmxxx.pas and TfrmXXX as class. A clear naming convention is very useful.
*) Your project is named project1_linux.lpi but your executable is quickhash.exe. It might be more clear to name your project quickhash.lpi too (just do a Project > "Save project as" for this) After that you can remove project1.* and project_linux.*
*) The Copy Results form is always in the middle of my two screens (so half on both screens). You have Position of form frmDisplayGrid1 set at poDesktopCenter. I can tel you... NEVER EVER USE poDesktopCenter !! On a two display system this is very annoying. Use poScreenCenter or some other value.
*) Make all the DBGrids have dgRowSelect in the options. It's more intuitive to have the complete row selected instead of just one cell.
*) The grid for RecursiveDisplayGrid1 has a very large width for ID. You might want to use a procedure which resizes all the columns to a more appropriate width. Now sometimes FilePath doesn't even fit while ID is very wide. You did use AutoFillColumns := true; but maybe dgAutoSizeColumns is a better choice (see screenshot and code below).
*) I would change the order of fields for RecursiveDisplayGrid1. FilePath isn't really useful here because path is already at the top there. When you move filesize and hashvalue before filename it's more clear too. See attached screenshot.
SQLQuery1.SQL.Text := 'SELECT id, filesize, hashvalue, filename FROM TBL_FILES';
(that should be changed inUpdateGridFILES() as well as SortByFileName etc then too)
*) To get dgAutoSizeColumns you can't use AutoFillColumns anymore so it's a trade off.
// FILES tab update grid routine
procedure TfrmSQLiteDBases.UpdateGridFILES(Sender: TObject);
begin
try
SQLQuery1.Close;
SQLQuery1.SQL.Text := 'SELECT id, filesize, hashvalue, filename FROM TBL_FILES';
SQLite3Connection1.Connected := True;
SQLTransaction1.Active := True;
MainForm.RecursiveDisplayGrid1.Options := MainForm.RecursiveDisplayGrid1.Options + [dgAutoSizeColumns];
SQLQuery1.Open;
// Allow the DBGrid to view the results of our query
// DataSource1.DataSet := SQLQuery1; // <--- no need, done in designtime
// MainForm.RecursiveDisplayGrid1.DataSource := DataSource1;// <--- no need, done in designtime
// MainForm.RecursiveDisplayGrid1.AutoFillColumns := true; // <--- no need, done in designtime
except
on E: EDatabaseError do
begin
MessageDlg('Error','A database error has occurred. Technical error message: ' + E.Message,mtError,[mbOK],0);
end;
end;
end;
*) There is no need to set DataSource1.DataSet and MainForm.RecursiveDisplayGrid1.DataSource anymore because the are already set in designtime and they should never change during the program. You can remove those line from UpdateGridCOPYTAB too.
*) Rename SQLQuery1, SQLQuery2, DataSource1 and DataSource2 to something more useful so you are clear as to what grid they belong. For example sqlFiles, dsFiles, sqlCopy and dsCopy are more clear. You get something like this:
// FILES tab update grid routine
procedure TfrmSQLiteDBases.UpdateGridFILES(Sender: TObject);
begin
try
sqlFiles.Close;
sqlFiles.SQL.Text := 'SELECT id, filesize, hashvalue, filename FROM TBL_FILES';
SQLite3Connection1.Connected := True;
SQLTransaction1.Active := True;
MainForm.RecursiveDisplayGrid1.Options := MainForm.RecursiveDisplayGrid1.Options + [dgAutoSizeColumns];
sqlFiles.Open;
except
on E: EDatabaseError do
begin
MessageDlg('Error','A database error has occurred. Technical error message: ' + E.Message,mtError,[mbOK],0);
end;
end;
end;
I don't think you even need the SQLite3Connection1.Connected and SQLTransaction1.Active lines because they should already be open but they can't hurt.
That's it for now