| unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, forms, Dialogs, Borland.Vcl.StdCtrls, System.ComponentModel; type Tform1 = class(Tform) Label1: TLabel; Edit1: TEdit; Label2: TLabel; Edit2: TEdit; Button1: TButton; procedure formCreate(Sender: Tobject); procedure Button1Click(Sender: Tobject); private { Private declarations } public { Public declarations } end; var form1: Tform1; implementation {$R *.nfm} uses System.Drawing,System.Drawing.Drawing2D; var partiler:Array[0..19] of String; oylar:Array[0..19] of Integer; sira_no , toplam_oy:Integer; procedure Tform1.Button1Click(Sender: Tobject); var g:System.Drawing.Graphics; renk:System.Drawing.Color; firca:HatchBrush; i, baslangic_acisi, yay_acisi:Integer; begin if sira_no = 20 then Begin ShowMessage('En çok 20 parti olabilir'); exit; End; g:=System.Drawing.Graphics.fromHwnd(IntPtr.Create( handle)); try oylar[sira_no] := StrToInt(Edit2.Text); except ShowMessage('Oy sayısında hata var'); exit; End; partiler[sira_no] := Edit1.Text; toplam_oy := toplam_oy + oylar[sira_no]; sira_no := sira_no + 1; baslangic_acisi:=0; yay_acisi:=0; for i := 0 to sira_no - 1 do begin yay_acisi := 360 * oylar[i] div toplam_oy; renk := System.Drawing.Color.fromArgb(Random(255), Random(255), Random(255)); firca := HatchBrush.Create(HatchStyle(Random(50)), renk); //Pasta dilimini çiz g.FillPie(firca, 0, 80, 200, 200, baslangic_acisi, yay_acisi); //O rengin açıklamasını belirtmesi için küçük bir dikdörtgen çiz g.FillRectangle(firca, 210, 80 + i * 20, 18, 18); //Yanına parti adını ve aldığı oyu yaz g.DrawString(partiler[i] + ':=' + oylar[i].ToString(), System.Drawing.Font.Create('Tahoma', 8, FontStyle.Regular), SolidBrush.Create(System.Drawing.Color.Red), 230, 80 + i * 20); baslangic_acisi := baslangic_acisi + yay_acisi; End; end; procedure Tform1.formCreate(Sender: Tobject); begin end; end. |