Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2010, 12:43   #1
Lelya-perinya
Пользователь
 
Регистрация: 09.12.2010
Сообщений: 12
Сообщение Мерцание, перепрорисовка не всей формы,InvalidateRect...

Везде видела примеры с InvalidateRect, где 2 параметр "nil", но мне нужно с помощью этой функции перепрорисовать не всю форму, а часть нее. Когда я пытаюсь задать свой прямоугольник он разрешает запустить программу, но ругается, когда я начинаю двигать фигуру именно на ту строку, где я начинаю задавать прямоугольник...


Код:
D.Left:=x1-25;
   D.Top:=y1-25;
   D.Right:=x+25;
   D.Bottom:=y+25;
Пишет при наведении на D - "D=nil", А на D.Left - "Inaccessible value"...
Рисование на форме, InvalidateRect прописано в событии MouseMove.

Так как можно задать прямоугольник PRect?
Lelya-perinya вне форума Ответить с цитированием
Старый 09.12.2010, 13:35   #2
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

@ добавь перед Д в параметре
ZuBy вне форума Ответить с цитированием
Старый 09.12.2010, 13:50   #3
Lelya-perinya
Пользователь
 
Регистрация: 09.12.2010
Сообщений: 12
По умолчанию

Параметром оно стать не успевает, программа прерывается на присвоении значения в D.Left... Но я все равно честно попробовала =))
Lelya-perinya вне форума Ответить с цитированием
Старый 10.12.2010, 06:35   #4
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Может так д^.лефт := и тд...
ZuBy вне форума Ответить с цитированием
Старый 10.12.2010, 10:14   #5
inndim
Пользователь
 
Регистрация: 08.06.2008
Сообщений: 74
По умолчанию

Честно говоря не совсем понял в чём проблема, но вот вам простой пример обновления нужной части формы. В примере при нажатии кнопки рисуется квадрат, а при движении мышкой по форме этот квадрат стирается.
Код:
var
  Form1: TForm1;
  d:trect;

implementation

{$R *.dfm}

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 InvalidateRect(handle, @d, true);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 d.Left:=100;
 d.top:=100;
 d.Right:=200;
 d.Bottom:=200;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 canvas.Brush.Color:=clnavy;
 canvas.FillRect(d);
end;
inndim вне форума Ответить с цитированием
Старый 11.12.2010, 07:56   #6
Lelya-perinya
Пользователь
 
Регистрация: 09.12.2010
Сообщений: 12
По умолчанию

я просто описывала D как Prect... Сейчас не ругается =))
Lelya-perinya вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мерцание изображений при перерисовке формы.(Delphi) _PROGRAMM_ Помощь студентам 3 19.09.2010 20:38
проблемы с печатью всей формы в делфи Izlom Помощь студентам 2 05.09.2010 18:48
Перерисовать окно InvalidateRect где указывать delias Win Api 2 25.03.2010 01:15
Печать всей формы GINA Общие вопросы Delphi 11 11.01.2009 21:11