Delphi - Problemas con el TCheckbox

 
Vista:

Problemas con el TCheckbox

Publicado por Misael (51 intervenciones) el 10/02/2003 05:30:18
Estoy realizando una practica que busca un archivo y al encontrarlo captura los atributos con el filegetattr, y durante ese proceso comparo el valor que es capturado , y con este determino cuales son los checkbox que activo, que identificara los atributos que poseen ese archivo. Posteriormente he creado en el Evento onclick de cada checkbox un calculo cada vez que presiono algunos de ellos .

el problemas radica que cuando localizo el archivo , y capturo los atributos para comparar el evento onclic de esos checkbox se activa, y cuando voy hacer los calculos en la forma, se me altera , pues ya previamente han realizado la operacion.

aqui anexo un codigo de ejemplo para que se entiende mejor el problema:

Var
TForm:Form;
Atributo:Integer;
procedure btnLocalizar(Sender:TObject);
Begin

if FileGetAttr('c:\msdos.sys')=faReadOnly Then
chkReadOnly.checked:=True
Else
if FileGetAttr('c:\msdos.sys')=faHidden Then
chkHidden.checked:=True;
Atributo:=FileGetAttr('c:\msdos.sys');
end;

procedure chkHiddenClick(Sender:TObject);
Begin
if chkHidden.checked Then
Atributo:=Attributo + faHidden
Else
Atributo:=Atributo - faHidden;

end;
procedure btnAceptar(Sender:TObject),
Begin
FilesetAttr('c:\msdos.sys',Atributo);

end;

Por favor le agradecer su respuesta, ya que intentado varias formas para intentar resolver el problema que tengo con el codigo que tengo dentro de los eventos onclick de chekbox y no he podido , ya que no he entiendo por que se activa cuando los activos en el momento de comparar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problemas con el TCheckbox

Publicado por Diego Romero (636 intervenciones) el 10/02/2003 20:03:09
Como yo lo veo en el código que has posteado no haces nada cuando la condición es falsa para un CheckBox en particular, por ejemplo:
if FileGetAttr('c:\msdos.sys')=faReadOnly Then
chkReadOnly.checked:=True // pone la marca ¿cómo estaba antes?
Else
if FileGetAttr('c:\msdos.sys')=faHidden Then // ¿y chkReadOnly no debería perder la marca?
Desde mi punto de vista deberías hacer algo como esto:

chkReadOnly.checked:=FileGetAttr('c:\msdos.sys')=faReadOnly;
chkHidden:=FileGetAttr('c:\msdos.sys')=faHidden;

para inicializar todos los CheckBox.
Además Atributo debería ser de tipo Byte y no Integer.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar