Hi Assaf,
The Mainform of a delphi application is something special! When it is closed, 
the application stops!
I would suggest, you open a second form (type workstation one or two) after 
hiding your Mainform.
Another point is: You should NOT Free a form! Use Release instead. At the time 
of destroying the form there might be
still something in the associated message-queue. "Release" takes care of that.

Have fun
Bib

>     Hello all. I'm using Delphi-7, and I'm trying to do the following:
>     I have a MainForm, which checks a certain parameter (let's call it
>     workstation-type). If it is one kind, I want to create the form as a
>     type1-workstation. Otherwise, it should be a type2-workstation.
>     both types (1,2) inherit from a generic-workstation class (inherited
>     from the repository)
>      
>      
>     The problem starts, when I want to change the form type in run-time, and
>     continue running. When I try to free the (global) form variable, and
>     create a new instance, I crash on an access violation. If I don't free
>     the pointer I don't crash, but the memory usage increases (and the leak
>     is waiting to burst). 
>      
>     Any ideas how to solve the access violation, or better yet, change the
>     form without having to kill it first?
>      
>      
>     What I do is as follows:
>      
>     procedure TMainForm.LoadWksForm;
>     begin
>         repeat 
>             if parameter = 1 then
>                 TGenericWorkstation.Refactor(TType1Workstation)
>             else
>                 TGenericWorkstation.Refactor(TType1Workstation);
>         until Wks.ModalResult = mrOk;
>     ...
>     class procedure TGenericworkstation.Refactor(NewClass: class of
>     TGenericWorkstation);
>     begin
>         if (Wks = nil) or not (Wks is NewClass) then
>         begin 
>             FreeAndNil(Wks);
>             Wks:= NewClass.Create(nil);
>             Application.ProcessMessages;         // This is where I crash!!!
>         end;
>     end;
>     ...
>     procedure TGenericworkstation.ChangeType;
>     begin
>         ModalResult:= mrOk;
>     end;
>      
>     Assaf Stone
>     Spacelogic ltd.
>     [EMAIL PROTECTED]
>     Tel: 972-9-8855565 ext. #315
>      
>     
>     
>     [Non-text portions of this message have been removed]
>     
>     
>     
>     -----------------------------------------------------
>     Home page: http://groups.yahoo.com/group/delphi-en/
>     To unsubscribe: [EMAIL PROTECTED] 
>     Yahoo! Groups Links
>     
>     
>     
>      
>     
>     



-----------------------------------------------------
Home page: http://groups.yahoo.com/group/delphi-en/
To unsubscribe: [EMAIL PROTECTED] 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/delphi-en/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 


Reply via email to