![]() |
|
|
Регистрация | << Правила форума >> | 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
|
|||
|
|||
![]() Спасибо, то что нужно
|