Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.05.06;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.047 c
3-1171881112
EvChul
2007-02-19 13:31
2007.05.06
Как узнать о завершении асинхронной операции.


3-1171571532
KOSS
2007-02-15 23:32
2007.05.06
экспорт изображения


1-1173269911
ElectriC
2007-03-07 15:18
2007.05.06
Обработка ошибок(Исключений)


2-1176625469
ari_9
2007-04-15 12:24
2007.05.06
не могу сделать Run из Delphi, хотя собранный .exe работает


8-1156315403
Maxim new
2006-08-23 10:43
2007.05.06
Ассоциация файлов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский