Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.24;
Скачать: CL | DM;

Вниз

Вопрос по работе с DrawGrid   Найти похожие ветки 

 
Cosinus ©   (2002-10-15 12:55) [0]

Я уже задавал этот вопрос, но возможно, я непонятно выразился. Не подскажите, как реализовать рисование в DrawGrid, где в качестве единичного пикселя выступает одна ячейка таблицы(с сохранением результатов,например, после прокрутки "туда-сюда")?
Заранее благодарен, Владислав.


 
Best Before 2024   (2002-10-15 13:03) [1]

Завести массив по числу ячеек и в зависимости от Array[Row , Col]
закрашивать ячейки Grid"a в OnDrawCell


 
cosinus ©   (2002-10-15 13:13) [2]

Насчет массива то понятно, это по-моему, решение, напрашивающееся само собой, а как их закрашивать то, чтобы они оставались на экране закрашенными, даже если я прокручу Scrool?


 
cosinus ©   (2002-10-15 13:14) [3]

Постоянно Canvasить что ли?


 
Best Before 2024   (2002-10-15 13:23) [4]

Закрашивате их как хотите в событии TDrawGrid.OnDrawCell
(почитайте help, помогает)


 
cosinus ©   (2002-10-15 13:24) [5]

>Best Before 2024
Спасибо, я читал...


 
reonid ©   (2002-10-15 14:12) [6]

unit Main;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids;

type
TForm1 = class(TForm)
SGrid: TStringGrid;
procedure SGridDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure SGridMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
procedure SwitchCell(ACol, ARow: Integer);
procedure ChangeSelection(Sel: TGridRect);
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.SwitchCell(ACol, ARow: Integer);
begin
if SGrid.Cells[ACol, ARow] = "1" then
SGrid.Cells[ACol, ARow] := "0"
else
SGrid.Cells[ACol, ARow] := "1";
end;

procedure TForm1.ChangeSelection(Sel: TGridRect);
var i, j: Integer;
begin
for i := Sel.Left to Sel.Right do
for j := Sel.Top to Sel.Bottom do
SwitchCell(i, j);
end;

procedure TForm1.SGridDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
with Sender as TStringGrid do
begin

if Cells[ACol, ARow] = "1" then
begin
if not (gdSelected in State) then
Canvas.Brush.Color := clRed
else
Canvas.Brush.Color := clSilver
end
else
begin
if not (gdSelected in State) then
Canvas.Brush.Color := clWhite
else
Canvas.Brush.Color := clMaroon
end;

Canvas.FillRect(Rect);
end;
end;

procedure TForm1.SGridMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
with Sender as TStringGrid do
begin
ChangeSelection(Selection);
Selection := TGridRect(Rect(-1, -1, -1, -1));
end;
end;

end.



Страницы: 1 вся ветка

Текущий архив: 2002.10.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
14-78610
Игорь
2002-09-26 15:50
2002.10.24
Delphi 7?


1-78337
NewChainik
2002-10-14 13:35
2002.10.24
Как обратиться к переменной, если ее имя задано текстовой строкой


3-78208
Sergey-ZZZ
2002-10-04 11:24
2002.10.24
ADOQuery


6-78562
VID
2002-08-23 08:43
2002.10.24
НЕ для слабонервных!


3-78233
arnold
2002-10-01 18:08
2002.10.24
Просмотор базы как в 1С