Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.06;
Скачать: CL | DM;

Вниз

Timage   Найти похожие ветки 

 
mahab ©   (2007-04-16 18:13) [0]

Здравствуйте мастера! Двигаю мышью по форме Timage - мерцает. Как бы этот момент поправить?


 
Kolan ©   (2007-04-16 18:13) [1]

> [0] mahab ©   (16.04.07 18:13)
> Здравствуйте мастера! Двигаю мышью по форме Timage — мерцает.
> Как бы этот момент поправить?

DoubleBuffered := True;
?


 
mahab ©   (2007-04-16 18:27) [2]

Прошу пояснить. При установке этого свойства на форме остается след от рисунка.


 
Kolan ©   (2007-04-16 18:29) [3]

У картинки установи.


 
mahab ©   (2007-04-16 18:50) [4]

После установки у картинки свойства, при завершении программы выдается ошибка доступа. Я правильно установил  свойство TWincontrol(Image1).DoubleBuffered:=true;  ?


 
Kolan ©   (2007-04-16 18:59) [5]

Не неправильно. Я думал у TImage оно есть.

Так значит просто водите мышкой а Timage мигает?
Или вы таскаете сам Image.
Если последнее покажите код как таскаете&#133


 
mahab ©   (2007-04-16 19:08) [6]

Таскаю сам компонент. Может отловить paint но как? Tgraphiccontrol в диспетчеризации WM_PAINT не учавствуют.

procedure TForm1.FormCreate(Sender: TObject);    //Классика

begin
move:=false;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
If Button<>mbleft then exit;
move:=true;

x0:=x;y0:=y;

end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
begin
if move=false then exit;

Image1.Left:=Image1.Left+X - X0 ;
Image1.Top:=Image1.Top+Y - Y0 ;
X0 := X;
Y0 := Y;

end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 move:=false;

end;


 
Kolan ©   (2007-04-16 19:17) [7]

Я незнаю, единственное
Не,
Image1.Left:=Image1.Left+X &#151; X0 ;
Image1.Top:=Image1.Top+Y &#151; Y0 ;


а


if Sender is TImage then
 with (Sender as TImage) do
 begin
   Left:=Left+X &#151; X0 ;
   Top:=Top+Y &#151; Y0 ;  
 end;


Но это врядли поможет


 
Gadenysh   (2007-04-16 19:23) [8]

сам столкнулся с таким. GraphicControl - ы не только мигают, еще и тормозят где-то неимоверно, если их таскать таким способом. Подскажите куда копать, кто знает


 
{RASkov}   (2007-04-16 21:07) [9]

> [6] mahab ©   (16.04.07 19:08)

> [8] Gadenysh   (16.04.07 19:23)
> Подскажите куда копать

Не таскать GraphicControl - ы по форме, а рисовать картинки на канве формы...


 
Gadenysh   (2007-04-17 18:02) [10]


> {RASkov}   (16.04.07 21:07) [9]


картинки рисовать - не пойдет. У меня, например, на этих графикконтролах еще лежат всякие кнопочки, лабелы и прочая, да и с фоном при таскании как быть? с наложением контролов итп - все вручную?

может есть чюдесный ход - чтобы ррраз и все стало летать? и почему WinControl - ы при аналогичных операциях так погано себя не ведут?


 
{RASkov}   (2007-04-17 18:23) [11]

> У меня, например, на этих графикконтролах еще лежат всякие
> кнопочки, лабелы и прочая,

Это что же за графконтролы, которые могут содержать другие контролы?


 
Зяма   (2007-04-17 18:24) [12]

У меня, например, на этих графикконтролах еще лежат всякие кнопочки, лабелы и прочая, да и с фоном при таскании как быть? с наложением контролов итп - все вручную?

ГрафикКонтрол не может быть Парент"ом других контролов. По природе своей. Как ты умудрился так сделать?


 
Gadenysh   (2007-04-17 19:26) [13]

хыхы, вручнуйю все отрисовано и функцыонал тоже вручную


 
Зяма   (2007-04-17 19:33) [14]

с наложением контролов итп - все вручную?

хыхы, вручнуйю все отрисовано и функцыонал тоже вручную


Вот это действительно хыхы...


 
Vovan #2   (2007-04-17 23:13) [15]

Оно не мигает, оно дёргается.

DoubleBuffered надо ставить у формы, т.е. у парента.

Из обработчика OnMouseMove убрать последнюю строку:


 if move = false then exit;
 Image1.Left:=Image1.Left+ X - X0 ;
 Image1.Top:=Image1.Top+Y - Y0 ;
//  X0 := X; Y0 := Y;


Проверено - не мерцает, плавно ходит за мышкой.


 
Kolan ©   (2007-04-18 12:23) [16]

> X0 := X; Y0 := Y;

Вообще не нужны, проверил&#133


 
Gadenysh   (2007-04-18 13:16) [17]


> Vovan #2   (17.04.07 23:13) [15]
> Оно не мигает, оно дёргается.


вот именно, дергается, а почему?


 
{RASkov}   (2007-04-18 15:31) [18]

> [17] Gadenysh   (18.04.07 13:16)

var  OldX, OldY: Integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 DoubleBuffered:=True;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 if Button<> mbLeft then Exit;
 OldX:=X; OldY:=Y;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
 if not (ssLeft in Shift) then Exit;
 Image1.SetBounds(Image1.Left+X-OldX, Image1.Top+Y-OldY, Image1.Width, Image1.Height);
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 if Button<> mbLeft then Exit;
 Image1MouseMove(Sender, [ssLeft], X, Y);
end;

end.

Ну вот ничего не дергается, фик его знает почему у вас дергается... Мышой может быстро дергаете?


 
Kolan ©   (2007-04-18 15:33) [19]

>
> вот именно, дергается, а почему?

Потому что неверно написано&#133


procedure TForm3.Image1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 if Sender is TImage then
 begin
   FMoseDown := True;
 end;
end;

procedure TForm3.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
begin
 if (Sender is TImage) and FMoseDown then
 begin
   with (Sender as TImage) do
   begin
     Top := Top + Y &#151; Round(Height/2);
     Left := Left + X &#151; Round(Width/2);
   end;
 end;
 
end;

procedure TForm3.Image1MouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 if Sender is TImage then
   FMoseDown := False;
end;



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

Текущий архив: 2007.05.06;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.022 c
2-1176572835
Malik
2007-04-14 21:47
2007.05.06
Матстера нужна помощь! Вопрос про работу с памятью...


2-1176443674
vitv
2007-04-13 09:54
2007.05.06
DBGrid-блокировка ввода текста с клавиатуры


15-1176037084
palva
2007-04-08 16:58
2007.05.06
Вьюга в Москве


5-1153210679
DevilDevil
2006-07-18 12:17
2007.05.06
Как отследить изменение размера TCustomControl компонента?


15-1175973230
McSimm
2007-04-07 23:13
2007.05.06
новости Fast Reports - FastReport 4.02 c поддержкой Delphi 2007