Delphi - stayontop?Blbne...

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
Borg2of3
Začátečník
Začátečník
Uživatelský avatar
Registrován: 10. dub 2004
Bydliště: deltakvadrant
Kontaktovat uživatele:

Delphi - stayontop?Blbne...

Příspěvek od Borg2of3 »

A mam jeste jeden problemek... mam udelanou aplikaci.. ktera je nastavena na stayontop.. kdyz si to uzivatel vybere.. ale z niceho nic po nejakym case behu aplikace (nevim za jakych okolnosti.. jsou mi fakt zahadou) se najednou aplikace presune do zadu.. a kazda jina aplikace ji prekryje.. a to se mi vubec nelibi... tak jsem premyslel, ze bych nejak odchytil polohu aplikace.. to ze je pod jinou aplikaci schovana.. a znova pak ji donutil bejt stayontop.. jenze nevim jakou funkci nebo proceduru... proste nejakej figl, kterej tohle dokaze odchytit.. nejsem v programovani moc dobrej... myslel jsem ze by to slo nejak jako treba takhle:

if form1.formposition<>ontop then form1.formstyle=fsstayontop; :roll:

ale nic takovyho jsem v delphi nenasel..
nevi nekdo co s tim? :(
My jsme borg. Budete asimilováni!
AMD Athlon II X4 631, Sapphire HD 6570 Ultimate 1GB DDR3, Asus F1A75-M PRO - AMD A75, Corsair Vengeance 8GB (2x4GB) DDR3 1866, SSD OCZ Vertex 3 - 60GB, WD Green 500GB, OCZ zdroj ZS Series 550W 80 PLUS Bronze, CoolerMaster Hyper TX3, Sweex LW322 Wi-fi síťová karta PCI, CoolerMaster Elite 343 (RC-343-KKN1), Samsung SH-222AB SATA, Čtečka karet I-BOX 62w1 + USB, Microsoft Windows 7 Home Premium CZ 64bit OEM, Logitech Wireless Desktop MK320 CZ, Philips 246EL2SBH - LCD monitor 24"
pavel.minarik
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 03. čer 2003
Bydliště: Brno
Kontaktovat uživatele:

Příspěvek od pavel.minarik »

to bude imho způsobeno něčím nepřístojným (api volání?), mě se to nikdy nestalo, nejlíp uděláš když mi pošleš zdrojáček a já se kouknu :)
Pavel Minarik @ Dell Latitude 7300 (bohužel moc topí, nedoporučuju)
Dony
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 29. říj 2003
Bydliště: okr. Mělník

Příspěvek od Dony »

pokud si dobre pamatuju, tak to ze je okno uplne na vrchu je ve vlastnost OnFoccus (ale uz jsem pod winama dlouho neprogramoval, tak fakt nevim jiste :? )
Obrázek Avatar tancuje, nechce se mu na záchod... :) Windows Vista je tady, řekněte "WTF" :D
Borg2of3
Začátečník
Začátečník
Uživatelský avatar
Registrován: 10. dub 2004
Bydliště: deltakvadrant
Kontaktovat uživatele:

Příspěvek od Borg2of3 »

pavel.minarik píše:to bude imho způsobeno něčím nepřístojným (api volání?), mě se to nikdy nestalo, nejlíp uděláš když mi pošleš zdrojáček a já se kouknu :)
no to je napad posilat celej zdrojacek :o) kdyz na tom programu delam pul roku :o no jinak API volani je tam fuuura.. jenze v klidu ne.. ono to funguje vpoho.. a pak to najednou nefunguje..
My jsme borg. Budete asimilováni!
AMD Athlon II X4 631, Sapphire HD 6570 Ultimate 1GB DDR3, Asus F1A75-M PRO - AMD A75, Corsair Vengeance 8GB (2x4GB) DDR3 1866, SSD OCZ Vertex 3 - 60GB, WD Green 500GB, OCZ zdroj ZS Series 550W 80 PLUS Bronze, CoolerMaster Hyper TX3, Sweex LW322 Wi-fi síťová karta PCI, CoolerMaster Elite 343 (RC-343-KKN1), Samsung SH-222AB SATA, Čtečka karet I-BOX 62w1 + USB, Microsoft Windows 7 Home Premium CZ 64bit OEM, Logitech Wireless Desktop MK320 CZ, Philips 246EL2SBH - LCD monitor 24"
pavel.minarik
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 03. čer 2003
Bydliště: Brno
Kontaktovat uživatele:

Příspěvek od pavel.minarik »

to dony: ne onFocus je když nejaký ovládací prvek (mající vlastní Handle) získá vstupní zaměření

jestli nechceš posílat zdroják tak neposílej, je mi to šumafuk
pokud máš ale spuštěné jiné aplikace, které mají taky stay-on-top okna (třeba miranda, ...), tak je teba si uvědomit, že všechny stay-on-top okna se taky můžou mezi sebou překrývat, není problém tady? (počítám, že stejně nebude)
Pavel Minarik @ Dell Latitude 7300 (bohužel moc topí, nedoporučuju)
Borg2of3
Začátečník
Začátečník
Uživatelský avatar
Registrován: 10. dub 2004
Bydliště: deltakvadrant
Kontaktovat uživatele:

Příspěvek od Borg2of3 »

pavel.minarik píše:to dony: ne onFocus je když nejaký ovládací prvek (mající vlastní Handle) získá vstupní zaměření

jestli nechceš posílat zdroják tak neposílej, je mi to šumafuk
pokud máš ale spuštěné jiné aplikace, které mají taky stay-on-top okna (třeba miranda, ...), tak je teba si uvědomit, že všechny stay-on-top okna se taky můžou mezi sebou překrývat, není problém tady? (počítám, že stejně nebude)
v tom bych rekl problem neni... otviram normalne okna exploreru.. notepad... atd... treba to nekolik hodin funguje.. nekdy celej den... a jindy par minut po spusteni je najednou program zase vzadu...a prekryje ho i notepad, kterej rozhodne nastavenej na stayontop neni... ja bych zdrojak poslal.. ono nakonec to neni nijak uzasnej program.. ale preci jen jista obava tu je... ze ho treba ukradnes :o nikdy nevis. Jinak ten program je B-panel, da se najit treba na slunecnici... ale rikam jsem amater :wink: a programuju teprve trictvrte roku. Pokud ti budu posilat zdrojak.. tak komkpletne vsechny formulare?Nebo ti bude stacit form1....?Asi ne co...
My jsme borg. Budete asimilováni!
AMD Athlon II X4 631, Sapphire HD 6570 Ultimate 1GB DDR3, Asus F1A75-M PRO - AMD A75, Corsair Vengeance 8GB (2x4GB) DDR3 1866, SSD OCZ Vertex 3 - 60GB, WD Green 500GB, OCZ zdroj ZS Series 550W 80 PLUS Bronze, CoolerMaster Hyper TX3, Sweex LW322 Wi-fi síťová karta PCI, CoolerMaster Elite 343 (RC-343-KKN1), Samsung SH-222AB SATA, Čtečka karet I-BOX 62w1 + USB, Microsoft Windows 7 Home Premium CZ 64bit OEM, Logitech Wireless Desktop MK320 CZ, Philips 246EL2SBH - LCD monitor 24"
pavel.minarik
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 03. čer 2003
Bydliště: Brno
Kontaktovat uživatele:

Příspěvek od pavel.minarik »

já jsem nevěděl co je to za software, chápu, že se Ti to nehce posílat, ale bez toho už nevím co Ti dál poradit, já jsem s tím nikdy žádnej problém neměl

teď jsem koukal na slunečnici, koukám, že je to speciální form style bez ohraničení (BorderStyle: bsNone), jak ten formulář vznikne? klasickou cestou a la Delphi nebo jej nějak vyrobíš přes API?
účastní se smyčky zpracování globálních událostí (odchyt kláves např.), předáváš korektně zprávy o události dál?
Pavel Minarik @ Dell Latitude 7300 (bohužel moc topí, nedoporučuju)
Borg2of3
Začátečník
Začátečník
Uživatelský avatar
Registrován: 10. dub 2004
Bydliště: deltakvadrant
Kontaktovat uživatele:

Příspěvek od Borg2of3 »

Je to obycejnej formular vytvorenej delfinou.. je to form1 a presne tak.. je nastavenej na bsnone a jako transparentni. A poloha je dana na form1.align:=left,right... to co nakonec vidis je Tpanel1 v kterym je vsechno nahazeny.
Jedina smycka ktera jede je tohle:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
GetCursorPos(pozice);
kurzorx:=pozice.x;
kurzory:=pozice.y;

if (kurzorx<form1.left-15) and (form1.width=51) or (kurzory>panel1.Height+20) then form1.Width:=1;
if (kurzorx=form1.Left) and (form1.width=1) and (kurzory>20) and (kurzory<panel1.Height) then begin form1.Width:=51;end;
if (kurzorx>form1.left+65) and (form1.width=51) and (form1.align=alleft) or (kurzory>panel1.Height+20) then form1.Width:=1;

end;

ta mi zajistuje, ze se ten program schova a zase zobrazi pri prejeti mysi nad nim... stejne jak se tomu deje u panelu nastroju ve win. No jinak ted jak ti to pisu se to stalo zase.. a vsiml jsem si, ze kratce po startu delphi.. ale fakt nechapu proc.. a jindy delphi mit otevreny nemusim..
Odchyt klaves nemam...
A ostatni funkce se vyvolavaji az pri kliknuti atd...

mozna je asi problem primo v tomhle Timer1Timer(Sender: TObject); co?
My jsme borg. Budete asimilováni!
AMD Athlon II X4 631, Sapphire HD 6570 Ultimate 1GB DDR3, Asus F1A75-M PRO - AMD A75, Corsair Vengeance 8GB (2x4GB) DDR3 1866, SSD OCZ Vertex 3 - 60GB, WD Green 500GB, OCZ zdroj ZS Series 550W 80 PLUS Bronze, CoolerMaster Hyper TX3, Sweex LW322 Wi-fi síťová karta PCI, CoolerMaster Elite 343 (RC-343-KKN1), Samsung SH-222AB SATA, Čtečka karet I-BOX 62w1 + USB, Microsoft Windows 7 Home Premium CZ 64bit OEM, Logitech Wireless Desktop MK320 CZ, Philips 246EL2SBH - LCD monitor 24"
pavel.minarik
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 03. čer 2003
Bydliště: Brno
Kontaktovat uživatele:

Příspěvek od pavel.minarik »

možná jo, je to dost nestandardní řešení,
zkus to předělat na detekci najetí myší přes onMouseMove, přesně teď nevím jak, chce se to v tom porejpat
takhle to rozhodně nemá standardní panel woken vyřešený

tomu timeru je dobrý se pokud to jde vyhnout - může se totiž stát, že systém je lehce zabržděn a když se začne vykonávat znovu tato procedura, tak ještě dobíhá vykonávání toho samýho před tím

takže tam ještě zařiď aby ta metoda timeru byla kritická sekce a nemohlo se stát, že se do ní vleze ještě před dokončením jednoho průchodu - bude Ti k tomu stačit jeden globální Boolean
Pavel Minarik @ Dell Latitude 7300 (bohužel moc topí, nedoporučuju)
Borg2of3
Začátečník
Začátečník
Uživatelský avatar
Registrován: 10. dub 2004
Bydliště: deltakvadrant
Kontaktovat uživatele:

Příspěvek od Borg2of3 »

No je to nestandartni no.. to souhlasim.. ale nenapadl me jinej zpusob jak dosahnout toho.. aby se program schoval kdyz mam mys az v urcity vzdalenosti od formulare... ale zkusim s tim neco vymyslet... dik
jo.. a zjistil jsem, ze kdyz vyvolam nejakou funkci spojenou s API, tak se to zase vrati do stayontop :D
My jsme borg. Budete asimilováni!
AMD Athlon II X4 631, Sapphire HD 6570 Ultimate 1GB DDR3, Asus F1A75-M PRO - AMD A75, Corsair Vengeance 8GB (2x4GB) DDR3 1866, SSD OCZ Vertex 3 - 60GB, WD Green 500GB, OCZ zdroj ZS Series 550W 80 PLUS Bronze, CoolerMaster Hyper TX3, Sweex LW322 Wi-fi síťová karta PCI, CoolerMaster Elite 343 (RC-343-KKN1), Samsung SH-222AB SATA, Čtečka karet I-BOX 62w1 + USB, Microsoft Windows 7 Home Premium CZ 64bit OEM, Logitech Wireless Desktop MK320 CZ, Philips 246EL2SBH - LCD monitor 24"
Borg2of3
Začátečník
Začátečník
Uživatelský avatar
Registrován: 10. dub 2004
Bydliště: deltakvadrant
Kontaktovat uživatele:

Příspěvek od Borg2of3 »

pavel.minarik píše: takže tam ještě zařiď aby ta metoda timeru byla kritická sekce a nemohlo se stát, že se do ní vleze ještě před dokončením jednoho průchodu - bude Ti k tomu stačit jeden globální Boolean
Jak jsi to myslel s tou globalni Boolean?Vrta mi to hlavou
My jsme borg. Budete asimilováni!
AMD Athlon II X4 631, Sapphire HD 6570 Ultimate 1GB DDR3, Asus F1A75-M PRO - AMD A75, Corsair Vengeance 8GB (2x4GB) DDR3 1866, SSD OCZ Vertex 3 - 60GB, WD Green 500GB, OCZ zdroj ZS Series 550W 80 PLUS Bronze, CoolerMaster Hyper TX3, Sweex LW322 Wi-fi síťová karta PCI, CoolerMaster Elite 343 (RC-343-KKN1), Samsung SH-222AB SATA, Čtečka karet I-BOX 62w1 + USB, Microsoft Windows 7 Home Premium CZ 64bit OEM, Logitech Wireless Desktop MK320 CZ, Philips 246EL2SBH - LCD monitor 24"
pavel.minarik
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 03. čer 2003
Bydliště: Brno
Kontaktovat uživatele:

Příspěvek od pavel.minarik »

zadefinuju si globálně viditelnou proměnnou typu Boolean, třeba v private sekci příslušného formuláře a vždycky na začátku metody obsluhující onTimer událost udělám tohle:

if Promenna
then begin
{nedelej nic}
end else
begin
Promena:= true;
{vlastni obsluzny kod}
Promenna:= false;
end;
Pavel Minarik @ Dell Latitude 7300 (bohužel moc topí, nedoporučuju)
Borg2of3
Začátečník
Začátečník
Uživatelský avatar
Registrován: 10. dub 2004
Bydliště: deltakvadrant
Kontaktovat uživatele:

Příspěvek od Borg2of3 »

Uz chapu :oops: jsem to tam hodil, tak to budu testovat a uvidim :) ale momentalne si od toho moc neslibuju, protoze za celej dnesek se program choval slusne :roll:
Mockrat diky za radu. :P
My jsme borg. Budete asimilováni!
AMD Athlon II X4 631, Sapphire HD 6570 Ultimate 1GB DDR3, Asus F1A75-M PRO - AMD A75, Corsair Vengeance 8GB (2x4GB) DDR3 1866, SSD OCZ Vertex 3 - 60GB, WD Green 500GB, OCZ zdroj ZS Series 550W 80 PLUS Bronze, CoolerMaster Hyper TX3, Sweex LW322 Wi-fi síťová karta PCI, CoolerMaster Elite 343 (RC-343-KKN1), Samsung SH-222AB SATA, Čtečka karet I-BOX 62w1 + USB, Microsoft Windows 7 Home Premium CZ 64bit OEM, Logitech Wireless Desktop MK320 CZ, Philips 246EL2SBH - LCD monitor 24"
Angel6
Nováček
Nováček
Uživatelský avatar
Registrován: 06. led 2006

Příspěvek od Angel6 »

Ahoj mam taky problem s stayontop ale ponekud jiny kdyz mam ty dve aplikace ktere maji tyto vlastnosti stayontop na stejne urovni tak se prekryvaji jak bylo receno, nevite nekdo jak udelat aby ta jedna byla vys s vetsi prioritou, nejak nastavit urovne, atd.?

diky
pavel.minarik
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 03. čer 2003
Bydliště: Brno
Kontaktovat uživatele:

Příspěvek od pavel.minarik »

Angel6 píše:Ahoj mam taky problem s stayontop ale ponekud jiny kdyz mam ty dve aplikace ktere maji tyto vlastnosti stayontop na stejne urovni tak se prekryvaji jak bylo receno, nevite nekdo jak udelat aby ta jedna byla vys s vetsi prioritou, nejak nastavit urovne, atd.?

diky
bohuzel, windows rozlišují normální úroveň a stay-on-top úroveň, v každé z těch úrovní se překrývají
jediná možnost jak to obechcat je prohlídnout si win32API a hledat nějakou funkci která umí zjišťiovat překryv oken, ten testovat a vždycky to svý onko poslat plně nejvýš přenesením do popředí (nějak takto by to mohlo jít)
Pavel Minarik @ Dell Latitude 7300 (bohužel moc topí, nedoporučuju)
Angel6
Nováček
Nováček
Uživatelský avatar
Registrován: 06. led 2006

Příspěvek od Angel6 »

pavel.minarik píše:...
bohuzel, windows rozlišují normální úroveň a stay-on-top úroveň, v každé z těch úrovní se překrývají...
no a pouzitim nejake jine fce, procedury? zminovalo se tu OnFoccus, to nevim co je ani jak to pouzit, neumely by jste to nejak vysvetlit? a popr. jestly by to neslo?
Odpovědět

Zpět na „Programování a web“