Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 4 odgovora
  • 3.970 pregleda

Najnovija ↓

Minimiziranje forme 27.05.2005. u 02:58 · pre 260 meseci #1
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?
Potpis
Sendvic uvek pada na namazanu stranu!
Re: Minimiziranje forme 27.05.2005. u 08:42 · pre 260 meseci #3
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.
Re: Minimiziranje forme 27.05.2005. u 23:25 · pre 260 meseci #4
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.
Potpis
Sendvic uvek pada na namazanu stranu!
Re: Minimiziranje forme 28.05.2005. u 02:21 · pre 260 meseci #5
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
Potpis
Still going strong...
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme