He encontrado por ahí en internet código en delhpi que creo que me serviría de saber adaptarlo a C++, pero la verdad es que hay algunas cosas que no entiendo.
Lo del SendMessage no funciona pq se lo mando al StringGrid, mi primera idea fue intentar mandárselo al TEdit que incluye dicho componente pero no encontré el modo. Resulta que TStringGrid hereda de TCustomGrid que tiene una propiedad llamada ImplaceEditor que es un puntero al TEdit. Problema....ImplaceEditor es una propiedad protegida y no puedo acceder a ella. Sin embargo en Internet he econtrado cierto código que según parece es capaz de acceder a dicha propiedad. Os lo pongo aquí a ver si alguién consigue explicármelo.
Código:
{
The following code allows you to position the caret
in a cell (InplaceEditor) of a StringGrid.
We need a Cracker class to access the InplaceEditor.
}
type
TGridCracker = class(TStringGrid);
{...}
implementation
{...}
procedure SetCaretPosition(Grid: TStringGrid; col, row, x_pos: Integer);
begin
Grid.Col := Col;
Grid.Row := Row;
with TGridCracker(Grid) do
InplaceEditor.SelStart := x_pos;
end;
// Get the Caret position from the focussed cell
function GetCaretPosition(Grid: TStringGrid): Integer;
begin
with TGridCracker(Grid) do
Result := InplaceEditor.SelStart;
end;
// Example:
// Set the focus on col 1, row 3 and position the caret at position 5
procedure TForm1.Button1Click(Sender: TObject);
begin
StringGrid1.SetFocus;
SetCaretPosition(StringGrid1, 1, 3, 5);
end;
¿Qué es TGridCracker? ¿Y como se usa en C++?
Muchas Gracias!