Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi On mouse down bei canvas (https://www.delphipraxis.net/14849-mouse-down-bei-canvas.html)

maximi 16. Jan 2004 18:11


On mouse down bei canvas
 
Hallo!


Delphi-Quellcode:

type
  TBorderSkin = class(TImage)
  private
    { Private-Deklarationen }
  protected
    x,y:Integer;
    { Protected-Deklarationen }
  public
    Image:Array[0..9] of TImage;
    active_click :Boolean;
    forms:TForm;

  published
    procedure load_imagelist(ImageList:TImageList);
    procedure imagemousedown(Sender: TObject; Button: TMouseButton;
                             Shift: TShiftState; X, Y: Integer);

    procedure imagemouseup(Sender: TObject; Button: TMouseButton;
                             Shift: TShiftState; X, Y: Integer);
    procedure imagemousemove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);

    procedure imagemouseleft(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
    constructor set_koordinaten(Form:TForm;ImageList:TImageList);

    { Published-Deklarationen }
  end;


procedure Register;

implementation

procedure TBorderSkin.imagemouseleft;
begin
  if(active_click = true) then
  begin


  end;
end;


procedure TBorderSkin.imagemousemove;
begin
  if(active_click = true) then
  begin
    ReleaseCapture;
    forms.Perform(wm_syscommand,$f013, 0);
  end;
end;

procedure TborderSkin.imagemouseup;
begin
  active_click := false;
end;

procedure TBorderSkin.imagemousedown;
begin

  active_click := true;
end;

constructor TBorderSkin.set_koordinaten;
var I:Integer;

begin
  forms := form;
  for i := 0 to 9 do
  begin
    Image[i] := TImage.Create(self);
    Image[i].Parent := Form;

    //ganz links oben
    if(i = 0) then
    begin
      Image[i].Top := 0;
      Image[i].Width := 5;
      Image[i].Height := 30;
      Image[i].Left := 0;
      Image[i].OnMouseDown := imagemousedown;
      Image[i].OnMouseUp := imagemouseup;
      Image[i].OnMouseMove := imagemousemove;

    end;

    //mitte oben
    if(i = 1) then
    begin
      Image[i].Top := 0;
      Image[i].Width := trunc((Form.Width-55) / 1.1648522);;
      Image[i].Height := 32;
      Image[i].Left := 4;
      Image[i].Stretch := true;
      Image[i].OnMouseDown := imagemousedown;
      Image[i].OnMouseUp := imagemouseup;
      Image[i].OnMouseMove := imagemousemove;
    end;

    //mitte rechts
    if(i = 2) then
    begin
      Image[i].Top := 0;
      Image[i].Width := 45;
      Image[i].Height := 32;
      Image[i].Left := Image[1].Width + 3;
      Image[i].Stretch := true;
      Image[i].OnMouseDown := imagemousedown;
      Image[i].OnMouseUp := imagemouseup;
      Image[i].OnMouseMove := imagemousemove;
    end;

    if(i = 3) then
    begin
      Image[i].Top := 0;
      Image[i].Width := trunc((Form.Width-21)/7.1333333333);
      Image[i].Height := 32;
      Image[i].Left := Image[1].Width + Image[2].Width + 2;
      Image[i].Stretch := true;
      Image[i].OnMouseDown := imagemousedown;
      Image[i].OnMouseUp := imagemouseup;
      Image[i].OnMouseMove := imagemousemove;
    end;

    if(i = 4) then
    begin
      Image[i].Top := 0;
      Image[i].Width := 5;
      Image[i].Height := 30;
      Image[i].Left := Form.Width-5;
    end;

    if(i = 5) then
    begin
      Image[i].Top := 30;
      Image[i].Width := 5;
      Image[i].Height := Form.Height;
      Image[i].Left := Form.Width-5;
      Image[i].Stretch := true;
      Image[i].OnMouseDown := imagemousedown;
      Image[i].OnMouseUp := imagemouseup;
      Image[i].OnMouseMove := imagemouseleft;
    end;

    if(i = 6) then
    begin
      Image[i].Top := 30;
      Image[i].Width := 5;
      Image[i].Height := Form.Height;
      Image[i].Left := 0;
      Image[i].Stretch := true;
    end;

    if(i = 7) then
    begin
      Image[i].Top := form.Height-5;
      Image[i].Width := Form.width-8;
      Image[i].Height := 5;
      Image[i].Left := 4;
      Image[i].Stretch := true;
    end;

    if(i = 8) then
    begin
      Image[i].Top := 5;
      Image[i].Width := length(form.Caption)*10;
      Image[i].Height := 20;
      Image[i].Left := 30;
      Image[i].Canvas.Font.Size := 12;
      Image[i].Canvas.TextOut(0,0,form.Caption);
      Image[i].Transparent := true;
      Image[i].BringToFront;
      Image[i].OnMouseDown := imagemousedown;
      Image[i].OnMouseUp := imagemouseup;
      Image[i].OnMouseMove := imagemousemove;
    end;

    if(i = 9) then
    begin

    end;
  Form.BorderStyle := bsnone;
  end;
end;


procedure TBorderSkin.load_imagelist;
var i:Integer;
begin
  for i := 0 to 9 do
  begin

      ImageList.GetBitmap(i,Image[i].Picture.Bitmap);


  end;

end;
Wenn ich auf ein Image mit Canvas etwas zeichne funktioniert mein mousedown nicht mehr.(siehe procedure set_koordinaten bei dem if(i = 8')).Wie geht das

Hiermit
ReleaseCapture;
Perform(wm_syscommand,$f013, 0);
kann ich ja mein Form verschieben, aber wie kann ich, wenn ich an die Außenränder meines Forms gehe die Größe verändern?

Danke

maximi 17. Jan 2004 06:58

Re: On mouse down bei canvas
 
Kann mir keiner helfen?

Luckie 17. Jan 2004 07:06

Re: On mouse down bei canvas
 
Dein Thread ist noch nicht mal 13 Stunden halt und das noch über Nacht. Unterlass bitte in Zukunft solchen "nach oben holen" nach so kurzer Zeit - und das, wie schon gesagt, auch noch über Nacht.

SirThornberry 17. Jan 2004 08:50

Re: On mouse down bei canvas
 
Also ich hab das ganze mal bei mir ausgeführt und das image[8] eingefärbt. Allerdings hab ichs dann beim ausführen nie gesehen, also woher weißt du dasses mausdown nicht funktioniert?

Dein Quelltext muss ich auch mal bissl kritisieren.
Warum setzt du bei jedem Schleifendurchlauf den borderstyle erneut auf bsnone??
Es würd übersichtlicher sein wenn du nur das Image.create und das parentsetzen in eine schleife machst und die anderen images direkt mit image[i] initialisierst...

Sharky 17. Jan 2004 09:10

Re: On mouse down bei canvas
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hai maximi,

ich habe mal zum Spass deinen Constructor vom Quellcode geändert.

Ist doch irgendwie übersichtlicher finde ich:

maximi 17. Jan 2004 20:22

Re: On mouse down bei canvas
 
Danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz