Форум: "Основная";
Текущий архив: 2002.10.24;
Скачать: [xml.tar.bz2];
ВнизВопрос по работе с 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c