Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Перетягивание фреймов по форме

38K
14 января 2010 года
maximen
14 / / 20.02.2009
Динамически создал массив Фреймов - 52 штуки от фрейма который входит в проект
Хозяин и родитель - главная форма.

Код:
TPoint *MouseDownPoint;
bool Moving=false;


void__fastcall TForm1::FrameMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer)
{
   
    SetCapture(((TFrame*)Sender)->Handle);
    Moving=true;
    MouseDownPoint->x= X;
    MouseDownPoint->Y= Y;
 
}

void__fastcall TForm1::FrameMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer)
{
  if (Moving==true)
  {
    ((TFrame*)Sender)->Left=((TFrame*)Sender)->Left - (MouseDownPoint->x - X);
    ((TFrame*)Sender)->Top=((TFrame*)Sender)->Top - (MouseDownPoint->y - Y);

  }
}

void__fastcall TForm1::FrameMouseUp(Sender: TObject; Button:
TMouseButton; Shift: TShiftState; X, Y: Integer)
{
  if (Moving==true)
  {
    ReleaseCapture();
    Moving= false;    
  }
}



Все фреймы с картинками, вложенными в них находятся на главной форме.
При перетаскивании мышью любого фрейма (пробовал использовать вместо фрейма форму) и прохождении его поверх других фреймов на них остается на короткой время многократное изображение
фрейма, который сейчас перетаскиваю.

Как от этого избавиться? Как убрать этот шлейф.

Пробовал варианты типа

releaseCapture();
((TFrame*)Sender)->Perform(......); и так далее.

Эти варианты работают великолепно, следов шлейфа на остальных фреймах нет и не бывает, но в этом случае я не получаю обработку события FrameMouseMove, с которого у меня идет вызов специальнызх функций.


Кто нибудь - помогите советом!!!!!!!!!! Погибаю !!!!!!!!!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог