User Tools

Site Tools


start:eti:carte:sources:ugraph

uGraph.pas

ATTENTION: CETTE UNITE N'EST PAS (ENCORE) TERMINEE Le sera-t-elle un jour ?

unit Ugraph;
 
interface
 
uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, DigDisp, IniFiles;
 
type
  TfrmGraph = class(TForm)
    BitBtn1: TBitBtn;
    digdspTitre: TDigitalDisplay;
    Bevel1: TBevel;
    Bevel2: TBevel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    procedure FormActivate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
  private
    { Déclarations private }
  public
    { Déclarations public }
  end;
 
var
  frmGraph: TfrmGraph;
 
implementation
 
{$R *.DFM}
 
USES
  UPrincpl;
 
VAR
  NombrePoints : INTEGER;
  TableauPoints : ARRAY [1..500, 1..4] OF TPoint;
 
PROCEDURE TfrmGraph.FormActivate(Sender: TObject);
VAR
  BoucleCourbes : INTEGER;
  BouclePoints  : INTEGER;
  FicINI        : TIniFile;         { Objet permetant de lire un fichier .INI }
  Frequence     : DOUBLE;
  Precision     : DOUBLE;
  X, Y          : INTEGER;
  SectionINI    : STRING;
 
BEGIN
  Caption := Application.Title;                          { Affichage du titre }
  FOR BouclePoints := 1 TO 500 DO BEGIN
    TableauPoints[BouclePoints, 1].X := 0;
    TableauPoints[BouclePoints, 1].Y := 0;
    TableauPoints[BouclePoints, 2].X := 0;
    TableauPoints[BouclePoints, 2].Y := 0;
    TableauPoints[BouclePoints, 3].X := 0;
    TableauPoints[BouclePoints, 3].Y := 0;
    TableauPoints[BouclePoints, 4].X := 0;
    TableauPoints[BouclePoints, 4].Y := 0;
  END; {FOR}
 
  TRY
    FicINI := TIniFile.Create(fichierini);
    WITH FicINI DO BEGIN
      FOR BoucleCourbes := 1 TO 4 DO BEGIN
        CASE BoucleCourbes OF
          1 : SectionINI := 'GRAPH 0.5';
          2 : SectionINI := 'GRAPH 1.0';
          3 : SectionINI := 'GRAPH 5.0';
          4 : SectionINI := 'GRAPH 10.0';
        END; {CASE OF}
        NombrePoints := ReadInteger(SectionINI, 'NombrePoints', 0);
        IF NombrePoints > 500 THEN NombrePoints := 500;
        FOR BouclePoints := 1 TO NombrePoints DO BEGIN
          { Lit une valeur }
          Frequence := ReadInteger(SectionINI, 'Frequence' + IntToStr(BouclePoints), 0);
          Precision := ReadInteger(SectionINI, 'Precision' + IntToStr(BouclePoints), 0);
          { Conversion }
          X := 200 - Abs(Trunc(Precision));
          Y := Abs(Trunc((35*Ln(Frequence))-100));
          { Stockage }
          TableauPoints[BouclePoints, BoucleCourbes] := Point(X, Y);
        END; {FOR}
      END; {FOR}
    END; {WITH}
  FINALLY
    { De toute façon on passe par là pour retirer FicINI de la mémoire.
      Au cas où il y a eu une erreur lors de la lecture... on ne sait jamais. }
    FicINI.Free;
  END{TRY}
 
end;
 
procedure TfrmGraph.FormPaint(Sender: TObject);
VAR
  BoucleCourbes : INTEGER;
  BouclePoints  : INTEGER;
  ValMax        : INTEGER;
BEGIN
  Canvas.Pen.Color := clGray;
  Canvas.Pen.Width := 1;
  Canvas.Pen.Style := psSolid;
  { Lignes horizontales }
  Canvas.MoveTo(53, 36 + 180);  Canvas.LineTo(474, 36 + 180);          { 90 % }
  Canvas.MoveTo(53, 36 + 160);  Canvas.LineTo(474, 36 + 160);          { 80 % }
  Canvas.MoveTo(53, 36 + 140);  Canvas.LineTo(474, 36 + 140);          { 70 % }
  Canvas.MoveTo(53, 36 + 120);  Canvas.LineTo(474, 36 + 120);          { 60 % }
  Canvas.MoveTo(53, 36 + 100);  Canvas.LineTo(474, 36 + 100);          { 50 % }
  Canvas.MoveTo(53, 36 + 080);  Canvas.LineTo(474, 36 + 080);          { 40 % }
  Canvas.MoveTo(53, 36 + 060);  Canvas.LineTo(474, 36 + 060);          { 30 % }
  Canvas.MoveTo(53, 36 + 040);  Canvas.LineTo(474, 36 + 040);          { 20 % }
  Canvas.MoveTo(53, 36 + 020);  Canvas.LineTo(474, 36 + 020);          { 10 % }
  FOR BoucleCourbes := 1 TO 4 DO BEGIN
    CASE BoucleCourbes OF
        1 : Canvas.Pen.Color := clYellow;
        2 : Canvas.Pen.Color := clRed;
        3 : Canvas.Pen.Color := clAqua;
        4 : Canvas.Pen.Color := clLime;
    END; {CASE OF}
    FOR BouclePoints := 1 TO 500 DO BEGIN
      IF (TableauPoints[BouclePoints, BoucleCourbes].X +
          TableauPoints[BouclePoints, BoucleCourbes].Y) > 0 THEN BEGIN
        Canvas.Ellipse(53 + TableauPoints[BouclePoints, BoucleCourbes].Y - 1,
                       36 + TableauPoints[BouclePoints, BoucleCourbes].X - 1,
                       53 + TableauPoints[BouclePoints, BoucleCourbes].Y + 1,
                       36 + TableauPoints[BouclePoints, BoucleCourbes].X + 1);
      END; {IF}
    END; {FOR}
  END; {FOR}
end;
 
end.
This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
start/eti/carte/sources/ugraph.txt · Last modified: 2016/09/13 23:54 by admin_wiki