Tu je znaci problem, kao sto kaze dokumentacija:
Citat:
Set SelectedField to move focus to a particular field in the grid. Read SelectedField to obtain access to the field component for the currently selected cell. If there is not currently selected cell, SelectedField is nil (Delphi) or NULL (C++). For example, when an entire row is selected, SelectedField is nil or NULL.
To sto ti pokusavas nije predvidjeno da radi tako kako si ti zamislio, jednostavno tako su uradili, nije garantovano da ce SelectedField raditi ako je dgRowSelect postavljen na true, sto si ti u praksi i osetio.
Znaci te dve stvari se potiru, grid smatra da ne mozes da dobijes informaciju koja kolona je izabrana ukoliko je ceo red selektovan. To sto negde radi, a negde ne je druga stvar i vezana je za (los) kvalitet posla koji su odradili Borlandovi ljudi. Ako te interesuje pogledaj DB.pas gde se desava sve to sto tebe zanima.
Plus imas i logicki problem u programu. Ako si vec fiksirao koja kolona te zanima zasto uopste postavljas selected index? Znaci:
Revizija tvog koda za OnClick (za dalje ces se snaci):
Code:
procedure TfrmSnimciGrid.VideoGridCellClick(Column: TColumn);
begin
with VideoGrid.DataSource.DataSet do
begin
if IsEmpty then
exit; // Izlazimo ako je dataset prazan
edtDelete.Text:= FieldByName('Path_v').AsString;
btnDelete.Enabled:= true;
end;
end;
Imas tu jos jedan sitniji problem. Ako je dgRowSelect true onda se posle OnDbClick-a desava OnClick, ali mislim da to nece biti strasno u kontekstu onoga sto ti radis na onclick.
Sve bi ovo bilo reseno ranije da si ti uradio na prvom mestu ono sto sam ti rekao: postavio logovanje dogadjaja i odmah ustanovio da se dogadjaji pozivaju, ali da ostatak koda ne radi kako treba.