Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Drag and Drop in der Paintbox


u-schas - Di 14.06.05 11:47
Titel: Drag and Drop in der Paintbox
Ich habe ein paar Punkte in der Paintbox, die ich verschieben möchte, allerdings tut sich da gar nichts bei mir. Ich habe die Punkte schon vergrößert, so dass man sie auf jedenfall treffen müsste.

Wo ich mir nicht sicher bin, ist das leeren der Paintbox und das neue aufbauen. Das mache ich einfach, indem ich die alten Buttons noch einmal drücken lasse!
Das ganze sieht dann bei mir so aus:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
//Drug and Drop Funktion
procedure TForm2.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);

var     tmp ,i: Integer;
        m : tpoint;
begin
tmp := getAnzahl_punkte;
for i:= 1 to tmp do
        begin
        m:= kontrollpixelzu(i);
        if (m.x= X) and (m.y=Y) then
        begin
                setkontrollnr(i);
        end;
        end;
end;

procedure tform2.paintbox1mouseup(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
  var i , Abstand_x, Abstand_y: Integer;
      m : tpoint;
      n : tmypoint;
      Laenge_x , Laenge_y: real;
begin
i:= getkontrollnr;
m:= kontrollpixelzu(i);
m.x:=X;
m.y:=Y;
kontrollpixelaus(m,i);

Laenge_x:= (getmax_x+1)-(getmin_x-1);
Abstand_x:=(paintbox1.Width-(2*Rand)) div trunc(Laenge_x)+1;

Laenge_y:= (getmax_y+1)-(getmin_y-1);
Abstand_y:=(paintbox1.height-(2*Rand)) div trunc(Laenge_y)+1;

n.x :=  ((X-Rand)/Abstand_x)+(getmin_x-1);
n.y := ((paintbox1.Height-Rand-Y)/Abstand_y)+(getmin_y-1);
kontrollpunktaus(n,i);

paintbox1.canvas.Brush.color := clBlack;
paintbox1.canvas.fillrect(paintbox1.canvas.cliprect);


form1.button4.click;
form1.Button6.click;
form2.showmodal;
end;


Moderiert von user profile iconGausi: Code- durch Delphi-Tags ersetzt.


Narses - Di 14.06.05 20:14

Moin!

Sorry, aber weder deine Beschreibung noch dein Code lassen mich erahnen, was du da tust und was auch nur ansatzweise "falsch" dabei sein könnte. :gruebel:

Ich schätze, du mußt dein Problem etwas konkreter formulieren, so werde ich (und scheinbar auch sonst hier keiner) schlau daraus. :wink:

cu
Narses