Avatar billede futterama Nybegynder
15. december 2004 - 10:57 Der er 8 kommentarer og
1 løsning

Hvordan laver man en "markeringsfirkant"?

Hej,

Er der nogen der ved hvordan man laver sådan en "markeringsfirkant" af den type som fremkommer når man markerer flere ikoner med musen i Windows?
Avatar billede Slettet bruger
15. december 2004 - 12:11 #1
Avatar billede futterama Nybegynder
15. december 2004 - 12:13 #2
Det har jeg set og der står intet...
Avatar billede Slettet bruger
15. december 2004 - 12:14 #3
Jo der gør.
Avatar billede futterama Nybegynder
15. december 2004 - 12:15 #4
Så vis mig koden ;-)
Avatar billede Slettet bruger
15. december 2004 - 12:16 #5
Læs det afsnit nico26 skriver om. Der er også kodeeksempler.
Avatar billede futterama Nybegynder
15. december 2004 - 12:22 #6
Jeg HAR læst det, og det de mener med "rubber banding" er det samme som der sker hvis du vil tegne en ret linie i Word eller Paint. Den tegner stregen mens man trækker i den. Det har intet med firkantede markeringer at gøre.
Avatar billede Slettet bruger
15. december 2004 - 14:53 #7
Det er jo bare at tegne en firkant i stedet for en ret linje.
Avatar billede eht Nybegynder
15. december 2004 - 19:54 #8
Hej futterama
Prøv denne kode, som tegner en firkant på formen.

//EHT

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
  TForm1 = class(TForm)
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  var
  A, B, C, D: TPoint;
  XStart, YStart: Integer;
const
  CanDraw:boolean = false;

implementation

{$R *.DFM}
procedure Tegn(PenMode: TPenMode; PenColor: integer; Penwidth: integer;PenStyle:TPenStyle);
begin
with Form1.Canvas do
  begin
    Pen.Mode := PenMode;
    Pen.Style := PenStyle;
    Pen.Width := Penwidth;
    Pen.color := Pencolor;
    PolyLine([A, B, D, C, A]);
  end;
end;

procedure StartSlutFelt(X, Y: Integer);
begin
  A.X := XStart;
  A.Y := YStart;
  B.X := X;
  B.Y := A.Y;
  C.X := A.X;
  C.Y := Y;
  D.X := B.X;
  D.Y := C.Y;
  Tegn(pmNotXor, clBlack, 1,psDot);
end;

procedure FlytteFelt(X, Y: integer);
begin
  Tegn(pmNotXor, clBlack, 1,psDot); //tegner
  A.X := XStart;
  A.Y := YStart;
  B.X := X;
  B.Y := A.Y;
  C.X := A.X;
  C.Y := Y;
  D.X := B.X;
  D.Y := C.Y;
  Tegn(pmNotXor, clBlack, 1,psDot); //sletter igen

end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if CanDraw then FlytteFelt(X, Y);
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  XStart := X;
  YStart := Y;
  StartSlutFelt(X, Y);
  CanDraw := true;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
CanDraw := false;
FlytteFelt(X, Y);
StartSlutFelt(X,Y);
end;

end.
Avatar billede futterama Nybegynder
16. december 2004 - 07:50 #9
Med nogle få ændringer virker det som jeg gerne vil have det, tak :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester