Gebruiker:Michiel1972/Delphi code bevolkingspiramides

Zie de categorie Population pyramids of municipalities of the Netherlands van Wikimedia Commons voor mediabestanden over dit onderwerp.

<nowiki>
unit Unit1;

interface

uses
  Windows, clipbrd, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    PaintBox1: TPaintBox;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);
  private
  bitmap, bitmap2, bitmap3 : Tbitmap;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
F: textfile;
naam : array[1..443] of string;
m1,m2,m3,m4,m5,m6,m7,m8,m9,m10: array[1..443] of integer;
v1,v2,v3,v4,v5,v6,v7,v8,v9,v10: array[1..443] of integer;
mtotaal:    array[1..443] of integer;
vtotaal:    array[1..443] of integer;

S: string;
i,j:integer;
MyRect, MyOther: TRect;
           pixperprec:single;
xwidth:integer;

begin

AssignFile(F, 'cbsdata2007.txt');
Reset(F);

for i:=1 to 443 do
   begin
   Readln(F, S);
   naam[i]  :=trim(Copy(S, 1, 30));
   m1[i]    :=strtoint(Copy(S, 52, 14));
   v1[i]    :=strtoint(Copy(S, 66, 14));
   Readln(F,S);
   m2[i]    :=strtoint(Copy(S, 52, 14));
   v2[i]    :=strtoint(Copy(S, 66, 14));
      Readln(F,S);
   m3[i]    :=strtoint(Copy(S, 52, 14));
   v3[i]    :=strtoint(Copy(S, 66, 14));
      Readln(F,S);
   m4[i]    :=strtoint(Copy(S, 52, 14));
   v4[i]    :=strtoint(Copy(S, 66, 14));
      Readln(F,S);
   m5[i]    :=strtoint(Copy(S, 52, 14));
   v5[i]    :=strtoint(Copy(S, 66, 14));
      Readln(F,S);
   m6[i]    :=strtoint(Copy(S, 52, 14));
   v6[i]    :=strtoint(Copy(S, 66, 14));
      Readln(F,S);
   m7[i]    :=strtoint(Copy(S, 52, 14));
   v7[i]    :=strtoint(Copy(S, 66, 14));
      Readln(F,S);
   m8[i]    :=strtoint(Copy(S, 52, 14));
   v8[i]    :=strtoint(Copy(S, 66, 14));
      Readln(F,S);
   m9[i]    :=strtoint(Copy(S, 52, 14));
   v9[i]    :=strtoint(Copy(S, 66, 14));
      Readln(F,S);
   m10[i]    :=strtoint(Copy(S, 52, 14));
   v10[i]    :=strtoint(Copy(S, 66, 14));

   mtotaal[i]:=m1[i]+m2[i]+m3[i]+m4[i]+m5[i]+m6[i]+m7[i]+m8[i]+m9[i]+m10[i];
   vtotaal[i]:=v1[i]+v2[i]+v3[i]+v4[i]+v5[i]+v6[i]+v7[i]+v8[i]+v9[i]+v10[i];


   

Bitmap := TBitmap.Create;
Bitmap2 := TBitmap.Create;
Bitmap3 := TBitmap.Create;
Bitmap.Width  := 350;      //x   [25-325]
Bitmap.Height := 370;      //y   [375-25]

Form1.Paintbox1.Canvas.Pen.Width:=1;
Form1.Paintbox1.Canvas.Pen.Color:=clWhite;
Form1.Paintbox1.Canvas.Brush.Color:=clWhite;
Form1.Paintbox1.Canvas.Rectangle(0, 0, 350, 400);

Bitmap2.LoadFromFile('m.bmp');
Bitmap3.LoadFromFile('v.bmp');
Form1.Paintbox1.Canvas.Draw(20, 25, Bitmap2) ;
Form1.Paintbox1.Canvas.Draw(305, 25, Bitmap3) ;

Form1.Paintbox1.Canvas.Pen.Width:=1;
Form1.Paintbox1.Canvas.Pen.Color:=clBlack;
//axis
  //x
Form1.Paintbox1.Canvas.MoveTo(16, 325);
Form1.Paintbox1.Canvas.LineTo(148, 325);

Form1.Paintbox1.Canvas.MoveTo(202, 325);
Form1.Paintbox1.Canvas.LineTo(333, 325);

     //y
Form1.Paintbox1.Canvas.MoveTo(148, 325);
Form1.Paintbox1.Canvas.LineTo(148, 25);
Form1.Paintbox1.Canvas.MoveTo(202, 325);
Form1.Paintbox1.Canvas.LineTo(202, 25);

//parts on x as
// 18 - 148  goed voor 20%, dus 130px / 20 = 6.55px per procent
Form1.Paintbox1.Canvas.MoveTo(18, 325);
Form1.Paintbox1.Canvas.LineTo(18, 329);
Form1.Paintbox1.Canvas.MoveTo(53, 325);
Form1.Paintbox1.Canvas.LineTo(53, 329);
Form1.Paintbox1.Canvas.MoveTo(83, 325);
Form1.Paintbox1.Canvas.LineTo(83, 329);
Form1.Paintbox1.Canvas.MoveTo(115, 325);
Form1.Paintbox1.Canvas.LineTo(115, 329);
Form1.Paintbox1.Canvas.MoveTo(148, 325);
Form1.Paintbox1.Canvas.LineTo(148, 329);

Form1.Paintbox1.Canvas.MoveTo(202, 325);
Form1.Paintbox1.Canvas.LineTo(202, 329);
Form1.Paintbox1.Canvas.MoveTo(235, 325);
Form1.Paintbox1.Canvas.LineTo(235, 329);

Form1.Paintbox1.Canvas.MoveTo(267, 325);
Form1.Paintbox1.Canvas.LineTo(267, 329);
Form1.Paintbox1.Canvas.MoveTo(300, 325);
Form1.Paintbox1.Canvas.LineTo(300, 329);

Form1.Paintbox1.Canvas.MoveTo(332, 325);
Form1.Paintbox1.Canvas.LineTo(332, 329);

//text  10 klasses verdelen over   300px,
Form1.Paintbox1.Canvas.Font.Name:='Arial';
Form1.Paintbox1.Canvas.Font.Color:=clGray;
Form1.Paintbox1.Canvas.Font.Size:=11;
Form1.Paintbox1.Canvas.Font.Style := [fsBold];
//Form1.Paintbox1.Canvas.Font.Pitch := fpVariable;

Form1.Paintbox1.Canvas.TextOut(155, 300,' <10');
Form1.Paintbox1.Canvas.TextOut(152, 270,'10 - 19');
Form1.Paintbox1.Canvas.TextOut(152, 240,'20 - 29');
Form1.Paintbox1.Canvas.TextOut(152, 210,'30 - 39');
Form1.Paintbox1.Canvas.TextOut(152, 180,'40 - 49');
Form1.Paintbox1.Canvas.TextOut(152, 150,'50 - 59');
Form1.Paintbox1.Canvas.TextOut(152, 120,'60 - 69');
Form1.Paintbox1.Canvas.TextOut(152, 90,'70 - 79');
Form1.Paintbox1.Canvas.TextOut(152, 60,'80 - 89');
Form1.Paintbox1.Canvas.TextOut(155, 30,' >90');

Form1.Paintbox1.Canvas.Font.Color:=clBlack;
Form1.Paintbox1.Canvas.Font.Size:=13;
Form1.Paintbox1.Canvas.Font.Style := [fsBold];
Form1.Paintbox1.Canvas.TextOut(155, 330,'  %');
Form1.Paintbox1.Canvas.TextOut(10, 330,'20');
Form1.Paintbox1.Canvas.TextOut(42, 330,'15');
Form1.Paintbox1.Canvas.TextOut(73, 330,'10');
Form1.Paintbox1.Canvas.TextOut(111, 330,'5');
Form1.Paintbox1.Canvas.TextOut(144, 330,'0');

Form1.Paintbox1.Canvas.TextOut(199, 330,'0');
Form1.Paintbox1.Canvas.TextOut(230, 330,'5');
Form1.Paintbox1.Canvas.TextOut(256, 330,'10');
Form1.Paintbox1.Canvas.TextOut(292, 330,'15');
Form1.Paintbox1.Canvas.TextOut(325, 330,'20');

//Now calculate bars and draw rectangles
  //man
Form1.Paintbox1.Canvas.Brush.Color:=clRed;

pixperprec:=6.51;

xwidth:=round(100*(m1[i]/mtotaal[i])*pixperprec);
Form1.Paintbox1.Canvas.Rectangle(148-xwidth, 295, 148, 325);
xwidth:=round(100*(m2[i]/mtotaal[i])*pixperprec);
Form1.Paintbox1.Canvas.Rectangle(148-xwidth, 265, 148, 295);
xwidth:=round(100*(m3[i]/mtotaal[i])*pixperprec);
Form1.Paintbox1.Canvas.Rectangle(148-xwidth, 235, 148, 265);
xwidth:=round(100*(m4[i]/mtotaal[i])*pixperprec);
Form1.Paintbox1.Canvas.Rectangle(148-xwidth, 205, 148, 235);
xwidth:=round(100*(m5[i]/mtotaal[i])*pixperprec);
Form1.Paintbox1.Canvas.Rectangle(148-xwidth, 175, 148, 205);
xwidth:=round(100*(m6[i]/mtotaal[i])*pixperprec);
Form1.Paintbox1.Canvas.Rectangle(148-xwidth, 145, 148, 175);
xwidth:=round(100*(m7[i]/mtotaal[i])*pixperprec);
Form1.Paintbox1.Canvas.Rectangle(148-xwidth, 115, 148, 145);
xwidth:=round(100*(m8[i]/mtotaal[i])*pixperprec);
Form1.Paintbox1.Canvas.Rectangle(148-xwidth, 85, 148, 115);
xwidth:=round(100*(m9[i]/mtotaal[i])*pixperprec);
Form1.Paintbox1.Canvas.Rectangle(148-xwidth, 55, 148, 85);
xwidth:=round(100*(m10[i]/mtotaal[i])*pixperprec);
Form1.Paintbox1.Canvas.Rectangle(148-xwidth, 25, 148, 55);

  //vrouw
Form1.Paintbox1.Canvas.Brush.Color:=clBlue;

pixperprec:=6.51;

xwidth:=round(100*(v1[i]/vtotaal[i])*pixperprec);
Form1.Paintbox1.Canvas.Rectangle(202, 295, 202+xwidth, 325);
xwidth:=round(100*(v2[i]/vtotaal[i])*pixperprec);
Form1.Paintbox1.Canvas.Rectangle(202, 265, 202+xwidth, 295);
xwidth:=round(100*(v3[i]/vtotaal[i])*pixperprec);
Form1.Paintbox1.Canvas.Rectangle(202, 235, 202+xwidth, 265);
xwidth:=round(100*(v4[i]/vtotaal[i])*pixperprec);
Form1.Paintbox1.Canvas.Rectangle(202, 205, 202+xwidth, 235);
xwidth:=round(100*(v5[i]/vtotaal[i])*pixperprec);
Form1.Paintbox1.Canvas.Rectangle(202, 175, 202+xwidth, 205);
xwidth:=round(100*(v6[i]/vtotaal[i])*pixperprec);
Form1.Paintbox1.Canvas.Rectangle(202, 145, 202+xwidth, 175);
xwidth:=round(100*(v7[i]/vtotaal[i])*pixperprec);
Form1.Paintbox1.Canvas.Rectangle(202, 115, 202+xwidth, 145);
xwidth:=round(100*(v8[i]/vtotaal[i])*pixperprec);
Form1.Paintbox1.Canvas.Rectangle(202, 85, 202+xwidth, 115);
xwidth:=round(100*(v9[i]/vtotaal[i])*pixperprec);
Form1.Paintbox1.Canvas.Rectangle(202, 55, 202+xwidth, 85);
xwidth:=round(100*(v10[i]/vtotaal[i])*pixperprec);
Form1.Paintbox1.Canvas.Rectangle(202, 25, 202+xwidth, 55);


MyRect := Rect(0,0,350,380);

//Bitmap.SaveToBitmapFile('test.bmp');


//Form1.Paintbox1.Canvas.CopyRect(MyRect,Bitmap.Canvas,MyRect);

//Form1.Image1.Canvas.CopyRect(MyOther,Form1.Paintbox1.Canvas,MyRect);

Bitmap.Canvas.CopyRect(MyRect,Form1.Paintbox1.Canvas,MyRect);

bitmap.SaveToFile('Bevolkingspiramide - Gemeente '+naam[i]+' (2007).bmp');

//Image1.Picture.Bitmap.SaveToFile('test'+'.bmp');
Bitmap.Free;
Bitmap2.Free;
Bitmap3.Free;
//bitmap.SaveToFile('test.bmp');


   end;



CloseFile(F);
end;

end.

</nowiki>