Autor Beitrag
SHIFTER
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 65

Win 2k SRV, Win XP, Vista, SuSe Linux SRV
Delphi 11
BeitragVerfasst: Sa 26.07.03 19:42 
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Sa 26.07.03 19:53 
OK, du brauchst die drei Ereignisse
  • OnMouseDown
  • OnMouseUp
  • OnMouseMove

Folgende globale Variablen werden benötigt:
ausblenden Delphi-Quelltext
1:
2:
3:
DragStartX,DragStartY,LastX,LastY:integer;
DragAction:Boolean;
OldPenMode:TPen

Und hier ist der Code:
ausblenden 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;

ausblenden 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;

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 65

Win 2k SRV, Win XP, Vista, SuSe Linux SRV
Delphi 11
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: 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~

_________________
Aya
I aim for my endless dreams and I know they will come true!
maximus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: 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...

_________________
mfg.
mâximôv