![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Изменение цвета ячеек grid-а [D6, WinXP]
Юлия © (2002-10-26 17:51:00)Уважаемые мастера, помогите пожалуйста сделать такую вещь: на экране – таблица, состоящая из кнопок, как в сапере. При нажатии на любую ячейку меняется ее цвет. Совсем необязательно, чтобы были кнопки, главное, чтобы на щелчки мыши реагировали. Как такое сделать? Какой метод использовать?
TTCustomDelphiMaster (2002-10-26 21:01:00) [1]
> А как узнать цвет ячейки, по которой "кликнули"?
Хранить его где нибуть. Можно и в самом TStringGrid:
StringGrid1.Objects[i,j] := Pointer(Color);
Color := integer(StringGrid1.Objects[i,j]))
777 (2002-10-26 21:00:00) [2]Если я правильно понял, уже нажатые кнопки так закрашенными и остаются.
Можно объявить глобальную переменную в указанном коде,
например CurrColor:TColor, и присваивать ей значение в обработчике
OnMouseDown
...
CurrColor:=StringGrid1.Canvas.Pixels[x,y];
...
потом при StringGrid1DrawCell
...
if (ACol=P.X)and(ARow=P.Y) and(CurrColor<>clRed)then
...
Юлия (2002-10-26 20:50:00) [3]Спасибо, А как узнать цвет ячейки, по которой "кликнули"?
777 (2002-10-26 20:26:00) [4]
var P:Tpoint;
.......
procedure TForm1.FormCreate(Sender: TObject);
begin
P.X:=-1;
P.Y:=-1;
end;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if (ACol=P.X)and(ARow=P.Y)then
begin
StringGrid1.Canvas.Brush.Color:=clred;
StringGrid1.Canvas.FillRect(rect);
end;
end;
procedure TForm1.StringGrid1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
P.X:=StringGrid1.Col;
P.Y:=StringGrid1.Row;
StringGrid1.Refresh;
end;
Юлия (2002-10-26 19:48:00) [5]Как поменять цвет ячейки grid-а? (string/draw/RXDraw)?
Какая команда?
down (2002-10-26 18:33:00) [6]обрабатывать события OnMouseDown, OnDrawCell