Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   CheckBox ReadOnly y Ctrl3D (https://www.clubdelphi.com/foros/showthread.php?t=95195)

elrayo76 14-05-2021 03:47:51

CheckBox ReadOnly y Ctrl3D
 
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.
Código Delphi [-]
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


La franja horaria es GMT +2. Ahora son las 14:43:12.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi