Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-09-2016
LACV LACV is offline
Miembro
 
Registrado: oct 2015
Posts: 80
Poder: 9
LACV Va por buen camino
Unhappy mostrar si o no según valor booleano

buenas tardes lo que sucede es que tengo un campo con valor booleano y estoy mostrando los datos en un dbgrid pero no quiero que aparezca 0 ni 1 en la tabla como hago para que cuando se 0 muestre no y cuando sea 1 muestre si les agradezco de antemano.
Responder Con Cita
  #2  
Antiguo 25-09-2016
Avatar de BDWONG
BDWONG BDWONG is offline
Miembro
NULL
 
Registrado: nov 2013
Posts: 113
Poder: 11
BDWONG Va por buen camino
Hola puedes hacer una función que pida por parámetro un booleano y retorne SI o NO
Código Delphi [-]
function BoolToStr(v:Boolean):string;
begin
  if v then Result:='SI'
  else Result:='N0';
end;

begin
   Writeln(BoolToStr(FALSE));
   Writeln(BoolToStr(TRUE));
   Readln;
end.
Responder Con Cita
  #3  
Antiguo 25-09-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Si pero eso no alcanza. Tiene que usar OwnerDraw y decirle al DBGrid que cuando toque el campo booleano, el valor lo obtenga llamando a esa funcion

No me acuerdo exactamente de los nombres, pero basicamente agregas un manejador a un evento de los que pintan (para el DBGrid deberia ser DrawColumCell) y le dices que pinte todas por defecto, usando el metodo DefaultDrawCollumnCell menos la columna que queres que salga "SI/NO"; para esa columna, usas una funcion como la de BDWONG

Si buscas por el foro ya fue contestado varias veces
Responder Con Cita
  #4  
Antiguo 25-09-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola LACV.

Dos opciones, una usando el evento OnDrawColumnCell:
Código Delphi [-]
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
const
  SINO : array[0..1] of String = ('NO', 'SI');
var
  gr: TDBGrid;
  R : TRect;
  sw: LongWord;
begin
  if Column.FieldName = 'Campo_0_1' then
  begin
    case Column.Alignment of
      taLeftJustify  : sw := sw or DT_LEFT;
      taRightJustify : sw := sw or DT_RIGHT;
      taCenter       : sw := sw or DT_CENTER;
    end;
    R := Rect;
    gr := TDBGrid(Sender);
    gr.Canvas.FillRect(R);
    DrawText(gr.Canvas.Handle, PChar(SINO[Column.Field.AsInteger]), -1, R, sw);
  end;
end;

Otra usando el evento OnGetText del campo en cuestión:
Código Delphi [-]
...
procedure TForm1.FormCreate(Sender: TObject);  {1}
begin
  DataSet.FieldByName('Campo_0_1').OnGetText := DataSetCampo_0_1GetText;
end;

procedure TForm1.DataSetCampo_0_1GetText(Sender: TField; var Text: String;
  DisplayText: Boolean);
const
  SINO : array[0..1] of String = ('NO', 'SI');
var
  v: Integer;
begin
  v := TField(Sender).AsInteger;
  if v in [0, 1] then
    Text := SINO[TField(Sender).AsInteger];
end;

...

procedure TForm1.FormDestroy(Sender: TObject); {2}
begin
  DataSet.FieldByName('Campo_0_1').OnGetText := nil;
end;
("Campo_0_1" sería el nombre del campo de tu tabla que almacena los valores enteros 0 y 1)

En la segunda opción podes ahorrarte los eventos {1} y {2} (y su código) si en tiempo de diseño creas los campos persistentes en el DataSet y asignas el evento OnGetText al campo desde el Object Inspector.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Cambiar color de QRDBText según su valor Voltimer Impresión 2 03-07-2015 19:10:53
Boton segun valor de un combobox Litnoiz Varios 3 14-03-2010 00:59:53
Incrementar campo según el valor de otro subzero Firebird e Interbase 3 06-08-2008 22:41:52
Consulta que muestre Si o No segun el valor Cecil SQL 4 17-01-2008 01:49:38
mostrar o no mostrar un control en un DBCTRLGRID segun la fila gesteban OOP 0 10-11-2005 18:21:11


La franja horaria es GMT +2. Ahora son las 17:45:39.


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