Hidding Form

Hi experts,

Ihave a problem hidding my form. If I set the form's visible property on the object inspector to false, when i run the program, i still can see the form. I also tried to set the form's visible property to false in the FormCreate procedure, but it doesn't work either. However, it works if i hide the form from the FormClose procedure and set Action to caNone.

Hope u can help me.

Thanks.

PS: i am using delphi4 and windows XP
LVL 2
StTwisterAsked:
Who is Participating?
 
KunfufaresiConnect With a Mentor Commented:
on my computer it didnt apear at all, but maybe that is because the form is totally empty, anyway another idea is to put

form1.top := -1000;

into oncreate of form1, or form1.left := -1000; you couldnt combined this with my previous comment as the form is not visible and thus windows wont bother calling onPaint event. But a timer could do the trick.

Kunfu Faresi
0
 
KunfufaresiCommented:
Hello,

there arse some ways you can use
1) From Project menu choose Options and remove auto-create of form2

2) if you want to hide main form then you could use
Application.Minimize
0
 
StTwisterAuthor Commented:
removing the auto-create doesn't hide the form, it simply doesn't create it, so i can't actually use that form.

Application.Minimize only minimizes the form, it doesn't hide it.
0
Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

 
Jase-CoderCommented:
you can use

SendMessage(Form1.handle, WM_SYSCOMMAND, SW_HIDE);

I think that is the correct function and right parameters. I am not on a windows machine at the minute, so I'll check to see if the params are correct then ill post another reply.

hopefully though, the above is the correct params
0
 
StTwisterAuthor Commented:
The procedure has one missing parameter, but it still doesn't matter, as i already tried with ShowWindow(Form1.Handle, SW_Hide), which does exactly the same thing. I also noticed that i can hide the form from any other procedure except FormCreate. For example i can hide it if i push a button or with a timer, but it doesn't respond in the FormCreate procedure.

Thanks.
0
 
KunfufaresiCommented:
Hello,

in formCreate the form is not yet created but in the process of being created so you will get a runtime error obviously. I remember using timer too. however if you put  form1.hide; in onPaint event of the form it will get hidden just after creation.

procedure TForm1.FormPaint(Sender: TObject);
begin
 form1.hide;
end;

hopefully this helps
0
 
Ivanov_GCommented:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private declarations }
    procedure OnCreateForm(var Msg : TMessage); message WM_SHOWWINDOW;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

{ TForm1 }

procedure TForm1.OnCreateForm(var Msg: TMessage);
begin
  // here the form is shown
  if Self <> Application.MainForm then
    // this is not the main form and we can hide it
    Self.Hide;
end;

end.
0
 
StTwisterAuthor Commented:
in both the situations, the form is hidden, but it still apears for a very short amount of time. i want the form not to apear at all.

Thanks
0
 
StTwisterAuthor Commented:
The form still apears, but this time it disapears much more faster. It probably didn't happen to your computer beacause you're not running on win xp, or u don't have delphi 4

Thanks.
0
 
StTwisterAuthor Commented:
Sorry, i was wrong, your ideea works just fine.

Thanks.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.