AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Statistikprogramm

Ein Thema von ichbinesnur · begonnen am 23. Mär 2006 · letzter Beitrag vom 24. Mär 2006
 
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Statistikprogramm

  Alt 24. Mär 2006, 18:21
Zuerst ist zu sagen, dass der Code vom Stil her recht schlecht ist. Was passiert z.B. wenn du das Fenster größenmäßig etwas veränderst? Dann musst du jede Zeile umschreiben.
Den Abstand der Striche kannst du auch per
d := round( (image.width-30)/ (AnzahlDerSpiele+1) ) ausrechnen. Wobei die 30 dafür sorgen sollten, dass links und rechts noch ein bischen Platz ist.

Zum eigentlichen Problem:

Du brauchst eigentlich nur den Umrechnungsfaktor TabellenPlatz -> Pixel und aktuelle Saison -> Pixel.
Zweiteres habe ich oben schon angedeutet.
Für die dritte Saison z.B. muss du den Punkt bei x = 15+3*d setzen.

Für den Tabellenplatz wirds auch ähnlich:
Sei s die Differenz zwischen bestem und schlechtestem Platz, dann sei
d' := round( (image.height-30) / (s+1) ); Dann gilt für die y-Koordinate
y:= round ( image.height-( 15+d'* [(PlatzInDieserSaison)-(PlatzInDerSchlechtestenSaison)] ) ); Die geschätzen 30 Pixel sind eigentlich auch nicht optimal gelöst, sollten aber für die meisten Größen funktionieren.
Mit den Gleichungen kannst du auch die Beschriftung anbringen, so dass dadurch auch sehr viel Tipparbeit entfällt. Auch die Pfeilspitzen kannst du relativ zur Bildgröße zeichnen lassen, dann solltest du für einen so gestalteten Code auch mehr Punkte bekommen, als für deinen sehr starren, den du jetzt hast.

Schau dir vielleicht auch mal einen Styleguide zum Thema Einrücken an. Du hast unten einfach nur 3 end; geschrieben und ich wette, du kannst nicht sofort sagen, welches eigentlich was bedeutet.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin

with pb_diagramm.Canvas do
begin
 Moveto (20,10); //Ordinatenachse mit Pfeilspitzen
 //
 Lineto (15,20);

 For i:=1 to 18 do //Einteilung der Achse
 begin
  Moveto (20,400-i*21);
  Lineto (15,400-i*21);
 end;

 Textout (30,10,'Platzierungen'); //Beschriftung
 Textout (5,17,'1');
 //
 Textout (1,373,'18');

 Moveto (20,400); //Abzissenachse mit Pfeilspitzen
 //
 Lineto (400,405);

 For i:=1 to 10 do
 begin
  Moveto (410-i*35,400);
  Lineto (410-i*35,405);

  Textout (45,405,'95/96');
  //
  Textout (400,405,'Saisons');
 end;

end; // of with pb_diagramm.Canvas do

end; // of Button1.click
Meine persönliche Meinung zu einem lesbaren Code.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
 


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 08:32 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-2025 by Thomas Breitkreuz