Реализация события OnColumnClick из TListView для TStringGrid
Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch
{
There are two routines to implement the OnColumnClick Methods for a TStringGrid.
Set the first row as fixed and the Defaultdrawing to True.
Mit folgenden zwei Routinen kann man in einem TStringgrid
die Methode OnColumnClick eines TListView erzeugen (visuell).
Reihe 0 mu? fixiert sein undDefaultDrawing = True
}
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
procedure StringGrid1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure StringGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
zelle: TRect; // cell
acol, arow: Integer;
public
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.StringGrid1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
Text: string;
begin
with stringgrid1 do
begin
MouseRoCell(x, y, acol, arow);
if (arow = 0) and (button = mbleft) then
case acol of
0..2:
begin
// Draws a 3D Effect (Push)
// Zeichnet 3D-Effekt (Push)
zelle := CellRect(acol, arow);
Text := Cells[acol, arow];
Canvas.Font := Font;
Canvas.Brush.Color := clBtnFace;
Canvas.FillRect(zelle);
Canvas.TextRect(zelle, zelle.Left + 2, zelle.Top + 2, Text);
DrawEdge(Canvas.Handle, zelle, 10, 2 or 4 or 8);
DrawEdge(Canvas.Handle, zelle, 2 or 4, 1);
end;
end;
end;
end;
procedure TForm1.StringGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
Text: string;
begin
with StringGrid1 do
begin
// Draws a 3D-Effect (Up)
// Zeichnet 3D-Effekt (Up)
Text := Cells[acol, arow];
if arow = 0 then
begin
Canvas.Font := Font;
Canvas.Brush.Color := clBtnFace;
Canvas.FillRect(zelle);
Canvas.TextRect(zelle, zelle.Left + 2, zelle.Top + 2, Text);
DrawEdge(Canvas.Handle, zelle, 4, 4 or 8);
DrawEdge(Canvas.Handle, zelle, 4, 1 or 2);
MouseToCell(zelle.Left, zelle.Top, acol, arow);
end;
end;
if (arow = 0) and (Button = mbleft) then
case acol of
0..2:
begin
// Code to be executed...
// Programmcode der ausgefuhrt werden soll
ShowMessage('Column ' + IntToStr(acol));
zelle := stringgrid1.CellRect(1, 1);
end;
end;
end;
end.
|