Ho capito, ma resta il fatto che l evento mousedown su di un record pieno della tdbgrid non si scatena.
Nello specifico quello che volevo fare io è un drag and drop da una tdbgrid a una stringlist dei dati del record della tdbgrid.
quello che avevo pensato io era quindi:
al mousedown sulla tdbgrid mi memorizzo i dati del record corrente;
e inizia il drag
sull evento dragdrop della stringlist aggiungo i dati che mi ero memorizzato, ma appunto non “entrando” nel metodo mouse down dell dbrid non posso fare cosi.
se c'e' un altro modo per fre drag and drop…
grazie ancora
p.s. posto il codice:
evento onmousedown della tdbgrid
myRecColor:=TRecColor.create;
myRecColor.ID:=DBGridInks.DataSource.DataSet.FieldByName('ID').AsInteger;
myRecColor.Descrizione:=DBGridInks.DataSource.DataSet.FieldByName('DESCRDEF').AsString;
myRecColor.rgb:=DBGridInks.DataSource.DataSet.FieldByName('RGBCODE').AsString;
myRecColor.Colore:=DBGridInks.DataSource.DataSet.FieldByName('RGBCODE').AsInteger;
myRecColor.Col:=DBGridInks.DataSource.DataSet.FieldByName('POSCOL').AsInteger;
myRecColor.Row:=DBGridInks.DataSource.DataSet.FieldByName('POSROW').AsInteger;
DBGridInks.BeginDrag(True);
evento dragdrop della tstringlist:
var
r,c:integer ;
inkSource,inkDest:TRecColor;
if Source = DBGridInks then
begin
with SgridInkPos do
begin
MouseToCell( x, y, c, r );
inkDest := TRecColor( Objects[c, r]);
// if not(Assigned(inkDest) )then
begin
inkSource := myRecColor;
if InkExistIngrid(inkSource) then
begin
ShowModalMessage('THIS COLOR IS PRESENT IN POSITION: '+#13#10+'ROW='+IntToStr(inkSource.Row)+#13#10+'COLUMN='+inttostr(inkSource.Col),'COPY IP',eTM_warning,5000,True,False);
Exit;
end;
inkSource.Row := r+1;
inkSource.Col := c+1;
objects[c,r] := inkSource;
cells[c,r] := inkSource.Descrizione ;
inkDest:= inkSource;
end;
end;