是否可以将该箭头指针添加到Delphi 7中的String Grind?你知道我的意思,你可以在DBGrid左边看到的箭头指针。
答案 0 :(得分:3)
是的,但不是自动的。您需要手动显示三角形。您可以为网格覆盖 OnDrawCell 。您似乎需要将 FixedCols 设置为0,因为当行选择更改时,它似乎不会再次重绘固定单元格。
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
aCanvas: TCanvas;
oldColor: TColor;
triangle: array [0..2] of TPoint;
const
spacing = 4;
begin
if (ACol = 0) and (aRow = StringGrid1.Row) then
begin
aCanvas := (Sender as TStringGrid).Canvas; // To avoid with statement
oldColor := aCanvas.Brush.Color;
// Shape the triangle
triangle[0] := TPoint.Create(Rect.Left + spacing, Rect.Top + spacing);
triangle[1] := TPoint.Create(Rect.Left + spacing, Rect.Top + Rect.Height - spacing);
triangle[2] := TPoint.Create(Rect.Left + Rect.Width - spacing, Rect.Top + Rect.Height div 2);
// Draw the triangle
aCanvas.Pen.Color := clBlack;
aCanvas.Brush.Color := clBlack;
aCanvas.Polygon(triangle);
aCanvas.FloodFill(Rect.Left + Rect.Width div 2, Rect.Top + Rect.Height div 2, clBlack, fsSurface);
aCanvas.Brush.Color := oldColor;
end;
end;
这会在框中绘制一个三角形。你应该得到一般的想法。
答案 1 :(得分:1)
不自动;它不是标准TStringGrid
的一部分。 “箭头指针”称为row indicator
,它是TDBGrid
中添加的一项功能。它在TDBGridOptions
中声明,具体为dgIndicator
,如下所示:
TDBGridOption = (dgEditing, dgAlwaysShowEditor, dgTitles, dgIndicator,
dgColumnResize, dgColLines, dgRowLines, dgTabs, dgRowSelect,
dgAlwaysShowSelection, dgConfirmDelete, dgCancelOnExit, dgMultiSelect);
请注意,这与TGridOption
单元中声明的Grids
不同,后者不包含任何类似内容。 (没有goIndicator
或同等的。)
为了获得指标,当您收到OnDrawCell
ACol
值为0
且ARow
相当于Grid.Row
时,您必须自己在TStringGrid.OnDrawCell
事件中绘制它{{1}}值。{{1}}。 this answer中有{{1}}的示例,虽然它正在演示设置自定义行高而不是绘制行指示符。