Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Графика [D5]


Страницы:   1 2 3

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]

Рисовать по другому


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо