Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Paintbox (https://www.delphipraxis.net/68165-paintbox.html)

Stefbeck 25. Apr 2006 16:49


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

H4ndy 25. Apr 2006 17:04

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.

Stefbeck 25. Apr 2006 18:51

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?

H4ndy 26. Apr 2006 09:04

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:
var MeineKoordinaten: array [0..5] of TPoint;
Somit hättest du ein Array mit 6 Elementen (#1 hat den Index 0, #6 den Index 5).
Dann könntest du dir einen Integer nehmen, welcher speichert welche Koordinate als
nächstes gefüllt wird.
Delphi-Quellcode:
// 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;
Das müsste eigentlich die Grundaspekte erklären.

Stefbeck 26. Apr 2006 15:47

Re: Paintbox
 
hey super danke damit sollte ich was anfangen können.

Stefbeck 2. Mai 2006 15:27

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.

pacman1986 2. Mai 2006 15:32

Re: Paintbox
 
Zitat:

Zitat von Stefbeck
Wie kann ich denn real-werte in integer-werte umwandeln?

Delphi-Quellcode:
round(wert);
rundet dir diesen wert auf integer

Luckie 2. Mai 2006 16:10

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