Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   DbGrid con un campo ajeno a la tabla (https://www.clubdelphi.com/foros/showthread.php?t=74448)

EgyEgy 21-06-2011 05:55:16

DbGrid con un campo ajeno a la tabla
 
Necesito desplegar una columna en un DBgrid, pero esta no tiene asignado un campo de la tabla relacionada. Ademas dicha columna debe permitirme seleccionar uno de dos valores.

Ya utilice la propiedad PickList, pero no me despliega la lista cuando lo ejecuto, y tambien el valor de ButtonStyle es cbsAuto, sin tener el resultado que quiero.

¿alguien sabrá si puedo realizar esto con un dbgrid o algun otro componente?

ecfisa 21-06-2011 10:24:09

Hola EgyEgy.

Para hacerlo con los componentes de Delphi, podes valerte de un TComboBox. Agregá un ComboBox y asigna sus items en diseño o como en el ejemplo por código.
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  ComboBox1.Clear;
  ComboBox1.Items.Add('Opción uno');
  ComboBox1.Items.Add('Opción dos');
  //ComboBox1.Items.Add('Opcion tres');
  // ...
  ComboBox1.Color:= DBGrid1.Color;
  ComboBox1.Visible:= False;
end;

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if (gdFocused in State)and(Column.FieldName = 'TuCampo') then
  begin
    ComboBox1.ItemIndex:= -1; // 0:muestra 1er item, 1: el 2do...
    ComboBox1.Left:= Rect.Left + TDBGrid(Sender).Left + 2;
    ComboBox1.Top:= Rect.Top + TDBGrid(Sender).Top +2;
    ComboBox1.Width:= Rect.Right - Rect.Left;
    ComboBox1.Height:= Rect.Bottom - Rect.Top;
    ComboBox1.Visible:= True;
  end
  else
    ComboBox1.Visible:= False;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  with DBGrid1.DataSource.DataSet do
  begin
    Edit;
    FieldByName('TuCampo').AsString:= ComboBox1.Text;
    Post; // si queres que se almacene aún sin movilizarte en el DBGrid
  end;
end;
...

Saludos.


La franja horaria es GMT +2. Ahora son las 23:21:41.

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