IT NEWS PC REVUE PC FORUMInternet time: @395
Obsah fóra
Pravidlá  •  Kontakt  •  Prihlásenie  •  Registrácia

Stavte na víťaza

Servery Cisco UCS prekonali 45 rekordov za dva roky www.ucsservery.sk

inhodinky.sk, hodinky pre Vás

Excelentné hodinky, excelentné ceny Širkoký výber značkových hodiniek www.inhodinky.sk

Hodinky - zásielkový predaj

Už o 2 dni môžete mať hodinky na Vašej ruke! CASIO, SEIKO, LORUS, 4YOU. www.casallia.sk

Ste administrátorom?

Zlepšite svoje vedomosti v oblasti správy sietí na našich kurzoch! www.gopas.sk

Garantovaná najnižšia cena

PZP Genertel pre autá nad 70 kw a do 2250 kg. Akcia platí iba do 15. 2.! www.genertel.sk

Popup okno v Delphi

Zaslať odpoveď
AutorSpráva
newby
Užívateľ
Užívateľ

Založený: 03.02.2010
Príspevky: 9

PríspevokZaslal: Ut 27.07.10 15:28Odpovedať s citátomNávrat hore

Ako si mozem vytvorit jednoduche vyskakovacie okno nad listou? Ako aplikacie oznamuju nieco, napr. AV novy update databazy. Predpokladajme ze moja aplikacie je schovana v tray.
Zobraziť informácie o autoroviOdoslať súkromnú správu
coldak
Skúsený užívateľ
Skúsený užívateľ

Založený: 29.10.2008
Príspevky: 927

PríspevokZaslal: Ut 27.07.10 15:41Odpovedať s citátomNávrat hore

tak nam prezrad ako si schoval svoju aplikaciu do tray ?
Zobraziť informácie o autoroviOdoslať súkromnú správu
newby
Užívateľ
Užívateľ

Založený: 03.02.2010
Príspevky: 9

PríspevokZaslal: Ut 27.07.10 16:02Odpovedať s citátomNávrat hore

kód:

 TrayIcon1.Visible:=true;
 hide;
Zobraziť informácie o autoroviOdoslať súkromnú správu
Fico
Skúsený užívateľ
Skúsený užívateľ

Založený: 11.01.2009
Príspevky: 908

PríspevokZaslal: Ut 27.07.10 16:39Odpovedať s citátomNávrat hore

Trieda TTrayIcon by mala obsahovať vlastnosť PopUpMenu. Takže na formulár si daj komponent TPopupMenu z palety Standard. Na formulár to umiestní iba ikonu, na ktorú teraz klikni pravým tlačidlom a vyber prvú možnosť - Menu designer.... Tu si vytvor vlastné menu podľa potrieb. Potom už len niekde v kóde priraď toto menu vlastnosti PopUpMenu:

kód:
TrayIcon1.PopUpMenu := PopupMenu1;
Zobraziť informácie o autoroviOdoslať súkromnú správuICQ
newby
Užívateľ
Užívateľ

Založený: 03.02.2010
Príspevky: 9

PríspevokZaslal: Ut 27.07.10 17:02Odpovedať s citátomNávrat hore

Nemyslel som popupmenu ale vyskakovacie okno. Ako napr. FF ked dokonci download tak sa vysunie info o dokonceni stahovania, alebo AV ked dokonci update tak vyhodi info nad listu.

nieco take co vyskoci samo pri istej udalosti
Zobraziť informácie o autoroviOdoslať súkromnú správu
Fico
Skúsený užívateľ
Skúsený užívateľ

Založený: 11.01.2009
Príspevky: 908

PríspevokZaslal: Ut 27.07.10 17:14Odpovedať s citátomNávrat hore

Aha, zle som pochopil. Ja to riešim vytvorením nového Formu, na ktorý naukladám, čo potrebujem - ten je samozrejme zbavený záhlavia, je zmenená farba a prípadne sa môže použiť transparentnosť. Ďalej získam súradnice obrazovky:

kód:
Screen.WorkAreaWidth      // sirka
Screen.WorkAreaHeight     // vyska


a potom form umiestním za celú výšku a šírku obrazovky. Nakoniec už len po vykonaní určitej udalosti pomocou timera mením Form.Top premennú daného formu. Počká sa určitý čas a opäť sa schová.
Ak potrebuješ konkrétny príklad, tak napíš.

// Poznámka: existuje aj Screen.Width a Screen.Height vlastnosť. Ale tie vyššie spomenuté vlastnosti (WorkArea...), vracajú šírku a výšku bez zarátania hlavného panelu. Tým sa zabráni, aby kus okna vykukovalo spod obrazovky, respektíve, aby nebolo príliš nízko.
Zobraziť informácie o autoroviOdoslať súkromnú správuICQ
newby
Užívateľ
Užívateľ

Založený: 03.02.2010
Príspevky: 9

PríspevokZaslal: Ut 27.07.10 17:44Odpovedať s citátomNávrat hore

takto som to skusal, ale so Screen.width Screen.Height , neviem ako ten formular dat nad vsetky okna. (aby bolo vidiet ze sa vobec nieco vysunulo).Skusal som nastavit na ten druhy form fsStayOnTop ale nic.

Edit: ved mozes dat aj priklad ak ti to nerobi problem
Zobraziť informácie o autoroviOdoslať súkromnú správu
Fico
Skúsený užívateľ
Skúsený užívateľ

Založený: 11.01.2009
Príspevky: 908

PríspevokZaslal: Ut 27.07.10 19:19Odpovedať s citátomNávrat hore

1.) File | New | Form
Týmto vytvor nový formulár. Nahádž naň, čo potrebuješ. Nastav vlastnosť BorderStyle na bsNone. Pridaj tu aj jeden timer (budem sa naňho odvolávať cez názov tmShow), ktorého interval nech je 1 ms.

2.) do udalosti OnTimer timeru tmShow daj toto:
kód:
// ak je tag 0, formular sa roluje dole, ak je 1, hore

  if ( tmShow.Tag = 0 ) then begin
    if ( Form2.Top >= ( Screen.WorkAreaHeight - Form2.Height ) ) then begin
      Form2.Top := Form2.Top - 1;
      exit;
    end;
    Form2.Top := Screen.WorkAreaHeight - Form2.Height;
    tmShow.Tag := 1;   // zmena dalsieho rolovania na smer hore
  end

  else begin
    if ( Form2.Top <= Screen.WorkAreaHeight ) then begin
      Form2.Top := Form2.Top + 1;
      exit;
    end;
    Form2.Top := Screen.WorkAreaHeight;
    tmShow.Tag := 0;   // zmena dalsieho rolovania na smer dole
  end;

  tmShow.Enabled := false;

3.) a do OnCreate tohto formu toto:
kód:
  Self.Left := Screen.WorkAreaWidth - Form2.Width;
  Self.Top := Screen.WorkAreaHeight + 2;
  Show;

Týmto sa popup form umiestni do pravého dolného rohu.

4.) v tvojom hlavnom unite pridaj do uses unit s novým formom - napr unit2.

5.) Teraz už iba stačí kdekoľvek v tvojom projekte zapnúť timer tmShow (vypne sa sám, o to sa netreba starať)
kód:
Form2.tmShow.Enabled := true;

pre vyvolanie a pre zatvorenie popup formu - čiže pre každé zvlášť.
Zobraziť informácie o autoroviOdoslať súkromnú správuICQ
newby
Užívateľ
Užívateľ

Založený: 03.02.2010
Príspevky: 9

PríspevokZaslal: Ut 27.07.10 19:49Odpovedať s citátomNávrat hore

Vdaka, presne takto som to chcel . Len problem je vtom, ze ak mam hlavny Form1 schovany (v tray) tak ani to vysuvacie okno nevidno. A prave toto je zaklad
Zobraziť informácie o autoroviOdoslať súkromnú správu
coldak
Skúsený užívateľ
Skúsený užívateľ

Založený: 29.10.2008
Príspevky: 927

PríspevokZaslal: Ut 27.07.10 21:03Odpovedať s citátomNávrat hore

skus tomu form2 nastavit parenta desktop
Zobraziť informácie o autoroviOdoslať súkromnú správu
Fico
Skúsený užívateľ
Skúsený užívateľ

Založený: 11.01.2009
Príspevky: 908

PríspevokZaslal: Ut 27.07.10 21:09Odpovedať s citátomNávrat hore

Alebo skús dať ako prvý riadok v OnTimer timera tmShow tento riadok:
kód:
Form2.Show;


// neviem, či to pomôže, lebo mne to funguje správne, aj ak je hlavný form skrytý, ale skús to
Zobraziť informácie o autoroviOdoslať súkromnú správuICQ
coldak
Skúsený užívateľ
Skúsený užívateľ

Založený: 29.10.2008
Príspevky: 927

PríspevokZaslal: Ut 27.07.10 21:18Odpovedať s citátomNávrat hore

netreba ziadny timmer, staci pri vytvarani popup okna nastavit parenta desktop
kód:
frm := TForm2.CreateParented(getDesktopWindow());
  frm.Show;
Zobraziť informácie o autoroviOdoslať súkromnú správu
Fico
Skúsený užívateľ
Skúsený užívateľ

Založený: 11.01.2009
Príspevky: 908

PríspevokZaslal: Ut 27.07.10 21:29Odpovedať s citátomNávrat hore

Parent už je nastavený na desktop. Ak vytvoril form podľa hore uvedeného postupu, vlastník nie je pôvodný formulár, keďže sa od neho vytváral nezávisle (preto musel pridať do uses názov novovytvoerného unitu.
Skúška: Nasledujúca správa
kód:
ShowMessage( IntToStr( Form2.ParentWindow ) );

zobrazila nulu, čo je, pokiaľ viem, handle desktopu.
Zobraziť informácie o autoroviOdoslať súkromnú správuICQ
newby
Užívateľ
Užívateľ

Založený: 03.02.2010
Príspevky: 9

PríspevokZaslal: Ut 27.07.10 21:50Odpovedať s citátomNávrat hore

Zle som sa vyjadril. Pri Hide je to v poriadku. Pri minimalizovani zmizne aj Form2.
A dalsia vec. Ak mam focus na neakom cudzom okne ci uz co je na tej pozicii alebo maximalizovane tak ten form2 nevidno. Co stym?
Zobraziť informácie o autoroviOdoslať súkromnú správu
coldak
Skúsený užívateľ
Skúsený užívateľ

Založený: 29.10.2008
Príspevky: 927

PríspevokZaslal: Ut 27.07.10 22:08Odpovedať s citátomNávrat hore

fsStayOnTop by malo stacit no ale pre istotu si prestuduj toto http://delphi.about.com/od/formsdialogs/l/aa073101b.htm
Zobraziť informácie o autoroviOdoslať súkromnú správu
Zobraziť príspevky z predchádzajúcich:    
Zaslať odpoveď
Nemôžete pridávať nové témy do tohto fóra.
Nemôžete odpovedať na témy v tomto fóre.
Nemôžete upravovať svoje príspevky v tomto fóre.
Nemôžete mazať svoje príspevky v tomto fóre.
Nemôžete hlasovať v tomto fóre.

Powered by phpBB 2.x.x © 2005 - 2012 PCforum, webhosting by WebSupport, edited by JanoF