Hallo
ich wollte mal eben ein neues (kleines) Projekt angehen, nämlich ein Koordinatensystem mit einer Paintbox zeichnen lassen.
Damit möchte ich dann später verschiedene Funktionen zeichnen...
Bin noch am Anfang und lasse das ganze noch etwas schlicht und einfach also ohne viel Buttons und ähnliches. Das heißt momentan habe ich eigentlich nur meine PaintBox auf meiner Form und sonst nichts. Ich habe mir das so gedacht, dass ich das Koordinatensystem in der FormCreate zeichnen lasse, also beim starten der Anwendung, wenn das Fenster erscheint.
Hierbei bin ich auch schon auf mein erstes Problem gestoßen: Das Koordinatensystem wird nicht gezeichnet.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TForm1.FormCreate(Sender: TObject); var x,y:integer; begin
x:=Form1.Width-40; y:=Form1.Height-60;
with paintbox1.Canvas do begin moveto(0,round(y/2));lineto(x,round(y/2)); moveto(round(x/2),0);lineto(round(x/2),y); end;
end; |
Nachdem ich unter Ereignisse/OnClick auf FormCreate verwiesen habe, funktionierte das auch - nur eben mit einem Klick auf die Form.
Das heißt, mein Code ist soweit richtig, nur ich wüsste eben gerne, warum es nicht einfach auch mit der FormCreate geht.
Denn anscheinend habe ich das noch nicht so richtig verstanden.
Danach habe ich mir noch eine FormResize-Prozedur erstellt, damit auch die PaintBox bei verändern der Fenstergröße (bei laufender Anwendung) proporional dazu mit vergrößert oder verkleinert wird:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure TForm1.FormResize(Sender: TObject); var x,y:integer; begin
PaintBox1.Left:=10; PaintBox1.Top:=10; PaintBox1.Height:=Form1.Height-60; PaintBox1.Width:=Form1.Width-40;
x:=Form1.Width-40; y:=Form1.Height-60;
with paintbox1.Canvas do begin moveto(0,round(y/2));lineto(x,round(y/2)); moveto(round(x/2),0);lineto(round(x/2),y); end;
end; |
Als ich dann auch noch den Inhalt der Painbox mit vergrößern/verkleinern wollte (unter dem zweiten Kommentar) hat das nicht geklappt. Der einzige Effekt, den dieser Teil meines Codes hat, ist das automatische Erscheinen des Koordinatensystems, was ich bisher nur mit "OnClick" erreichte. Aber sobald ich mit der Maus die Größe des Fensters verändere, schrumpft oder wächst zwar die Painbox mit, aber nicht deren Inhalt. Dieser erscheint dann erst nach einem Klick auf die Form wieder.
Gibt es da eine Möglichkeit wie ich das ändern kann?
Bin um jeden kleinen Tipp dankbar
lg r@cer