Trzeba mu na zdarzeniu onclick dodac procedure sprawdzającą warunek, jeżeli nie będzie spełniony to wstawiamy co ma się dziać, np. pojawia sie okno z informacja co jest nie tak:
if not warunek then
begin
MessageDlg('Coś źle wpisałeś', mtInformation, [mbOK],0);
// czyli poinformowac usera co źle zrobił
Form2.ModalResult:=mrNone;
// narzucenie wyniku operacji, a Form2 to nazwa formularza ktory zawiera tenze przycisk
else
// tu wlasciwie nie musi nic byc ale moze :)
end;
mozna po prostu ustawic we wlasciwosciach BitBtn
modal result - mrNone
tylko ze wtedy BitBtn nigdy nie bedzie zamykal jesli sami tego nei napiszemy