Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-01-2007
amadis amadis is offline
Miembro
 
Registrado: may 2005
Ubicación: San José, Colón, Entre Ríos, Argentina
Posts: 315
Poder: 20
amadis Va por buen camino
Red face Estructura Case sobre el valor de un campo string

Que tal gente.

Estoy tratando de, en el evento DrawColumnCell de un DBGrid, caputurar el valor del campo 'ESTADO' para luego dependiendo de eso pintar las filas de distintos colores.

Para ello pensé en un Case como el siguiente

Código Delphi [-]

case DataSource.DataSet.FieldByName('estado').Value
    OF

       LIBRE:
             DBGrid1.Canvas.Brush.Color:=$438811;
             DBGrid1.Canvas.FillRect(Rect);
             DefaultDrawColumnCell(Rect, DataCol, Column, State);

      OCUPADO: // otro color

     FUERASERVICIO: //y OTRO MAS
END;

De esa forma me da UNDECLARED IDENTIFIER : LIBRE, OCUPADO, FUERASERVICIO

Pensé luego ponerle 'comilla' a cada valor deseado y luego da Incompatible types String and Integer. ¿por qué integer¿ si el valor del campo que tengo en cuestión es un String?

Si lo hago con varias estructuras If funciona pero lo correcto sería utilizar case
Responder Con Cita
  #2  
Antiguo 03-01-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
El case en Pascal/Delphi no admite valores de tipo string.
Responder Con Cita
  #3  
Antiguo 03-01-2007
chileno chileno is offline
Miembro
 
Registrado: jun 2005
Posts: 121
Poder: 19
chileno Va por buen camino
hola amadis....
lo que puedes hacer :


Código Delphi [-]
var estado : string;
estado := DataSource.DataSet.FieldByName('estado').Value;
case estado[1] of
 'L'   : begin
           ShowMessage('LIBRE');
         end;
 'O'   : begin
           ShowMessage('OCUPADO');
         end;
 'F'   : begin
           ShowMessage('FUERASERVICIO');
         end;
 end;

espero que te sirva
Responder Con Cita
  #4  
Antiguo 03-01-2007
amadis amadis is offline
Miembro
 
Registrado: may 2005
Ubicación: San José, Colón, Entre Ríos, Argentina
Posts: 315
Poder: 20
amadis Va por buen camino
¿y esto que es?

Estos ejemplos que da la ayuda ¿no estan trabajando con string?

Código Delphi [-]
// Other examples of case statements:

case MyColor of
  Red: X := 1;
  Green: X := 2;
  Blue: X := 3;
  Yellow, Orange, Black: X := 0;
end;
case Selection of
  Done: Form1.Close;
  Compute: CalculateTotal(UnitCost, Quantity);
else
  Beep;
end;
Responder Con Cita
  #5  
Antiguo 03-01-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Estos ejemplos que da la ayuda ¿no estan trabajando con string?
No se ve ahí por ningún sitio el tipo de "Done", de "Compute"... ni de "Selection"... En cuanto a los colores no son "strings".
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 03-01-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por amadis
Estos ejemplos que da la ayuda ¿no estan trabajando con string?
Pues no, tiene toda la pinta de que se trata de una enumeración, en otra parte de la ayuda se declara un tipo como este, puede que se este refiriendo a el.
Código Delphi [-]
  type TColors = (Red, Blue, Green, Yellow, Orange, Purple, White, Black);

Por otra parte en pascal las cadenas siempre van entre comillas, así que de ninguna manera los nombres de los colores podrían haber sido cadenas
Responder Con Cita
  #7  
Antiguo 04-01-2007
amadis amadis is offline
Miembro
 
Registrado: may 2005
Ubicación: San José, Colón, Entre Ríos, Argentina
Posts: 315
Poder: 20
amadis Va por buen camino
Gracias por todo!

Gracias a todos!

crearé una instruccion que cargue para cada estado un numero correspondiente a el en una variable

y trabajaré con ese numero!
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
Igualar campo STRING con campo MEMO en una SQL ciscu SQL 2 19-01-2006 10:05:23
Valor nulo en un string ElDioni Conexión con bases de datos 5 10-11-2005 09:29:57
Case extraño al actualizar un campo. Kashmir Firebird e Interbase 3 06-11-2005 14:18:25
UPDATE de un campo dependiendo del valor de un campo de otra tabla Javi2 SQL 5 18-04-2005 16:35:05
informacion sobre estructura de tablas paradox e indice px chuley Tablas planas 2 06-04-2005 03:42:37


La franja horaria es GMT +2. Ahora son las 03:37:19.


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