Autor Beitrag
Xornnbasti
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Di 14.06.05 17:34 
Hi Leute!

Bin ein Anfänger auf dem Delphi-Gebiet und soll mittels Click auf eine Paintbox, die mir ein Koordinatensystem und eine Funktion zeichnet, zwei Grenzen einlesen die dann zu weiterer Berechnung der Nullstellen benötigt werden. Meine Frage ist nun wie ich dem Programm beibringe, dass es sich (x1,y1) und (x2,y2) merken soll damit ich dann die Nullstellenberechnung weiterführen kann. Bei meinem Quellcode wird bis jetzt immer ein koordinatenpaar gespeichert, aber beim erneuten Click auf die Paintbox überschrieben:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
   
   begin
     with PaintBox1.Canvas do
     begin

      Pen.Color:=clred;  Brush.Color:=clred;
      Ellipse(X-3,Y-3,X+3,Y+3);
      xa:=X/40-5;
      ya:=-(Y/40-5);
end;

Vielen Dank im Voraus,

Gruß, Basti!

Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 14.06.05 20:06 
Moin und :welcome: im Forum!

Du hast doch zwei Variablen (xa und ya), vermutlich global, deklariert. Du könntest zwei weitere Vars xb und yb, sowie ein Boolean is_b := FALSE; deklarieren. Dann kannst du in der Prozedur folgendes machen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;  
  Shift: TShiftState; X, Y: Integer);  
    
begin  
  with PaintBox1.Canvas do begin  
    Pen.Color := clred;
    Brush.Color := clred;  
    Ellipse(X-3,Y-3,X+3,Y+3);  
    if (is_b) then begin
      xb := X/40-5;  
      yb := -(Y/40-5);  
    end
    else begin
      xa := X/40-5;  
      ya := -(Y/40-5);  
    end;
    is_b := NOT is_b;
  end
end;

Das ist jetzt nicht sonderlich elegant oder effizient, aber ohne mehr von deinem Code oder der Aufgabe zu kennen, fällt mir nichts weiter dazu ein.

cu
Narses