Hola,
Pues lo más probable es que la variable "principal" no contenga una instancia válida del objeto que se espera. ¿De dónde sale esa variable "principal"? ¿Dónde se declara? Por otro lado, parece que podrías probar algo como esto: en lugar de usar la variable "principal", usa "self".
Código Delphi
[-]
procedure Tprincipal.ToolButton20Click(Sender: TObject);
begin
toolbutton16.Visible:=true;
toolbutton20.Visible:=false;
self.BorderStyle:=bssingle;
end;
Y suerte...