PDA

Ver la Versión Completa : CheckBox ReadOnly y Ctrl3D


elrayo76
14-05-2021, 03:47:51
Buenas gentes

Alguno sabe como se puede hacer para que un control CheckBox sea ReadOnly. No quiero que se ponga gris como indican en muchos foros, solo quiero que quede como el ReadOnly en los TEdit por ejemplo.

Estuve probando con las funciones "SetWindowLong" y "GetWindowLong" pero no funciona y por lo que tengo entendido depende mucho del SO que se tenga instalado.

Además no puedo sacarle el estilo 3D con la propiedad Ctrl3D, esta no funciona por algún error que tiene desde versiones anteriores del lenguaje y que no han solucionado.

Para quien no sabe el control CheckListbox pasa lo mismo que no tiene propiedad ReadOnly y hay que ponerlo grisado y no queda del todo lindo.

Estoy usando Windows 10 Professional con RAD Studio 10.4.1

Saludos,
El Rayo

olbeup
14-05-2021, 10:12:27
Hola elrayo76

En el evento OnClick del componente puedes emular el ReadOnly jugando con el Tag del componente.

procedure TForm2.CheckBox1Click(Sender: TObject);
begin
if Boolean(CheckBox1.Tag) then
begin
CheckBox1.Checked := False;
Exit;
end;
...
...
...
end;

Es una opción.
También te puedes fabricar tu propio componente TCheckBox, etc.., y le añades la propiedad ReadOnly, pero eso es otra historia.

Un saludo.

elrayo76
16-05-2021, 01:27:23
Gracias por responder olbeup. Lo que dices puede ser una opción y lo de diseñar mi componente con la opción lo he pensado.


Lo que busque es como he usado en otros componentes el método Perform, pero no lo encuentro y no veo nada por internet que hable del mismo en los TCheckBox. También pensé en usar los mensaje de Windows que se usan para otras tantas cosas (SendMessage) pero no encuentro nada que me haga ReadOnly al componente.


Igual código lo voy a probar porque puede que sirva.



Saludos
El Rayo