[ PeraKojotSuperGenije @ 27.05.2005. 01:58 ] @
Imam projekat sa vise formi. Form1 mi je glavna forma. Kada se prikaze form2 form1 se hide-uje (form2 nije modalna forma). Kada hocu da minimiziram form2 ona se "spusti" u donji levi ugao desktopa iznad "start" dugmeta. Sta da uradim da minimiziranjem form2 potpuno nestane sa desktopa?
[ _BloB_ @ 27.05.2005. 07:09 ] @

izvini ali nije mi bas najjasnije sta zerlis da postignes?
da kada minimiziras form2 da se cela aplikacija minimizira?

malo pojasni da bi ti ljudi sa foruma mogli pomoci :)

poz
[ DelphiBoy @ 27.05.2005. 07:42 ] @
Probaj sledeci kod:
Code:
unit Unit2;

interface

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

type
  TForm2 = class(TForm)
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure WMSize(var Message: TWMSize); message WM_SIZE;
  end;

var
  Form2: TForm2;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm2.WMSize(var Message: TWMSize);
begin
  if (Message.SizeType = SIZE_MINIMIZED) then
    begin
     Form1.Show;
     Form2.Hide;
    end;
end;

procedure TForm2.FormShow(Sender: TObject);
begin
  if Form1.Visible=true then
    Form1.Hide;
end;

end.


Napomena za koriscenje WMSIZE message: kada minimizujes glavnu formu ona nece primiti WMSize poruku i minimizovace sve forme koje su ti vezane za aplikaciju.
[ PeraKojotSuperGenije @ 27.05.2005. 22:25 ] @
POJASNJENJE:
U projektu imam dve forme i u svakom trenutku se vidi samo jedna od njih. Form1 se ponasa normalo kad se minimizira. Kada minimiziram form2, ona se ne "spusti" u taskbar vec se premesti u donji levi ugao desktopa iznad start dugmeta i vidi se samo ona gornja plava linija u kojoj pise ime forme i u kojoj su dugmici minimize, maximize, close.
[ johnnie @ 28.05.2005. 01:21 ] @
Opet prica o formama:

Kreiraj ih runtime; dakle iz aplikacije izbrisi ono na pocetku
Code:
Application.Initialize;
  Application.CreateForm(TForm1, Form1);
 // Application.CreateForm(TForm7, Form7);
  // Application.CreateForm(TForm6, Form6);
  //Application.CreateForm(TForm5, Form5);
  //Application.CreateForm(TForm3, Form3);
  //Application.CreateForm(TForm4, Form4);   ... itd

vidis da je rezervisanje forme stavljeno kao komentar, dakle apliakcija ih pri startu ne kreira, vec ti to radis po potrebi.
formu koju sktiviras, pozivas sa
Code:

If not assigned(form4) then form4:=tform4.create(application);
form3.close;  // odnosno o kojoj se formi radi, tj. koju zatvaras
form4.show;// koju formu otvaras itd..
.....

U svakoj od formi na OnClose event stavis:
Code:

action:=cafree;
form4:=nil; // odnosno o kojoj se formi radi, tj. koju zatvaras

Tako ces spreciti memory leak, jer aplikacija ne zauazima memorijski prostor prilikom pokretanja, vec samo kod izvrsavanja forme. Forma je uustvari promenjliva i delphi mora da joj dodeli prostor u memoriji; zamisli da imas program sa 100 formi, kako bi to radilo da su sve zauzete unapred. Ovo ti je skolski primer iz knjige.
Pozdrav