Entwickler-Ecke

Multimedia / Grafik - Rahmen ziehen wie bei Explorer (Win XP).


SHIFTER - Sa 26.07.03 19:42
Titel: Rahmen ziehen wie bei Explorer (Win XP).
Hi,
dann habe ich noch ein problemchen.

Betr. Windows XP
Wenn man mehrere Dateien in den Explorer auswählen möchte kann mann doch mit der maus die gewönschte sachen mackieren.

Wie kann ich so ein Rahmen erstellen ?

Hat schon jemand sich damit beschäftigt ?

Gruss
Seba


UGrohne - Sa 26.07.03 19:53

OK, du brauchst die drei Ereignisse

Folgende globale Variablen werden benötigt:

Delphi-Quelltext
1:
2:
3:
DragStartX,DragStartY,LastX,LastY:integer;
DragAction:Boolean;
OldPenMode:TPen

Und hier ist der Code:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if Button=mbLeft then begin
   DragStartX:=x;
   DragStartY:=y;
   LastX:=x;
   LastY:=y;
   DragAction:=True;
   end;
end;


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if DragAction then begin
   OldPenMode:=Image1.Canvas.Pen;
   with Image1.Canvas do begin
        //altes Rechteck überschreiben
        Pen.Color:=clgray;
        Pen.Mode:=pmNot;
        Brush.Style:=bsClear;
        Rectangle(DragStartX,DragStartY,LastX,LastY);
        //neues Rechteck zeichnen
        if (x-DragstartX)<(y-DragstartY) then x:=(y-DragstartY+DragstartX) else y:=(x-DragstartX+DragstartY);
        Rectangle(DragStartX,DragStartY,x,y);
        LastX:=x;LastY:=y;
        end;
   end;
end;


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if DragAction then begin
     with Image1.Canvas do begin
        //altes Rechteck überschreiben
        Pen.Color:=clgray;
        Pen.Mode:=pmNot;
        Brush.Style:=bsClear;
        Rectangle(DragStartX,DragStartY,LastX,LastY);
        DragAction:=False;
        //Einstellungen wiederherstellen
        Pen:=OldPenMode;
        end;
        if (x=DragStartX) OR (y=DragStartY) then begin
      Exit;
      end;
     end;
end;

Ich hoffe, ich hab alles nicht dazugehörende richtig rausgeschnitten, was war Teil einer ziemlich großen Prozedur :wink:

Anmerkung: Das oben ist von einem alten beitrag von mir rauskopiert und auf ein Image angewendet, aber es müsste bei jeder Kompo mit Canvas funktionieren. Weiß ja net, was Du nimmst, hoffe es hilft Dir


SHIFTER - Sa 26.07.03 22:44

Hi,
und Danke erstmal für die Antwort.

Es ist nicht ganz das was ich suche,
ich suche das in den XP Design.
Wenn Du XP vieleicht hast dann weist du was ich meine ansonsten kann ich ein screenshot posten.

Gruss
seba


Aya - Sa 26.07.03 22:46

Hi,

dafür mußt du nur den Pen und den Brush ändern :)
Damit kannst du dann die LinienFarbe etc festlegen.

Au'revoir,
Aya~


maximus - So 27.07.03 00:43

Ich glaub nicht, dass es ihm um die linienfarbe geht...sondern um die schicke alpha-fläsche (halbtranzparent)! Da wirds schon bischen komplizierter :wink: Wüste jetzt auch nicht wies gemacht wird...