![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Добрый день! Я новичок в Delphi. Прошу совета.
Задача: вывести на Форму-->TImage двухмерный массив 00100 01100 11111 01100 00100 в виде таблицы (там где 0-серый, 1-красный). Это я сделал. Код:
procedure TMainForm.PaintPole;
var
Canvas: TCanvas;
i,j,k: Integer;
Rows: Integer;
Cols: Integer;
CellString: String;
CellValue: Integer;
DigitRowsTable: Array of Array of Integer;
m, n, ShapeLeft, ShapeTop: Integer;
begin
ShapeLeft := 0;
ShapeTop := 0;
for m:=1 to Cols do
begin
ShapeTop := ShapeTop+50;
for n:=1 to Rows do
begin
Canvas.Pen.Width := 4;
Canvas.Pen.Color := clBtnText;
if DigitRowsTable[m-1,n-1]=0 then
Canvas.Brush.Color := clBtnFace
else
Canvas.Brush.Color := clRed;
ShapeLeft := ShapeLeft+50;
Canvas.Rectangle(ShapeLeft, ShapeTop, ShapeLeft+50, ShapeTop+50);
Canvas.Font.Size := 7;
Canvas.TextOut ( ShapeLeft+17, ShapeTop+20, IntToStr(m)+' '+IntToStr(n));
end;
ShapeLeft := 0;
end;
end;Далее мне нужно наведя курсор мыши на ячейку, по правой кнопке иметь возможность изменить цвет (с серого на красный и наоборот), записать новое значение (0 или 1 в массив). Пока не получается получить даже координаты курсора. Последний раз редактировалось Admin, 15.09.2010 в 16:45. |
|
#2
|
|||
|
|||
|
У имаджа есть событие OnMouseUp/OnMouseUp (бери любое). Плюс тебе потребуется процедура ScreenToClint (это метод компонента, формы, например, у имаджа тоже должен быть, но не уверен). С помощью этого методы ты переведешь экранные координаты мыши, которые ты получив в вышеуказанном обработчике, в координаты компонента. Теперь по кооржинатам надо вычислить координаты ячейки массива и уже в ней поменять значение, после чего перерисовать картинку.
|
|
#3
|
|||
|
|||
|
Спасибо, то что нужно
|