Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-09-2008
cyber_zero cyber_zero is offline
Miembro
 
Registrado: abr 2008
Posts: 22
Poder: 0
cyber_zero Va por buen camino
Talking duda algo tonta

hola, buenas tardes
Soy algo nuevo en esto de delphi y tengo un problema con un if, no encuentro como hacerlo, este es el codigo que estoy usando y tambien el error que me produce, gracias de antemano

if Panel1.Color:=cl3DLight
then Panel3.Color:=clRed;

[Error] Unit1.pas(74): Type of expression must be BOOLEAN
Responder Con Cita
  #2  
Antiguo 14-09-2008
Avatar de DarkMan
DarkMan DarkMan is offline
Miembro
 
Registrado: jul 2006
Posts: 102
Poder: 18
DarkMan Va por buen camino
Prueba con
Código Delphi [-]
if Panel1.Color=cl3DLight then Panel3.Color:=clRed;
__________________
"La recompensa de una buena acción está en haberla hecho"
Responder Con Cita
  #3  
Antiguo 15-09-2008
cyber_zero cyber_zero is offline
Miembro
 
Registrado: abr 2008
Posts: 22
Poder: 0
cyber_zero Va por buen camino
Talking gracias Dark Man

ya me estaba volviendo loco por no saber que estaba mal jajajajaja y bueno ya que me anime a hacer mis preguntas tontas, me sale este error con el siguiente codigo

se supone que la expresion debe hacer esto, si panel17 es rojo y panel18 es rojo entonces panel7 es rojo

Delphi (-)

if Panel17.Color=clRed and Panel18.Color=clRed then Panel7.Color:=clRed;

el error que me da es

[Error] Unit1.pas(121): Incompatible types

gracias
Responder Con Cita
  #4  
Antiguo 15-09-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Código Delphi [-]
if (Panel17.Color = clRed) and (Panel18.Color = clRed) then
Panel7.Color = clRed;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 15-09-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Que viejo me me estoy volviendo, ya ni me acuerdo, creo que es asi:
Código Delphi [-]
if (Panel17.Color = clRed) and (Panel18.Color = clRed) then
Panel7.Color:= clRed;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #6  
Antiguo 15-09-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Otro ejemplito con case.
Estoy practicando para no olvidarme de esto
Código Delphi [-]
 case Panel17.Color and Panel18.Color of
 clRed: panel7.Color:= clRed;
 end;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #7  
Antiguo 15-09-2008
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
Código Delphi [-]
 case Panel17.Color and Panel18.Color of  clRed: panel7.Color:= clRed;  end;

Saludos
Creo q faltan los parentesis..
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #8  
Antiguo 16-09-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Cita:
Empezado por Delfino Ver Mensaje
Creo q faltan los parentesis..
No creas amigo, no creas.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #9  
Antiguo 16-09-2008
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por Caral Ver Mensaje
Hola
Otro ejemplito con case.
Estoy practicando para no olvidarme de esto

Código Delphi [-]
 case Panel17.Color and Panel18.Color of
 clRed: panel7.Color:= clRed;
 end;

Saludos
Hola Carlos.

El problema con ese ejemplo es que el Case no está preguntando si tanto Panel17.Color como Panel18.Color tienen un valor de clRed, sino que se está haciendo un "And de bits" con los dos valores enteros.

Mira este ejemplo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  Case 7 And 11 Of
    3 : Showmessage (
      '7 y 11, ambos, tienen activos (en "1") los bits que ' +
      'forman el entero 3:'#13#13'...00000111 (7)'#13 +
      '    And'#13'...00001011 (11)'#13 +
      '---------------------'#13'...00000011 (3)');
  End;
end;

Aquí el resultado:


En conclusión, no podemos pedirle a Case que nos determine si dos expresiones cualesquiera (Panel17.Color y Panel18.Color, en este caso) son iguales a una tercera (clRed).

Saludo And Abrazo.

Al González.
Responder Con Cita
  #10  
Antiguo 16-09-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Es curioso Al Pero hice las comparaciones y siempre me sirvió.
Pongo 3 paneles y un botón.
Si pongo los dos primeros en rojo al presionar el botón este se pone en rojo también, pero si alguno de los primeros no esta en rojo el tercero no se pone en rojo tampoco.
Para estar mas seguro adicione mas paneles e hice la comparación sin orden especifico y también lo hizo.
Por lo tanto a mi si me hace la comparación.
Estoy seguro de que estoy equivocado, pero mi delphi me quiere mucho y siempre hace lo que le pido.
Saludos Amigo
Pd: Entendí mal tu ultima estrofa.
Lo que se pretende no es comparar los dos primeros con el tercero, es: Si el primero y segundo son rojos el tercero se pondrá en rojo también, no hay comparaciones.
__________________
Siempre Novato

Última edición por Caral fecha: 16-09-2008 a las 18:45:30.
Responder Con Cita
  #11  
Antiguo 17-09-2008
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Hola Carlos.

Como comenté, la tercera "expresión" es clRed. Un case siempre compara.

En cuanto a que sí te funciona, no es de extrañarse mucho, simplemente te ha tocado que los bits "coincidan", pero es muy arriesgado y desaconsejable hacerlo de esa manera. Con otras constantes de color podría fallarte.

Estoy en un café Internet sin Delphi a la mano para ver el patrón de bits de clRed y otras constantes de color que pudiera tomar como ejemplo, pero reafirmo lo dicho en mi comentario de arriba.

Saludos.

Al.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Es algo importante ejecución de .exe y algo más ayúdenme kakesoft Varios 5 02-05-2005 10:01:14
duda tonta con gdb acrophet Conexión con bases de datos 14 19-02-2004 20:26:35
Pregunta tonta Delphos Varios 10 20-01-2004 12:44:44
Pregunta tonta... CFPA86 Varios 3 04-12-2003 19:46:43
duda tonta :P acrophet Varios 2 01-12-2003 11:12:20


La franja horaria es GMT +2. Ahora son las 09:18:15.


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
Copyright 1996-2007 Club Delphi