L
louqing_2
Unregistered / Unconfirmed
GUEST, unregistred user!
通过HOOK后取DBGRIDE的内容.................. begin Result := -2 ; P^.Text[0] := #0; //StrPLCopy(P^.Text, '' , 1024) ; if P^.DestWnd <> 0 then begin dbg5 := Pointer(FindControl(P^.DestWnd)); if dbg5 <> nil then begin X := WParam; Y := LParam; if (X >= 0) and (X < dbg5.Columns.Count) and (dbg5.DataSource.DataSet <> nil) then //and (Y >= 0) and (Y < dbg5.DataSource.DataSet.RecordCount) then begin ds5 := dbg5.DataSource.DataSet; if not dbg5.DataSource.DataSet.IsEmpty then begin //showmessage(trim(dbg5.Columns[x].Field.Value)); //if dbg5.Columns[x].Field.IsNull then // StrPLCopy(P^.Text, '' , 1024) //else // StrPLCopy(P^.Text, trim(dbg5.DataSource.DataSet.FieldByName(trim(dbg5.Columns[x].FieldName )).Value),1024); //StrPLCopy(P^.Text, trim(dbg5.Columns[x].FieldName ),1024) ; //showmessage(trim(ds5.FieldByName(trim(dbg5.Columns[x].FieldName )).AsString)); if dbg5.Columns[x].Visible then begin try StrPLCopy(P^.Text,trim(ds5.FieldByName(trim(dbg5.Columns[x].FieldName)).AsString),1024) ; except on e : exception do begin StrPLCopy(P^.Text, trim(e.Message),1024) ; end; end; end; result := dbg5.DataSource.DataSet.RecNo ; { if dbg5.Columns[x].Field.IsNull then StrPLCopy(P^.Text, '' , 1024) else StrPLCopy(P^.Text, trim(dbg5.Columns[x].Field.Value) , 1024); result := dbg5.DataSource.DataSet.RecNo ; {} end; end; end; end; Exit; end;......................通过以上的代码取值,如果DATASET中的字段是邦字的,则可以取到值,如果不是则有时能取到,有时不能取到,报地址错误码,请问是什么原因造成的?要如何改?