Oggi ho incontrato una sorpresa imprevista, mquando, nella prova programma, dopo avere riempito una StringGrid coi dati riepilogativi di una serie di movimenti, ho cliccato sulla prima riga della StringGrid.
Ebbene, l'Evento OnBeforeSelection non si è attivato e cella cliccata, insieme a tutta la riga, non è stata selezionata.
Il codice interessato è il seguente:
procedure TForm4.GridPreMomBeforeSelection(Sender: TObject; aCol, aRow: Integer);
begin
WriteLn('procedure TForm4.GridPreMomBeforeSelection');
swGridPreMomBeforeSel:= True;
ixCell:= aCol; // memorizzo il n. di Colonna della casella selezionata
iyCell:= aRow; // memorizzo il n. di Riga della casella selezionata
GridPreMom.Invalidate; // estendo la selezione a tutta la riga rendendola, nel contempo NON digitabile
end;
procedure TForm4.GridPreMomClick(Sender: TObject);
begin
WriteLn('procedure TForm4.GridPreMomClick');
GridPreMomSel
end;
Dalla Console ho rilevato la mancata chiamata della procedura "TForm4.GridPreMomBeforeSelection":
-----
procedure TForm4.GridPreMomClick
iyCell= 0
ixCell= 0
iRgMax= 8
procedure GridPreMomSel
Come si può riscontrare, la prima procedura attivata dal click sulla GridPreMom è la TForm4.GridPreMomClick, mentra avrebbe dovuto essere la TForm4.GridPreMomBeforeSelection
Non so se qualcuno della comunità ha mai vissuto esperienze come la m ia attuale.
Vorrei solo sapere se posso richiamere io, da codice, la TForm4.GridPreMomBeforeSelection, in modo da potere ottenere le coordinate della cella cliccata.