Вниз
Скачать: CL | DM;

Работа с DrawGrid.   Найти похожие ветки 

← →
Cosinus ©   (2002-10-15 09:57) [0]

Доброе утро. Есть задача написать редактор циклограмм. Наиболее удобное решение, по-моему, это использование DrawGrid. Алгоритм работы следующий: в какой-либо ячейке я нажимаю кнопку мыши и веду ее вправо, выделяя таким образом некоторое количество ячеек. После того, как я отпускаю кнопку мыши все выделенные ячейки заполняются другим цветом и где-либо запоминаются изменения. Не подскажите ли, как отследить это Selected и заполнить их цветом. В книге по Delphi, которая у меня есть очень сумбурно описана работа с таблицами, в Help-e и FAQ не нашел. Подозреваю, что задача очень похожа на программы для решения японских кросвордов(в реализации визуализации), но ни одного исходника по japcross я так и не нашел.


← →
MBo ©   (2002-10-15 10:10) [1]

>исходника по japcross
algolist.manual.ru


← →
cosinus ©   (2002-10-15 10:20) [2]

>MBo
Спасибо за ссылку - довольно полезный ресурс.
Но там выложен алгоритм (поверьте, меня совсем не интересует как решить яп. кроссворд), а не исходник, а меня как раз интересует как ЗАПРОГРАММИРОВАТЬ, а не как придумать.
P.S. деествительно интересный сайт :)


← →
MBo ©   (2002-10-15 10:39) [3]

не очень понятно,что нужно. Если закрашивать выделенное, то (для того, чтобы focused тоже закрашивалась) так:
procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if gdSelected in State then begin
DrawGrid1.Canvas.Brush.Color:=clRed;
DrawGrid1.Canvas.FillRect(Rect);
end;
end;

Если надо хранить какие-то признаки отметок ячеек, то удобнее будет TStringGrid - у него есть Cells, в которых и можно записывать информацию


← →
cosinus ©   (2002-10-15 11:06) [4]

>MBo
Это немного не то. Предложенный Вами кусок кода просто меняет принятый по умолчанию цвет выделенных ячеек(синий) на какой-либо другой(красный). Возможно я плохо объяснил, что хочу сделать. Грубо говоря мне нужно реализовать возможность рисования в таблице, где в качестве еденичного пикселя выступает одна ячейка(без потери данных, например, при прокрутке).


← →
MBo ©   (2002-10-15 14:16) [5]

Я же говорю - возьми StringGrid, записывай в помеченные cells[i,j] любую строку, а в OnDrawCell

if Cells[Acol,arow]<>"" then begin
DrawGrid1.Canvas.Brush.Color:=clRed;
DrawGrid1.Canvas.FillRect(Rect);
end;




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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.012 c
1-78326
Supaplexor
2002-10-13 22:56
2002.10.24
Как использовать DLL?


3-78222
Vasechkin
2002-10-01 18:13
2002.10.24
Срочно нужна ПОМОЩЬ!!!!!


14-78650
Nox
2002-10-01 19:47
2002.10.24
<<<Я ДОБАВИЛ СВОЙ ВОПРОС В ФОРУМ, А ОН УШЁЛ!>>>


6-78581
B-Ars
2002-08-21 12:43
2002.10.24
Возможно ли узнать какие расшареные файлы открыты у меня другими


4-78742
Xemax
2002-09-08 20:57
2002.10.24
Почему не удаляется файл?




   Наверх