[Delphi] zamknięcie formy poprzez Alt-F4

0

Jak zablokować zamknięcie formy poprzez Alt-F4?
Nie wiem czy to bedzie jakaś różnica ale pracuję w NT (XP)

[stuk]

0

FAQ!

OnCloseQuery
CanClose ustaw na False

0

Dzięki ale nie o to mi chodziło
Znalazłem to juz wcześniej w FAQ.
Tylko że to rozwiązanie jest pomyślane w ten sposób aby w ogóle nie można było zamknąć okna, a ja chcę aby to było zablokowane tylko przez Alt-F4.
Np. jak masz w oknie logowania.
Po podaniu logina i hasła okno zostanie zamknięte. Ale trzeba się zabezpieczyć aby nikt nie wszedł do programu klikając przez Alt-F4.
O coś takiego mi chodzi.

[stuk]

0

Ustawiaj sobie jakąś zmienną globalną. Jeżeli klikniesz OK to wtedy ustawiasz ją na True i później w OnCloseQuery CanClose:=Zmienna;

0

Patrz no!!!
Takie proste rozwiązanie a nie pomyślałem o nim.
A czy wie ktoś może czy idzie przechwycić skrót Alt-F4 w zdarzeniu OnKeyPress formy? I co by wtedy dać?
Wiem że po nacisnięciu Alt-F4 są generowane dwa znaki.
Pierwszy jest znakiem pustym (#0) a drugi to #107.
Co tam by wpisać trzeba aby przechwycić i zablokować?

[cya]

0

Action:=nil; <<?
Application.Run; <<?

Sorry nie mam Delphi przy sobie ;)

0

Niestety ale Action := nil nie działa.
A z tą aplikation.run to nie za bardzo jarzę?

[stuk]

0

albo wstaw TActionMenager i utwórz nową akcję w skrócie klawiszowym Alt+F4, akcja:

Action:=nil;
albo
Application.Run;

mam nadzieję, że wiesz o co mi chodzi... ;)

0

Teraz jarzę.
Spoko
Wielkie dzięki wszystkim

[hurra] [cya]

0

A nie prościej zrobić w onkeydown:

if key=VK_F4 then
key:=0;

:)

0

Robisz to tak: na stronie forum jest duzy przycisk SZUKAJ. Naciskasz, wpisujesz w okienko 'Alt+F4'. I co? wyskakuja 3 posty, kazdy na ten temat. Rozwiazanie zaproponowane przeze mnie (troche lepsze niz to thenklesa) to:
Ustaw KeyPreview formy na True i daj w OnKeyDown:
if (Key=VK_F4) and (ssAlt in Shift) then Key:=0;

I pochodzi z watku:
http://www.4programmers.net/forum/viewtopic.php?id=10516

0

ja jak blokuje alt+F4 zeby nikt nie wyłączył formy wale ostro i blokuje wszystkie skróty klawiaturowe masz kodzik jak zablokowac:
SystemParametersInfo(97,Word(False),@l,0); potem dalesz na true jak chcesz aby działały te skróty !!!! [diabel]

0

Dzięki wielkie Adamie.
To prawdopodobnie nie raz mi się przyda :-)

[browar] [cya]

0

ja jak blokuje alt+F4 zeby nikt nie wyłączył formy wale ostro i blokuje wszystkie skróty klawiaturowe masz kodzik jak zablokowac:
SystemParametersInfo(97,Word(False),@l,0); potem dalesz na true jak chcesz aby działały te skróty !!!! [diabel]

Tylko niestety nie działa to na systemach opartych na technologii NT.

0

Szkoda bo w tym momencie już odpada wykorzystanie tego kodu na większą skalę jeśli nie jesteś pewien czy program będzie wykorzystywany na nt czy nie.

;-|

0

Tylko niestety nie działa to na systemach opartych na technologii NT.

Na NT trzeba użyć Hook niskiego poziomu na klawiaturę. Już o tym kiedyś pisałem przy problemie z klawiszami windowsa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1