How to transfer data between a TDBGrid and the clipboard (Views: 30)
Problem/Question/Abstract: How to transfer data between a TDBGrid and the clipboard Answer: The grid must be in Edit or Insert mode for the paste to work. Add 'ClipBrd' to the Uses list Add 'gk: Word;' to your global variables Add the following procedures to Implementation, substituting names as required procedure TMyForm.MyDBGridKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); {OnKeyDown event handler for your DBGrid} const vk_c = $43; vk_v = $56; begin if Shift = [ssCtrl] then begin if key = vk_v then Shift := [ssShift]; if (key = vk_c) or (key = vk_v) then begin gk := Key; key := 0; end; end; end; procedure TMyForm.MyDBGridKeyPress(Sender: TObject; var Key: Char); {OnKeyPress event handler for your DBGrid} const vk_c = $43; vk_v = $56; begin if gk <> 0 then begin Key := chr(0); if gk = vk_c then ClipBoard.AsText := MyTable.Fields[MyDBGrid.SelectedIndex].AsString; if gk = vk_v then begin if (MyTable.State = dsEdit) or (MyTable.State = dsInsert) then MyTable.Fields[MyDBGrid.SelectedIndex].AsString := ClipBoard.AsText else MessageBeep(0); end; gk := 0; end; end; |