Реализация события 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 прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: TStringGrid и TDrawGrid ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |