CPB Mailing List
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Can't close my form. Close() isn't doing it.
On Sat, 3 Oct 1998, Aurora wrote:
> Now the pgm has no probs exitting if I close on a button event, but from
> FormCreate it won't work... I have my theories... I need solutions... :(
I don't know if this will work for you, but I ran into a similar problem.
First some background:
I write a lot of console CGI applications to process user input and
return files/data/etc from my company's website. The latest application
had to create some graphs based on the numeric data I retrieved. I tried
to use dynamically allocated Teechart components, but at some point they
were throwing an exception because they needed a window handle and
didn't have one.
My next plan was to create a form with the charts on them. I could then
dynamically create the form and call its OnShow event from insde the
console app. In the form's OnShow event I built the charts and saved
the images to disk. Then I called Close() at the bottom of the OnShow
event because I needed the form to close itself automatically without
requiring any manual intervention.
The problem I ran into was that when the webserver ran the app, it would
hang up. After running the chart module thru the debugger I got an
EInvalidOperation exception that said you couldn't modify the Visible
property (which Close() does) inside the OnShow event.
My final solution was to call form->Show and form->Close both from the
external console part of the application instead of trying to have the
form close itself. I don't know if you can write some kind of a wrapper
for your form, but maybe that would let you close the form and then
terminate the app in a separate step.
Hope this helps :)
Daniel Hallmark
original method:
//inside console app
TfrmChart *chart = new TfrmChart(0);
chart->Show();
delete chart;
//end of consol app
//inside TfrmChart::OnShow
// build charts and save to disk
Close(); // automatically close form -- this raises exception
//end of TfrmChart::OnShow
new method:
//inside console app
TfrmChart *chart = new TfrmChart(0):
chart->Show(); // if you need user interaction here ShowModal()
chart->Close();
delete chart;
//end console app
W Komornicki's Home Page |
Main Index |
Thread Index