> > >>>It says something about TStringList property Strings not being 
> > >>>published...
> > >>
> > >>You will get this error when loading a form with DB (related) components 
> > >>with an Active=True property and the connection to the DB fails.
> > > 
> > > 
> > > Doew anyone has any ideas how to solve that? I can remove the error, if
> > > the dataset is opened while the component is 'loading', but then an
> > > application will also silently close the database, without any error-
> > > message?
> > 
> > I think an error mesage must be shown (in design mode always, in runtime 
> > depending on the OnError handler)
> > In design mode it may not result in an exception, and the db should stay 
> > closed. In runtime an exception is OK unless handled on the OnError
> 
> The TDataset,  TDatabase and TTransaction components can't show a
> messagedialog, since they are part of the FCL.
> 
> So I can suppress the exception. But then you'll never know why it's
> impossible to set the active property to true, when you are in design
> time.
> 
> Maybe that you can change it on the lazarus side: in the except-block,
> take care of the EDatabaseError exceptions. (ie: show the message, and
> don't reraise it)

In the attachment there is a patch which does this. Maybe that there
should be an extra try-block around the reader.ReadRootComponent, because
now the DoFinishReading isn't called. (what does that do?)

But the result of the patch is nice - with a messagebox with the DB-error
as a result.

But i'm not that into jitforms - so I could have missed something...

Joost

Index: designer/jitforms.pp
===================================================================
--- designer/jitforms.pp        (revision 7963)
+++ designer/jitforms.pp        (working copy)
@@ -210,6 +210,8 @@
 
 implementation
 
+uses db;
+
 {$IFOPT R+}{$DEFINE RangeCheckOn}{$ENDIF}
 
 
//------------------------------------------------------------------------------
@@ -687,6 +689,9 @@
       Reader.Free;
     end;
   except
+    on E: EDatabaseError do begin
+      MessageDlg(E.Message,mtError,[mbOK],0);
+    end ;
     on E: Exception do begin
       DebugLn('[TJITComponentList.AddJITChildComponentFromStream] ERROR 
reading form stream'
          +' of Class ''',NewClassName,''' Error: ',E.Message);

Reply via email to