was ist neu ¦  programmier tips ¦  indy artikel ¦  intraweb artikel ¦  informationen ¦  links ¦  interviews
 sonstiges ¦  tutorials ¦  Add&Win Gewinnspiel

Tips (1541)

Dateien (137)
Datenbanken (90)
Drucken (35)
Grafik (114)
IDE (21)
Indy (5)
Internet / LAN (130)
IntraWeb (0)
Mathematik (76)
Multimedia (45)
Oberfläche (107)
Objekte/
ActiveX (51)

OpenTools API (3)
Sonstiges (126)
Strings (83)
System (266)
VCL (242)

Tips sortiert nach
Komponente


Tip suchen

Tip hinzufügen

Add&Win Gewinnspiel

Werbung

37 Visitors Online


 
...ein TImage in einer TScrollbox mit der Maus verschieben?
Autor: Ronald Rethfeldt
Homepage: http://www.rogasoft.de
[ Tip ausdrucken ]  

Tip Bewertung (9):  
     


{+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 Platzieren Sie auf einer TForm eine TScrollBox. Fügen Sie dann in
 die TScrollBox ein TImage ein und setzen Sie bei "Left" und "Top"
 jeweils den Wert 0 sowie "Autosize" auf True.
 Weisen Sie dem TImage ein Bild, dessen Maße die der ScrollBox
 überschreiten, zu.

 Hinweis: Beim sehr schnellen Bewegen des Bildes treten allerdings
 noch Fehler auf!

 Tipp: Setzen Sie bei der TScrollBox unter "HorzScrollBar" und
 "VertScrollBar" jeweils das "Tracking" auf True.
 Um ein Bildflackern während des Verschiebens zu vermeiden,
 sollte während dieser Aktion bei der TScrollBox "DoubleBuffered"
 eingeschaltet sein.
 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
 (( The extent of the Bitmap in the TImage should be larger than
    the extent of the ScrollBox ))
 
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}

var
    
StartX,
    StartY,
    MoveX,
    MoveY: Integer;
  IsMoved: Boolean;

implementation

procedure 
TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if 
Button = mbLeft then
  begin
    
IsMoved := True;
    StartX  := X;
    StartY  := Y;
    MoveX   := X;
    MoveY   := Y;
    Scrollbox1.DoubleBuffered := True;
  end;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
  if 
isMoved then
  begin
    if 
(X < MoveX) and
      
((Image1.Left + Image1.Width + 25) > Scrollbox1.Width) then
      
Image1.Left := Image1.Left + (X - StartX);

    if (X > MoveX) and (Image1.Left < 0) then
      
Image1.Left := Image1.Left + (X - StartX);

    if (Y < MoveY) and
      
((Image1.Top + Image1.Height + 25) > Scrollbox1.Height) then
      
Image1.Top := Image1.Top + (Y - StartY);

    if (Y > MoveY) and (Image1.Top < 0) then
      
Image1.Top := Image1.Top + (Y - StartY);

    MoveX := X;
    MoveY := Y;
  end;
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var 
  
tr1, tr2: TRect;
begin
  if 
Button = mbLeft then
  begin
    
IsMoved := False;
    Scrollbox1.DoubleBuffered := False;
  end;
end;


 

Bewerten Sie diesen Tipp:

dürftig
ausgezeichnet


Copyright © by SwissDelphiCenter.ch
All trademarks are the sole property of their respective owners