Cita:
Empezado por Willo
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); 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.