AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi die 0,0 koordinate in der PB verändert sich ständig
Thema durchsuchen
Ansicht
Themen-Optionen

die 0,0 koordinate in der PB verändert sich ständig

Ein Thema von danielkussin · begonnen am 6. Dez 2003 · letzter Beitrag vom 6. Dez 2003
Antwort Antwort
danielkussin

Registriert seit: 26. Nov 2003
Ort: Rellingen
16 Beiträge
 
#1

die 0,0 koordinate in der PB verändert sich ständig

  Alt 6. Dez 2003, 11:52
hi...

wir haben ein kleines problem mit unserer prozedur.
unsere paintbox ist 300x300 gross. und in dieser sollen wir verschiedene geometrische figuren erstellen können. diese sollen nur dann dargestellt werden wenn diese auch ganz in die box passen.
in der unten eingefügten prozedur kann man sehen wie wir die position in der paintbox berechnen.
die x-position -242 und die y-position -153 ist die 0,0 koordinate in der paintbox.
und genau da steckt das problem. die werte -242 und -153 passen machmal nicht mehr.
man kann das programm einige male starten und immer stimmen die koordinaten. doch dann passiert es immer wieder das man die werte veränder muss damit die koordinaten stimmen.... dies passiert auch, wenn man am quellcode nichts weiter verändert hat.



procedure THURecords.PaintBoxMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

var
a, b : integer;
begin
resetPaintBox;
a := mouse.CursorPos.x-242;
b := mouse.CursorPos.y-153;
HURecords.lbXpos.Caption := IntToStr(a);
HURecords.lbYpos.Caption := IntToStr(b);
if RandChecked then
Zeichnen;
end;



vielen dank schon mal...
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: die 0,0 koordinate in der PB verändert sich ständig

  Alt 6. Dez 2003, 12:28
Zitat von danielkussin:
resetPaintBox;
Jetzt sollte man noch wissen, was resetPaintBox so alles anstellt.

Zitat:
a := mouse.CursorPos.x-242;
b := mouse.CursorPos.y-153;
Auch eine Möglichkeit um von Screen-Koordinaten auf die Client-Koordinaten zu schließen. Dafür gibt es aber die ScreenToClient Methode von TControl, die auch die PaintBox besitzt.
Warum benutzt du eigentlich nicht den X und Y Parameter, der bereits als Client-Koordinate vorliegt?
  Mit Zitat antworten Zitat
danielkussin

Registriert seit: 26. Nov 2003
Ort: Rellingen
16 Beiträge
 
#3

Re: die 0,0 koordinate in der PB verändert sich ständig

  Alt 6. Dez 2003, 12:45
mit resetPaintbox wird ans ich nicht viel gemacht:

Delphi-Quellcode:
procedure THURecords.ResetPaintBox;
begin
  Paintbox.canvas.brush.color := clWhite;
  PaintBox.Canvas.FillRect(Rect(0,0,Paintbox.Width,Paintbox.Height));
end;
habe mir eben mal die hilfe in delphi zu "ScreenToClient" angeschaut. aber irgendwie werde ich daraus nicht so wirklich schlau

Zitat:
Warum benutzt du eigentlich nicht den X und Y Parameter, der bereits als Client-Koordinate vorliegt?
meinst du damit diese werte: mouse.CursorPos.x ; mouse.CursorPos.y ?
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

Re: die 0,0 koordinate in der PB verändert sich ständig

  Alt 6. Dez 2003, 13:02
Zitat von danielkussin:
PaintBox.Canvas.FillRect(Rect(0,0,Paintbox.Width,P aintbox.Height));
Das liese sich auch so schreiben:
PaintBox.Canvas.FillRect(Paintbox.ClientRect);
Zitat:
habe mir eben mal die hilfe in delphi zu "ScreenToClient" angeschaut. aber irgendwie werde ich daraus nicht so wirklich schlau
Also die Hilfe die ich zu TControl.ScreenToClient habe ist eigentlich sehr einleuchtend. Aber vielleicht hast du ja eine andere
Delphi-Quellcode:
var pt: TPoint;
begin
  Pt := PaintBox.ScreenToClient(Mouse.CursorPos);
  // mit Pt.X, Pt.Y arbeiten
end;


Zitat:
meinst du damit diese werte: mouse.CursorPos.x ; mouse.CursorPos.y ?
Nein.
Damit meine ich
Zitat:
procedure THURecords.PaintBoxMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  Mit Zitat antworten Zitat
danielkussin

Registriert seit: 26. Nov 2003
Ort: Rellingen
16 Beiträge
 
#5

Re: die 0,0 koordinate in der PB verändert sich ständig

  Alt 6. Dez 2003, 13:24
Zitat:
PaintBox.Canvas.FillRect(Paintbox.ClientRect);
supi... das klappt echt wunderbar. so ist die zeile um einiges besser... danke

Zitat:
Also die Hilfe die ich zu TControl.ScreenToClient habe ist eigentlich sehr einleuchtend. Aber vielleicht hast du ja eine andere
hehe... nee liegt eher am anwender als an der version
weiss immernoch nicht so ganz wie ich das in mein programm einbauen soll. aber ich probiere da einfach nochmal bischen rum.
muss bloss mit meinen variablen so weiterarbeiten (a,b) da ich die im rest des progs auch verwende und das nicht alles nochmal umschreiben möchte
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz