Selección de texto en una celda de un TStringGrid

3861 vistas

Para seleccionar texto en una celda de un componente TStringGrid, podemos usar el componente TInplaceEdit especializado para el trato de texto en las celdas de las rejillas (Grids).



delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2.  
  3.   // recorremos los controles hijos del Grid en búsqueda de TInplaceEdit
  4.   function GetInPlaceEdit(ACustomGrid: TCustomGrid): TInplaceEdit;
  5.   var
  6.     i: integer;
  7.   begin
  8.     for i := 0 to ACustomGrid.ControlCount - 1 do
  9.       if ACustomGrid.Controls[i] is TInplaceEdit then
  10.       begin
  11.         Result := TInplaceEdit(ACustomGrid.Controls[i]);
  12.         Exit;
  13.       end;
  14.     Result := nil;
  15.   end;
  16.  
  17. var
  18.   myRect: TGridRect;
  19.   ed: TInplaceEdit;
  20. begin
  21.   // selección de la celda
  22.   myRect.Left := 1;
  23.   myRect.Top := 2;
  24.   myRect.Right := 1;
  25.   myRect.Bottom := 2;
  26.   sg.Selection := myRect;
  27.  
  28.   // damos el foco al Grid
  29.   ActiveControl:= sg;
  30.  
  31.   // ponemos el Grid en modo de edición
  32.   sg.EditorMode:= true;
  33.  
  34.   // recuperamos el editor
  35.   ed:= GetInPlaceEdit(sg);
  36.   // seleccionamos el texto de la celda
  37.   if ed <> nil then
  38.   begin
  39.     ed.SelStart := 0;
  40.     ed.SelLength := ed.GetTextLen;
  41.   end;
  42. end;



Nota: TInPlaceEdit puede ser usado con cualquier descendiente de TCustomGrid, incluido TDBGrid