![]() |
Paintbox
Hallo, wir müssen für die Uni ein Programm mit Delphi schreiben in dem in einer Paintbox 3 Punkte durch anklicken eingegeben werden sollen. Von diesen Punkten brauche ich die Koordinaten.
Dummerweise kenne ich mich mit Delphi überhaupt nicht aus. Ich war schon froh als ich den Paintbox-Button in Delhi gefunden hab. :tongue: Wenn mir also jemand mal erklären könnte wie so was funktioniert wäre ich dankbar. Mfg Stefan |
Re: Paintbox
Schau dir dazu am besten die Ereignisse OnMouseUp oder OnClick an.
Im OnMouseUp bekommst die Koordinaten gleich mitgeliefert, an welchem Punkt über der Paintbox ein Mausknopf losgelassen wurde. Im OnClick musst noch mit Mouse.CursorPos.X/Mouse.CursorPos.Y und PaintBox.ScreenToClient rumhantieren. |
Re: Paintbox
erstmal danke.
wie mache ich das denn dann wenn ich 3 punkte hintereinander in der painbox anklicken will und alle 6 koordinaten zum rechnen benötige? |
Re: Paintbox
Hab ich ja total verschlafen:
Willkommen in der Delphi-PRAXiS :) :party: Dann musst dir überlegen, wie du mehrere Koordinaten speichern möchstest. Einige Kandidaten wären da TStringList oder ein Array. Ich würde das Array bevorzugen, denn dann könntest du z.b. machen:
Delphi-Quellcode:
Somit hättest du ein Array mit 6 Elementen (#1 hat den Index 0, #6 den Index 5).
var MeineKoordinaten: array [0..5] of TPoint;
Dann könntest du dir einen Integer nehmen, welcher speichert welche Koordinate als nächstes gefüllt wird.
Delphi-Quellcode:
Das müsste eigentlich die Grundaspekte erklären.
// global
var MeineKoordinaten: array [0..5] of TPoint; AktuelleKoordinate: integer; // im FormCreate: AktuelleKoordinate := 0; procedure PaintBox.OnMouseUp(Sender: TObject; X,Y: integer); begin // prüfen, ob noch Elemente ausstehen if AktuelleKoordinate <= 5 then begin // Koordinate speichern MeineKoordinate[AktuelleKoordinate].X := X; MeineKoordinate[AktuelleKoordinate].Y := Y; // Zeige auf nächstes Feld setzen inc(AktuelleKoordinate); end else begin // mit Koordinaten rechnen bla blubb // Koordinatenzeiger reset AktuelleKoordinate := 0; end; end; |
Re: Paintbox
hey super danke damit sollte ich was anfangen können.
|
Re: Paintbox
Wie kann ich denn real-werte in integer-werte umwandeln?
Wir sollen die Berechnung nämlich in real-Arithmetik realisieren. Und wenn jemand weiss wie sich aus den 3 Koordinaten der Mittelpunkt des Umkreises ermitteln lässt, ich bin für jede Hilfe dankbar. |
Re: Paintbox
Zitat:
Delphi-Quellcode:
rundet dir diesen wert auf integer
round(wert);
|
Re: Paintbox
Bitte startet für eine neue Frage einen neuen Thread, sonst geht hier alles durcheinander. Danke.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz