![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Графика [D5]
Ghost del vonte © (2010-10-02 02:58:00)В моей программе надо рисовать на компоненте TDrawGrid, стоит свернуть программу или переключится на другое окно, рисование исчезает, как это устранить? (чтобы не исчезало)
Плохиш (2010-10-02 20:56:00) [41]
> И каким образом можно сделать, чтобы все выделенные ячейки
> (раскрашеные), при сворачивании а затем восстановлении окна
> не исчезали?
Ничего не исчезает, смените прокладку.
Ghost del vonte (2010-10-02 16:03:00) [42]
> Это перерисовывает только выделеную ячейку.
И каким образом можно сделать, чтобы все выделенные ячейки (раскрашеные), при сворачивании а затем восстановлении окна не исчезали?
Anatoly Podgoretsky (2010-10-02 15:58:00) [43]
if gdSelected in State then
Это перерисовывает только выделеную ячейку.
Ghost del vonte (2010-10-02 15:06:00) [44]
> Вточ-ВточПопробуй вот так точно сработает:
Все-равно не работает, исчезает! Я это все делаю на Дельфи 5, попробую установить Дельфи 7 и скомпилировать там, да еще полазить в исходнике компонента TDrawGrid, просто ощущение что автоматическая прорисовка не отключена.... рисование должно быть как в Borland-овском ImageEditor....
бумбум (2010-10-02 15:01:00) [45]Вточ-ВточПопробуй вот так точно сработает:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids;
type
TForm1 = class(TForm)
DrawGrid1: TDrawGrid;
procedure DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
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;
end.
Ghost del vonte (2010-10-02 14:51:00) [46]
> Ничего не исчезает, выделенную ячейку отрисовывает как и
> запрашиваешь.
Рисует хорошо, но если сворачиваю программу а потом восстанавливаю (разворачиваю) - все исчезает, DefaultDrawing:= false!
Плохиш (2010-10-02 14:49:00) [47]Ничего не исчезает, выделенную ячейку отрисовывает как и запрашиваешь.
Ghost del vonte (2010-10-02 14:48:00) [48]
> Убрать
Убрал уже давно, мне просто тут посоветовали, я попробовал - бесполезно, и по привычки сохранил, а потом скопировал код сюда....
Игорь Шевченко (2010-10-02 14:46:00) [49]
> InvalidateRect(DrawGrid1.Canvas.Handle, nil, false);
Убрать
Ghost del vonte (2010-10-02 14:37:00) [50]
> Вот так работает:
Нет, все-равно исчезает..... бесполезно! Пробовал даже такое: перед минимизацией, записывал пикселы TCanvas у DrawGrid в файл, а перед активацией - чтение из файла и прорисовкой на канве компонента - тоже бесполезно!
бумбум (2010-10-02 14:27:00) [51]Вот так работает:
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);
InvalidateRect(DrawGrid1.Canvas.Handle, nil, false);
// StatusBar1.Panels[1].Text:= 'Col: '+IntToStr(ACol)+' , Row: '+IntToStr(ARow);
end;
end;
Ghost del vonte (2010-10-02 14:08:00) [52]InvalidateRect - это я недавно пробовал, не помогло, с помощью вашего кода, вообще закрашивается весь DrawGrid, а у меня по клеткам (выбранным)
Ghost del vonte (2010-10-02 14:02:00) [53]
>
> Интересно а как ты там рисуешь?
Вот так:
procedure TfmLora.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if gdSelected in State then
begin
DrawGrid1.Canvas.Brush.Color:= DColor;
DrawGrid1.Canvas.FillRect(Rect);
InvalidateRect(DrawGrid1.Canvas.Handle, nil, false);
StatusBar1.Panels[1].Text:= 'Col: '+IntToStr(ACol)+' , Row: '+IntToStr(ARow);
end;
end;
бумбум (2010-10-02 13:56:00) [54]
> Ghost del vonte (02.10.10 13:04) [6]
Интересно а как ты там рисуешь?
Вот я провериль и всё вез проблем:
procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
DrawGrid1.canvas.brush.Color := clRed;
If (ACol > 0) and (ARow>0) then
DrawGrid1.canvas.fillRect(Rect);
end;
Ghost del vonte (2010-10-02 13:04:00) [55]
> InvalidateRect/Refresh
....Увы, но эти спобосы не помогают, все равно исчезает! Закрашиваешь несколько клеток, сворачиваешь, разворачиваешь программу, а клетки снова белые....
Anatoly Podgoretsky (2010-10-02 12:52:00) [56]> Ghost del vonte (02.10.2010 12:40:03) [3]
InvalidateRect/Refresh
Ghost del vonte (2010-10-02 12:48:00) [57]
> Рисовать по другому
И как по другому? Рисуется нормально, но исчезает все рисование....
Ghost del vonte (2010-10-02 12:40:00) [58]Но я итак рисую в событии OnDrawCell, закрашиваю клеточки методом FillRect, автоматическая прорисовка отключена, что только не пробовал, все-равно исчезает....
_Юрий (2010-10-02 10:54:00) [59]Надо рисовать в событии OnDrawCell или onPaint
чтобы в таких случаях перерисовывало
стандартное поведение
Anatoly Podgoretsky (2010-10-02 10:35:00) [60]> Ghost del vonte (02.10.2010 02:58:00) [0]
Рисовать по другому