Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Estructura Case sobre el valor de un campo string (https://www.clubdelphi.com/foros/showthread.php?t=38882)

amadis 03-01-2007 13:22:13

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

seoane 03-01-2007 14:03:06

El case en Pascal/Delphi no admite valores de tipo string.

chileno 03-01-2007 16:29:10

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:cool:

amadis 03-01-2007 18:45:50

¿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;

dec 03-01-2007 18:54:16

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".

seoane 03-01-2007 19:01:17

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

amadis 04-01-2007 02:56:11

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!


La franja horaria es GMT +2. Ahora son las 07:08: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