1. Al botón OK ponle su propiedad ModalResult igual a mrOK
2. Traslada el código que tienes en el OnClick del botón al evento OnCloseQuery.
3. En ese evento checas la propiedad ModalResult del formulario para saber si se dió clic en OK:
Código Delphi
[-]
if ModalResult = mrOk then
begin
end;
De esta manera, el formulario se cerrará si se oprime el botón Cancel o el botón X en la barra de título o con Alt+F4. Ahora bien, ShowModal (con lo que abres el formulario) es una función que regresa el valor de ModalResult. Entonces, desde donde abres la ventana checas ese valor y procedes a asignar derechos
sólo en caso de que ese valor sea mrOK:
Código Delphi
[-]
if PasswordDlg.ShowModal = mrOk then
begin
end
else
begin
end;
La única otra forma de cerrar la ventana de password es oprimiendo el botón OK, y eso sólo si los datos fueron correctos.
En otras palabras, te propongo un enfoque distinto:
Deja que el cuadro de diálogo del password haga exclusivamente lo que tiene que hacer:
Verificar si los datos son o no correctos
Y pasa la parte de asignación de derechos al c'odigo que abre ese formulario.
// Saludos