Nie miałem racji, można to zrobić w prosty sposób, tylko trzeba posłużyć się zdarzeniem
OnSelectCell.
W
Object Inspector ustaw właściwości
Options obiektu
StringGrid tak:
- goEditing = false
- goAlwaysShowEditor = true
Utwórz zdarzenie OnSelectCell dla StringGrid i umieść taki kod:
void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol, int ARow, bool &CanSelect)
{
if(ACol == 2 && ARow == 3)
{
StringGrid1->Options = StringGrid1->Options << goEditing;
}
else
{
StringGrid1->Options = StringGrid1->Options >> goEditing;
}
}
Zauważ jak zmieniam opcje:
StringGrid1->Options = StringGrid1->Options << goEditing;
Nie użyłem
TGridOptions() << goEditing; gdyż spowodowałoby to nieprawidłowe wyświetlanie tabeli
(nie wiem dlaczego), można więc ewentualnie postąpić tak:
TGridOptions gOpt = StringGrid1->Options;
if(ACol == 2 && ARow == 3)
StringGrid1->Options = gOpt << goEditing;
else StringGrid1->Options = gOpt >> goEditing;