Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   tomar una parte de un Picklist en un dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=79957)

Willo 23-08-2012 19:26:42

tomar una parte de un Picklist en un dbgrid
 
Hola a todos...

Tengo un dbgrid en D7 y defini un picklist para una columna, hay alguna forma de poner en el campo, solo una parte del valor que se selecciona?

Gracias de antemano

Cañones 24-08-2012 00:47:58

Cita:

Empezado por Willo (Mensaje 440466)
Hola a todos...

hay alguna forma de poner en el campo, solo una parte del valor que se selecciona?

Gracias de antemano

Podés citar un ejemplo, porque no logro entender.

ecfisa 24-08-2012 05:43:09

Cita:

Empezado por Willo (Mensaje 440466)
Tengo un dbgrid en D7 y defini un picklist para una columna, hay alguna forma de poner en el campo, solo una parte del valor que se selecciona?

Hola Willo.

La clase TStrings, clase a la que pertenece la propiedad PickList, no posee evento alguno para poder detectar el cambio, por lo tanto hay que buscar por otro lado quién nos avise. Un candidato con buena chance es el evento OnSetText del TField correspondiente a la columna que tiene asignado el PickList.

Para el ejemplo, supongamos que las cadenas almacenadas en el TString son: 'Item 01', 'Item 02',..., 'Item 09' y queremos que al seleccionar un item del PickList nos deje en el campo sólo los dos últimos caracteres: '01', '02', ...'09'.
Lo que tendríamos que hacer en este caso, es despreciar los primeros 5 caracteres: 'Item ', entonces vamos al ejemplo:

Código Delphi [-]
type
   TForm1 = class(TForm)
   ...
   private
     procedure DataSetCampoSetText(Sender: TField; const Text: String);
   public
   end;
...

implementation

procedure TForm1.DataSetCampoSetText(Sender: TField; const Text: String);
begin
  Sender.AsString := Copy(Text, 6, 2); // en caracter 6 está '0' guardo 2 a partir de él
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  i : Integer;
begin
  for i := 1 to 9 do
    DBGrid1.Columns[0].PickList.Add('Item 0' + IntToStr(i));
  DataSet.FieldByName('Nombre_de_tu_Campo').OnSetText:= DataSetCampoSetText;
end;
...

Saludos.


La franja horaria es GMT +2. Ahora son las 08:39:10.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi