![]() |
![]() ![]() ![]() ![]() |
|
Реализация события OnColumnClick из TListView для TStringGridDelphi , Компоненты и Классы , TStringGrid и TDrawGridРеализация события OnColumnClick из TListView для TStringGrid
Оформил: DeeCo
{
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.
Перевод контента на русский язык: Код, который я предоставил, является решением для события OnColumnClick компонента TListView в TStringGrid. Два процедура Вот подробное описание того, что каждый процедура делает:
Эта процедура вызывается, когда левая кнопка мыши нажата (mbLeft) над ячейкой в TStringGrid. Она проверяет, является ли строка фиксированной (arow = 0), и если да, то рисует 3D-эффект вокруг ячейки с помощью методов
Эта процедура вызывается, когда левая кнопка мыши отпущена над ячейкой в TStringGrid. Она проверяет, является ли строка фиксированной (arow = 0), и если да, то рисует другой 3D-эффект вокруг ячейки с помощью тех же методов, что и раньше. Кроме того, она выполняет код, который должен быть выполнен при клике по столбцу, в этом случае просто отображает сообщение с номером столбца. Некоторые предложения для улучшения:
Вот обновленная версия кода с некоторыми из этих предложений реализованными: Обратите внимание, что я убрал переменную Реализация события OnColumnClick из TListView для TStringGrid: в статье описаны два подхода к реализации метода OnColumnClick для TStringGrid, включая настройку первой строки как фиксированной и включение DefaultDrawing в True. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш :: Главная :: TStringGrid и TDrawGrid ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||