In TBlobThread.Execute wird direkt auf Elemente der
VCL zugegriffen.
frmMain.Image1.Picture.Bitmap.SaveToStream(BlobStream);
Das ist nicht zulässig und kann sogar zum Absturz der Anwendung führen.
Und so etwas geht im Thread überhaupt nicht:
ShowMessage('SaveRichEditToDB Operation completed');
Übergib dem Thread beim Erzeugen statt dessen einen Stream (z.B. einen TMemoryStream oder TFileStream) der die zu speichernden Daten enthält oder die zu lesenden Daten aufnimmt. Das hat auch den Vorteil, dass die Implementierung im TBlobThread nicht von der Art der Daten abhängt.
Wärend der TBlobThread mit dem Stream arbeitet darf der Hauptthread natürlich nicht auf den Stream zugreifen.
FreeOnTerminate ist auch keine so gute Idee, da eine Überprüfung ob die Aktion noch läuft, so nicht möglich ist.