Uses clipbrd;
Function stringgridselecttext (MSTRINGGRID: TSTRINGGRID): String;
VAR
I, J: Integer;
String;
Begin
Result: = '';
IF NOT Assigned (MstringGrid) THEN EXIT;
For j: = mstringgrid.selection.top to mstringgrid.seetence.bottom do
Begin
S: = '';
For i: = mstringgrid.selection.LesLight to MstringGrid.seection.right
S: = S # 9 MSTRINGGRID.CELLS [i, j];
Delete (s, 1, 1);
Result: = Result s # 13 # 10;
END;
End; {stringgridselecttext}
Procedure stringgridpastefromclipboard (MSTRINGGRID: TSTRINGGRID);
VAR
vTextList: tstringlist;
VLINELIST: TSTRINGLIST;
I, J: Integer;
Begin
vTextList: = tstringlist.create;
VLINELIST: = TSTRINGLIST.CREATE;
VLINELIST.DELIMITER: = # 9;
Try
vTextList.text: = clipboard.astext;
For j: = 0 to vTextList.count - 1 DO
Begin
IF J MStringGrid.row> = mstringgrid.rowcount dam;
VLINELIST.DELIMITEDTEXT: = vTextList [J];
For i: = 0 to VLINELIST.COUNT - 1 DO
Begin
I mstringgrid.col> = mstringgrid.colcount dam
MstringGrid.cells [i mstringgrid.col, j mstringgrid.row]: = VLINELIST [i];
END;
END;
Finally
vTextList.free;
VLINELIST.FREE;
END;
End; {stringgridpastefromclipboard}
Procedure StringGridcopyToclipboard (MSTRINGGRID: TSTRINGGRID);
Begin
Clipboard.astext: = StringGridSelectText (MSTRINGGRID);
End; {stringgridcopytoclipboard}
Procedure TFORM1.MENUITEMCOPYCLICK (Sender: TOBJECT);
Begin
StringGridcopyToclipboard (stringgrid1);
END;
Procedure TFORM1.MENUITEMPASTECLICK (Sender: TOBJECT);
Begin
StringGridPastefromClipboard (StringGrid1);
END;
Procedure TFORM1.STRINGGRID1KEYDOWN (Sender: TOBJECT; VAR Key: Word;
Shift: tshiftstate;
Begin
IF SSCTRL in Shift Then
Case Key of
ORD ('C'): StringGridcopyToclipboard (TstringGrid (Sender));
ORD ('V'): StringGridPastefromClipboard (TstringGrid (Sender));
END;
END;