| | |
| Stránka: 1 z 1
| [ Príspevkov: 17 ] | |
Autor | Správa |
---|
Registrovaný: 03.02.10 Prihlásený: 27.07.10 Príspevky: 9 Témy: 2 | Napísal newby: 27.07.2010 16:28 | |
|
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.
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 27.07.2010 16:41 | |
|
tak nam prezrad ako si schoval svoju aplikaciu do tray ?
|
|
Registrovaný: 03.02.10 Prihlásený: 27.07.10 Príspevky: 9 Témy: 2 | Napísal autor témy newby: 27.07.2010 17:02 | |
|
Kód: TrayIcon1.Visible:=true; hide;
|
|
Registrovaný: 11.01.09 Prihlásený: 25.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 27.07.2010 17:39 | |
|
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;
|
|
Registrovaný: 03.02.10 Prihlásený: 27.07.10 Príspevky: 9 Témy: 2 | Napísal autor témy newby: 27.07.2010 18:02 | |
|
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
|
|
Registrovaný: 11.01.09 Prihlásený: 25.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 27.07.2010 18:14 | |
|
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.
|
|
Registrovaný: 03.02.10 Prihlásený: 27.07.10 Príspevky: 9 Témy: 2 | Napísal autor témy newby: 27.07.2010 18:44 | |
|
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
|
|
Registrovaný: 11.01.09 Prihlásený: 25.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 27.07.2010 20:19 | |
|
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ášť.
|
|
Registrovaný: 03.02.10 Prihlásený: 27.07.10 Príspevky: 9 Témy: 2 | Napísal autor témy newby: 27.07.2010 20:49 | |
|
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
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 27.07.2010 22:03 | |
|
skus tomu form2 nastavit parenta desktop
|
|
Registrovaný: 11.01.09 Prihlásený: 25.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 27.07.2010 22:09 | |
|
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
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 27.07.2010 22:18 | |
|
netreba ziadny timmer, staci pri vytvarani popup okna nastavit parenta desktop
Kód: frm := TForm2.CreateParented(getDesktopWindow()); frm.Show;
|
|
Registrovaný: 11.01.09 Prihlásený: 25.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 27.07.2010 22:29 | |
|
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.
|
|
Registrovaný: 03.02.10 Prihlásený: 27.07.10 Príspevky: 9 Témy: 2 | Napísal autor témy newby: 27.07.2010 22:50 | |
|
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?
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | |
Registrovaný: 11.01.09 Prihlásený: 25.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 28.07.2010 11:30 | |
|
V coldak-ovom linku máš riešenie. Pridaj do unitu druhého formu túto procedúru:
Kód: procedure TForm2.CreateParams(var Params: TCreateParams); begin
inherited; Params.ExStyle := Params.ExStyle or WS_EX_TOOLWINDOW or WS_EX_TOPMOST; Params.WndParent := GetDesktopWindow;
end; + do deklarácie TForm2 pridaj toto: Kód: protected procedure CreateParams(var Params: TCreateParams); override;
PopUp okno sa nebude minimalizovať spoločne s vlastníkom a bude viditeľný nad ostatnými oknami.
|
|
Registrovaný: 03.02.10 Prihlásený: 27.07.10 Príspevky: 9 Témy: 2 | Napísal autor témy newby: 28.07.2010 13:06 | |
|
Vcera som to skusal ibaze som to daval do private jak je na tej prvej strane a nevedel som to spustit. Vdaka
|
|
| Stránka: 1 z 1
| [ Príspevkov: 17 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| POPUP okno v JavaScript, VBScript, Ajax | 7 | 958 | 07.06.2009 9:49 shaggy | | POPUP okno, stylovanie v JavaScript, VBScript, Ajax | 11 | 723 | 08.07.2010 20:01 Ďuri | | JS Popup okno s možnosťou pridávania do košíka v JavaScript, VBScript, Ajax | 3 | 384 | 23.06.2010 19:00 petanorech | | [Delphi] Okno v Delphi, Visual Basic | 6 | 687 | 15.01.2010 21:42 vama | | Delphi: ked je neaktivne okno v Delphi, Visual Basic | 5 | 1311 | 02.08.2009 13:00 feromakovi | | delphi zapis cisla do editu v delphi v Delphi, Visual Basic | 3 | 1107 | 11.05.2008 12:02 p360t | | POPUP v JavaScript, VBScript, Ajax | 10 | 713 | 28.04.2010 16:45 djsulo | | popup box v JavaScript, VBScript, Ajax | 7 | 359 | 25.02.2013 21:12 shaggy | | popup reklama v JavaScript, VBScript, Ajax | 0 | 308 | 31.08.2013 16:04 boss382 | | PM Popup Blocker Fix v Redakčné systémy | 0 | 485 | 14.10.2006 14:49 JanoF | | Z popup okna do textarei v JavaScript, VBScript, Ajax | 7 | 782 | 15.03.2008 2:20 chrono | | [RoR] vytvorenie popup okna v urcitom case v Perl, Python, Ruby, CGI | 1 | 448 | 04.02.2015 14:41 chrono | | Ako nastaviť všetkým EditBoxom jedno PopUp menu s funkciami? v Delphi, Visual Basic | 9 | 743 | 01.08.2010 22:22 Manny | | Popup okienko (alebo ako sa to vola) pri tray ikonkach v Operačné systémy Microsoft | 1 | 495 | 05.03.2007 14:30 Tom@S | | javascript wysiwyg v javascript popup v JavaScript, VBScript, Ajax | 1 | 849 | 25.07.2009 19:29 Ďuri | | Okno v JavaScript, VBScript, Ajax | 4 | 849 | 01.12.2007 17:32 qacer |
| Nemôžete zakladať nové témy v tomto fóre 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
|
|