Son Aramalarınız TEMİZLE
    Genel Hızlı Tercihler Sıfırla
    Header'ı Tuttur
    Header'da Teknoloji Gündemi
    Anasayfa
    Büyük Slayt ve Popüler Haberler
    Döşeme Stili Ana Akış
    Kaydırarak Daha Fazla İçerik Yükle
    İçerikleri Yeni Sekmede Aç
    Detay Sayfaları
    Kaydırarak Sonraki Habere Geçiş
    Renk Seçenekleri
    Gece Modu (Koyu Tema)
    Sadece Videolar için Gece Modu

    Windows 10 hesap makinesine, denklem çizebilme özelliği ekleniyor

    Yazılım devi Microsoft'un Windows 10'da yer alan hesap makinesine yeni özellikler getireceği belirtiliyor. Şirket uygulamaya grafik özelliği ekleyerek, denklem çizilebilmesini sağlayacak.
    1 yıl
    6,2b
    1
    4
    Windows
    Teknoloji Editörü
    Microsoft, Windows 10'daki Hesap Makinesi uygulaması için önemli bir yeni özellik üzerinde çalışıyor. Şirket uygulamayı bu ayın başlarında GitHub'da açık kaynaklı hale getirmişti ve şu ana kadar otuzdan fazla kişinin bu konuda katkıda bulunduğu ifade ediliyor.

    Öğrencilerin cebir öğrenmesini kolaylaştıracak

    Yeni bir rapora göre Microsoft, Hesap Makinesi uygulamasına bir grafik modu eklemek için çalışıyor. Bu özellik uygulama üzerinde matematik denklemlerinin çizilebilmesini sağlayacak. Fikir, şirkette mühendis olarak çalışan Dave Grochocki'den geldi ve bu yenilikle, özellikle öğrencilerin cebir öğrenmesinin kolaylaştırılması hedefleniyor.
    Amerika Birleşik Devletleri'ndeki öğrencilerin çoğunun cebir konusunda başarısız oldukları açıklanırken, gelişmiş matematik, bilim ve mühendislik konuları için cebirin çok önemli olduğu ifade ediliyor. Bu özellik şu anda geliştirilme aşamasında olduğundan, tüm kullanıcılara ne zaman sunulacağı konusunda henüz net bir tarih olmadığını da belirtelim.


    https://www.theverge.com/2019/3/22/18277786/windows-10-microsoft-graphing-calculator-open-source-algebra Yorum Yaz Bu haberi, mobil uygulamamızı kullanarak indirip,
    istediğiniz zaman (çevrim dışı bile) okuyabilirsiniz:
    DH Android Uygulamasını İndir DH iOS Uygulamasını İndir
    En Beğenilen Yorumlar Tümünü Genişlet Yorum Yaz
    Amd64x2 1 yıl en beğenilen
    Amma tatava yapmışlar, çok daha gelişmişinin kodu şu kadar, haber yapılması bile abes.
    [code]
    unit UntMain;

    interface

    uses
    Windows, Messages, Variants, Graphics, Classes, Controls, Forms,
    Dialogs, SysUtils, StdCtrls, ExtCtrls, Math, ComCtrls;

    type
    TFrmGraph = class(TForm)
    Panel1: TPanel;
    GroupBox1: TGroupBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    RadioButton4: TRadioButton;
    RadioButton5: TRadioButton;
    LCoef1: TLabel;
    LCoef2: TLabel;
    LCoef3: TLabel;
    LCoef4: TLabel;
    Coef1: TEdit;
    UDCoef2: TUpDown;
    Coef2: TEdit;
    Coef3: TEdit;
    Coef4: TEdit;
    UDCoef1: TUpDown;
    UDCoef4: TUpDown;
    UDCoef3: TUpDown;
    Bevel4: TBevel;
    PaintBox1: TPaintBox;
    StatusBar1: TStatusBar;
    GroupBox2: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Edit2: TEdit;
    UpDown1: TUpDown;
    ChBoxGridLinesX: TCheckBox;
    ChBoxAxisValuesX: TCheckBox;
    cbXApp: TComboBox;
    GroupBox3: TGroupBox;
    Label3: TLabel;
    ChBoxGridLinesY: TCheckBox;
    ChBoxAxisValuesY: TCheckBox;
    Edit3: TEdit;
    UpDown2: TUpDown;
    Label23: TLabel;
    Label4: TLabel;
    Button2: TButton;
    Button1: TButton;
    Button3: TButton;
    GraphColor: TColorBox;
    BkColor: TColorBox;
    procedure Button1Click(Sender: TObject);
    procedure RadioButton1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
    procedure Coef1Change(Sender: TObject);
    procedure PaintBox1Paint(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure Edit4KeyPress(Sender: TObject; var Key: Char);
    procedure BkColorChange(Sender: TObject);
    procedure PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
    Y: Integer);
    private
    XGridLineCount : ShortInt; // Don't give odd values
    YGridLineCount : ShortInt; // Don't give odd values
    FXIncrement : Single; // smaller given values makes slower the graph to
    // be drawn
    DemoFXValue : Integer; // Demo Function Value holder

    FGraphBmp : TBitmap;
    procedure SaveActivePaint;
    procedure DestroyActivePaint;
    { Private declarations }
    public
    { Public declarations }
    procedure GetParameters;
    procedure DrawGraphGridLines;
    procedure DrawAxisOrdinate;
    procedure DrawGraph;
    function FunctionName : string;
    function PowerN(base : Extended; expo : Integer) : Extended;
    end;

    var
    FrmGraph: TFrmGraph;

    implementation

    {$R *.dfm}

    procedure TFrmGraph.Button1Click(Sender: TObject);
    begin
    {Destroy Active Screen First}
    DestroyActivePaint;

    PaintBox1.Refresh;
    PaintBox1.Canvas.Pen.Color:=clBlack;
    {Get Function Name}
    StatusBar1.Panels[9].Text := FunctionName;
    { Get Grid Lines Count for XY and X Increment value, Demo Function first}
    GetParameters;
    { Draw Main XY Axis }
    DrawAxisOrdinate;
    { Draw XY Value GridLines and XY Axis Values}
    if ChBoxGridLinesX.Checked or ChBoxAxisValuesX.Checked or
    ChBoxGridLinesY.Checked or ChBoxAxisValuesY.Checked then
    DrawGraphGridLines;
    { Finally Draw the Graph }
    DrawGraph;
    {Save Active Screen preventing blank windows}
    SaveActivePaint;
    end;

    procedure TFrmGraph.DrawAxisOrdinate;
    var ZeroX, ZeroY : Integer;
    begin
    { Draw x=0 and y=0}
    ZeroX := PaintBox1.Width div 2;
    ZeroY := PaintBox1.Height div 2;

    with PaintBox1.Canvas do
    begin
    Brush.Color := clBlack;
    Brush.Style := bsClear;
    Pen.Style := psSolid;
    Pen.Width := 3;
    // Draw x, y
    Polyline([Point(ZeroX, 0), Point(ZeroX, PaintBox1.Height)]);
    Polyline([Point(0, ZeroY), Point(PaintBox1.Width, ZeroY)]);
    end;

    end;

    procedure TFrmGraph.DrawGraphGridLines;
    var i, pW, pH : Integer;
    begin
    pW := PaintBox1.Width;
    pH := PaintBox1.Height;

    with PaintBox1.Canvas do
    begin
    Pen.Style := psDot;
    Pen.Width := 1;
    { Draw x = [-XridLineCount..XGridLineCount] }
    for i:= 0 to XGridLineCount-1 do
    begin
    if i<> XGridLineCount/2 then //Don't draw x = 0
    begin
    if ChBoxGridLinesX.Checked then
    Polyline([
    Point(Round( pW * (1 - i/XGridLineCount) ), 0),
    Point(Round( pW * (1 - i/XGridLineCount) ), pH)
    ]
    );
    end;
    if ChBoxAxisValuesX.Checked then
    TextOut(Round( pW * (1 - i/XGridLineCount) )+1, Round(pH/2)+2, IntToStr(Round(XGridLineCount/2)-i) );
    end;
    { Draw y = [-YridLineCount..YGridLineCount] }
    for i:= 0 to YGridLineCount-1 do
    if i<> YGridLineCount/2 then //Don't draw y = 0
    begin
    if ChBoxGridLinesY.Checked then
    Polyline([
    Point(0, Round( pH *(1 - i/YGridLineCount) ) ),
    Point(pW,Round( pH *(1 - i/YGridLineCount) ) )
    ]
    );
    if ChBoxAxisValuesY.Checked then
    TextOut(pW div 2 + 2, Round( pH * (1 - i/YGridLineCount) )+1, IntToStr(i-Round(YGridLineCount/2)) );
    end;
    end;
    end;

    procedure TFrmGraph.DrawGraph;
    var x, y : Extended;
    pPosX, pPosY : Integer;
    ZeroX, ZeroY : Integer;
    pW, pH : Integer;
    begin
    pW := PaintBox1.Width;
    pH := PaintBox1.Height;

    ZeroX := pW div 2;
    ZeroY := pH div 2;

    PaintBox1.Canvas.Lock;
    PaintBox1.Canvas.Pen.Style := psSolid;
    x:=-XGridLineCount/2; y:=0;
    repeat
    // Handles the Changes of the function coeeficients and redraws
    case DemoFXValue of
    1: y:= UDCoef1.Position * sin(x * UDCoef2.Position);
    2: y:= UDCoef1.Position * cos(x * UDCoef2.Position);
    3: y:= UDCoef1.Position * x + UDCoef2.Position;
    4: y:= UDCoef1.Position * Power(x, 2) + UDCoef2.Position * x + UDCoef3.Position;
    5: y:= UDCoef1.Position * Power(x, 3) + UDCoef2.Position * Power(x, 2)
    + UDCoef3.Position * x + UDCoef4.Position;
    end;
    pPosX := ZeroX + Round(x * pW /XGridLineCount);
    pPosY := ZeroY - Round(y * pH /YGridLineCount);
    PaintBox1.Canvas.Pixels[pPosX, pPosY] := GraphColor.Selected;
    // Incremented Calculation of X Approach
    x:= x + FXIncrement;
    until x > XGridLineCount / 2;
    PaintBox1.Canvas.Unlock;
    end;

    procedure TFrmGraph.GetParameters;
    var i:Integer;
    begin
    XGridLineCount := UpDown1.Position * 2; { X Axis Grid Lines }
    YGridLineCount := UpDown2.Position * 2; { Y Axis Grid Lines }
    FXIncrement := StrToFloat(cbXApp.Text); { X Approach Increment Count }

    { Decide Which Function to be drawn }
    for i:=1 to 5 do
    if TRadioButton(FindComponent('RadioButton'+IntToStr(i))).Checked then
    DemoFXValue := i;
    {Get Function Name}
    StatusBar1.Panels[9].Text := FunctionName;
    end;

    procedure TFrmGraph.RadioButton1Click(Sender: TObject);
    var i:Integer;
    coefCount : Integer;
    begin
    { Show belonging Function Coeeficients }
    coefCount := 0;
    for i:=1 to 4 do
    begin
    TEdit(FindComponent('Coef'+IntToStr(i))).Enabled := False;
    TLabel(FindComponent('LCoef'+IntToStr(i))).Enabled := False;
    TUpDown(FindComponent('UDCoef'+IntToStr(i))).Enabled := False;
    end;

    if (RadioButton1.Checked) or (RadioButton2.Checked) or
    (RadioButton3.Checked) then coefCount := 2;
    if (RadioButton4.Checked) then coefCount := 3;
    if (RadioButton5.Checked) then coefCount := 4;

    for i:=1 to coefCount do
    begin
    TEdit(FindComponent('Coef'+IntToStr(i))).Enabled := True;
    TLabel(FindComponent('LCoef'+IntToStr(i))).Enabled := True;
    TUpDown(FindComponent('UDCoef'+IntToStr(i))).Enabled := True;
    end;

    GetParameters;
    end;

    procedure TFrmGraph.Button2Click(Sender: TObject);
    begin
    { Form Close }
    Close;
    end;

    procedure TFrmGraph.Button3Click(Sender: TObject);
    begin
    MessageBox(
    Handle,
    ':: FxGraphView Demo v1.0.4 by XaoCody...'+#13+
    ':: July 06th, 2003 - Delphi 7'+#13+
    ':: ---------------------------------------- '+#13+
    ':: FxGraphView Version History ::'+#13+
    ':: v1.0.4 : Axis Grid and Value Disable/Enable Options'+#13+
    ':: : DoubleBuffer Correction'+#13+
    ':: v1.0.3 : GraphPan and Position Values'+#13+
    ':: v1.0.2 : Lossless Canvas, XApproach Combo'+#13+
    ':: v1.0.1 : FunctionName is available'+#13+
    ':: v1.0.0 : Generic'+#13+
    ':: ---------------------------------------- '+#13+
    ':: v1.0.5 will handle function creation...'+#13+
    ':: Check for updates...',
    'FxGraphView v1.0.4',
    MB_OK
    );
    end;
    procedure TFrmGraph.Edit2Change(Sender: TObject);
    begin
    Button1.Click;
    end;

    function TFrmGraph.FunctionName : string;
    var s1, s2, s3, s4 : string;
    begin
    ////////////////////////////////////////////////////////////////////////
    // Function Type f(x) = a * sin(b * x)
    ////////////////////////////////////////////////////////////////////////
    Result:='f(x) = ';
    if RadioButton1.Checked then s2 := 'sin';
    if RadioButton2.Checked then s2 := 'cos';

    if (RadioButton1.Checked) or (RadioButton2.Checked) then
    // Adjust format with coeffs as 'a * sin(b*x)' or 'a * cos(b*x)'
    begin
    case UDCoef1.Position of
    0: Result:= Result + '0';
    1: Result:= Result + s2;
    -1: Result:= Result + '-' + s2;
    else Result:= Result + Coef1.Text + ' * ' + s2;
    end;

    case UDCoef2.Position of
    0:
    begin
    if RadioButton1.Checked then Result:= 'f(x) = 0';
    if RadioButton2.Checked then Result:= 'f(x) = 1';
    end;
    1: if Result<> 'f(x) = 0' then Result:= Result + '(x)';
    -1: if Result<> 'f(x) = 0' then Result:= Result + '(-x)';
    else if Result<> 'f(x) = 0' then Result:= Result +'('+ Coef2.Text + 'x)';
    end;

    if (UDCoef1.Position = 0) and (UDCoef2.Position = 0) then Result := 'f(x) = 0';
    end;

    ////////////////////////////////////////////////////////////////////////
    // Function Type f(x) = a * x + b
    ////////////////////////////////////////////////////////////////////////
    if RadioButton3.Checked then
    begin
    Result:='f(x) = ';
    case UDCoef1.Position of
    0: Result := Result; //No change
    1: Result := Result + 'x';
    -1: Result := Result + '-x';
    else Result := Result + Coef1.Text + 'x';
    end;

    case UDCoef2.Position of
    0: Result := Result; //No change
    else
    begin
    if (UDCoef2.Position > 0) and (UDCoef1.Position <> 0) then Result:=Result + ' + ';
    Result := Result + ' ' + Coef2.Text;
    end;
    end;

    if (UDCoef2.Position = 0) and (UDCoef1.Position = 0) then Result:= Result + '0';
    end;

    ////////////////////////////////////////////////////////////////////////
    // Function Type f(x) = a * x^2 + b * x + c
    ////////////////////////////////////////////////////////////////////////
    if RadioButton4.Checked then
    begin
    case UDCoef1.Position of
    0 : s1 := '';
    1 : s1 := 'x^2 ';
    -1: s1 := '-x^2 ';
    else s1 := Coef1.Text + 'x^2 ';
    end;

    case UDCoef2.Position of
    0 : s2 := '';
    1 : s2 := 'x ';
    -1: s2 := '-x ';
    else s2 := ' ' + Coef2.Text + 'x ';
    end;

    case UDCoef3.Position of
    0 : s3 := '';
    else s3 := ' ' + Coef3.Text;
    end;

    //Write one by one
    Result:= s1;
    if s2 <> '' then
    begin
    if (UDCoef2.Position > 0) and (Result<>'') then s2:= '+' + s2;
    end;
    Result := Result + s2;

    if s3 <> '' then
    begin
    if (UDCoef3.Position > 0) and (Result<>'') then s3:= '+' + s3;
    end;
    Result := Result + s3;

    if Result = '' then Result:= 'f(x) = 0'
    else Result := 'f(x) = ' + Result;
    end;

    ////////////////////////////////////////////////////////////////////////
    // Function Type f(x) = a * x^3 + b * x^2 + cx + d
    ////////////////////////////////////////////////////////////////////////
    if RadioButton5.Checked then
    begin
    case UDCoef1.Position of
    0 : s1 := '';
    1 : s1 := 'x^3 ';
    -1: s1 := '-x^3 ';
    else s1 := Coef1.Text + 'x^3 ';
    end;

    case UDCoef2.Position of
    0 : s2 := '';
    1 : s2 := 'x^2 ';
    -1: s2 := '-x^2 ';
    else s2 := ' ' + Coef2.Text + 'x^2 ';
    end;

    case UDCoef3.Position of
    0 : s3 := '';
    1 : s3 := 'x ';
    -1: s3 := '-x ';
    else s3 := ' ' + Coef3.Text + 'x ';
    end;

    case UDCoef4.Position of
    0 : s4 := '';
    else s4 := ' ' + Coef4.Text;
    end;

    //Write one by one
    Result:= s1;
    if s2 <> '' then
    begin
    if (UDCoef2.Position > 0) and (Result<>'') then s2:= '+' + s2;
    end;
    Result := Result + s2;

    if s3 <> '' then
    begin
    if (UDCoef3.Position > 0) and (Result<>'') then s3:= '+' + s3;
    end;
    Result := Result + s3;

    if s4 <> '' then
    begin
    if (UDCoef4.Position > 0) and (Result<>'') then s4:= '+' + s4;
    end;
    Result := Result + s4;

    if Result = '' then Result:= 'f(x) = 0'
    else Result := 'f(x) = ' + Result;
    end;
    end;

    procedure TFrmGraph.Coef1Change(Sender: TObject);
    begin
    {When coefficients are changed then Get Function Name}
    StatusBar1.Panels[9].Text := FunctionName;
    end;

    procedure TFrmGraph.SaveActivePaint;
    var graphRect : TRect;
    begin
    if Assigned(FGraphBmp) then FreeAndNil(FGraphBmp);
    FGraphBmp := TBitmap.Create;
    FGraphBmp.Width := PaintBox1.Width;
    FGraphBmp.Height := PaintBox1.Height;
    graphRect.Left := 0;
    graphRect.Top := 0;
    graphRect.Right := FGraphBmp.Width;
    graphRect.Bottom := FGraphBmp.Height;
    FGraphBmp.Canvas.CopyRect(graphRect, PaintBox1.Canvas, PaintBox1.ClientRect);
    end;

    procedure TFrmGraph.PaintBox1Paint(Sender: TObject);
    begin
    if Assigned(FGraphBmp) then
    PaintBox1.Canvas.Draw(0,0, FGraphBmp);
    end;

    procedure TFrmGraph.DestroyActivePaint;
    begin
    if Assigned(FGraphBmp) then FreeAndNil(FGraphBmp);
    end;


    procedure TFrmGraph.FormDestroy(Sender: TObject);
    begin
    DestroyActivePaint;
    end;

    procedure TFrmGraph.FormActivate(Sender: TObject);
    begin
    FGraphBmp := nil;
    DoubleBuffered := True;
    end;

    procedure TFrmGraph.Edit4KeyPress(Sender: TObject; var Key: Char);
    begin
    if not (ord(key) in [48..57]) then
    Key := #0; {Return '0' if the pressed key is not numerical}
    end;

    procedure TFrmGraph.BkColorChange(Sender: TObject);
    begin
    Color := BkColor.Selected;
    Button1.Click;
    end;

    procedure TFrmGraph.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState;
    X, Y: Integer);
    var zeroX, zeroY : Integer;
    posX, posY : Extended;
    pW, pH : Integer;
    gridLineWidthX : Integer;
    gridLineWidthY : Integer;
    s : string;
    begin
    pW := PaintBox1.Width;
    pH := PaintBox1.Height;

    zeroX := pW div 2;
    zeroY := pH div 2;

    gridLineWidthX := zeroX div UpDown1.Position;
    gridLineWidthY := zeroY div UpDown2.Position;

    posX :=0; posY :=0;

    //Draw Graph Follower
    PaintBox1.Refresh;
    PaintBox1.Canvas.Pen.Style := psSolid;
    PaintBox1.Canvas.Pen.Width := 1;
    PaintBox1.Canvas.Polyline([Point(X, 0), Point(X, PaintBox1.Height)]);
    PaintBox1.Canvas.Polyline([Point(0, Y), Point(PaintBox1.Width, Y)]);

    //Define GraphX Positons
    if X <> zeroX then posX := (X - zeroX) / gridLineWidthX;
    if X = zeroX then posX := 0;

    //Define GraphX Positons
    if Y <> zeroY then posY := (zeroY - Y) / gridLineWidthY;
    if X = zeroY then posY := 0;

    StatusBar1.Panels[1].Text := IntToStr(X);
    StatusBar1.Panels[3].Text := IntToStr(Y);
    StatusBar1.Panels[5].Text := Format('%.2f', [posX]);
    StatusBar1.Panels[7].Text := Format('%.2f', [posY]);

    case DemoFXValue of
    1: s := Format('f( %.2f ) = %.2f', [posX, UDCoef1.Position * sin(UDCoef2.Position * posX)]);
    2: s := Format('f( %.2f ) = %.2f', [posX, UDCoef1.Position * cos(UDCoef2.Position * posX)]);
    3: s := Format('f( %.2f ) = %.2f', [posX, UDCoef1.Position * posX + UDCoef2.Position]);
    4: s := Format('f( %.2f ) = %.2f', [posX, UDCoef1.Position * PowerN(posX,2)
    + UDCoef2.Position * posX + UDCoef3.Position]);
    5: s := Format('f( %.2f ) = %.2f', [posX, UDCoef1.Position * PowerN(posX,3)
    + UDCoef2.Position * PowerN(posX,2) + UDCoef3.Position * posX + UDCoef4.Position]);
    end;

    StatusBar1.Panels[8].Text := s;
    end;

    function TFrmGraph.PowerN(base : Extended; expo : Integer) : Extended;
    var i:Integer;
    begin
    if expo < 0 then begin Result:=-1; exit; end;

    Result := 1;
    for i:=1 to expo do
    Result := Result * base;
    end;

    end.
    [/code]
    Amma tatava yapmışlar, çok daha gelişmişinin kodu şu kadar, haber yapılması bile abes. ...
    Devamını Gör
    Yorumlar (4) Yorum Yaz Forumda Gör
    Guest-92A2F8722 1 yıl
    Windows phone kullandığım dönemde hesap makinasına ayda 1 güncelleme gelirdi. Ulan 2 satırlık uygulama ne hata yapıyorsunuzda ayda 1 hata düzeltmesi geliyor
    R0llingMan 1 yıl
    Muazzam yenilik oyun Gates'e
    Amd64x2 1 yıl en beğenilen
    Amma tatava yapmışlar, çok daha gelişmişinin kodu şu kadar, haber yapılması bile abes.
    [code]
    unit UntMain;

    interface

    uses
    Windows, Messages, Variants, Graphics, Classes, Controls, Forms,
    Dialogs, SysUtils, StdCtrls, ExtCtrls, Math, ComCtrls;

    type
    TFrmGraph = class(TForm)
    Panel1: TPanel;
    GroupBox1: TGroupBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    RadioButton4: TRadioButton;
    RadioButton5: TRadioButton;
    LCoef1: TLabel;
    LCoef2: TLabel;
    LCoef3: TLabel;
    LCoef4: TLabel;
    Coef1: TEdit;
    UDCoef2: TUpDown;
    Coef2: TEdit;
    Coef3: TEdit;
    Coef4: TEdit;
    UDCoef1: TUpDown;
    UDCoef4: TUpDown;
    UDCoef3: TUpDown;
    Bevel4: TBevel;
    PaintBox1: TPaintBox;
    StatusBar1: TStatusBar;
    GroupBox2: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Edit2: TEdit;
    UpDown1: TUpDown;
    ChBoxGridLinesX: TCheckBox;
    ChBoxAxisValuesX: TCheckBox;
    cbXApp: TComboBox;
    GroupBox3: TGroupBox;
    Label3: TLabel;
    ChBoxGridLinesY: TCheckBox;
    ChBoxAxisValuesY: TCheckBox;
    Edit3: TEdit;
    UpDown2: TUpDown;
    Label23: TLabel;
    Label4: TLabel;
    Button2: TButton;
    Button1: TButton;
    Button3: TButton;
    GraphColor: TColorBox;
    BkColor: TColorBox;
    procedure Button1Click(Sender: TObject);
    procedure RadioButton1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
    procedure Coef1Change(Sender: TObject);
    procedure PaintBox1Paint(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure Edit4KeyPress(Sender: TObject; var Key: Char);
    procedure BkColorChange(Sender: TObject);
    procedure PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
    Y: Integer);
    private
    XGridLineCount : ShortInt; // Don't give odd values
    YGridLineCount : ShortInt; // Don't give odd values
    FXIncrement : Single; // smaller given values makes slower the graph to
    // be drawn
    DemoFXValue : Integer; // Demo Function Value holder

    FGraphBmp : TBitmap;
    procedure SaveActivePaint;
    procedure DestroyActivePaint;
    { Private declarations }
    public
    { Public declarations }
    procedure GetParameters;
    procedure DrawGraphGridLines;
    procedure DrawAxisOrdinate;
    procedure DrawGraph;
    function FunctionName : string;
    function PowerN(base : Extended; expo : Integer) : Extended;
    end;

    var
    FrmGraph: TFrmGraph;

    implementation

    {$R *.dfm}

    procedure TFrmGraph.Button1Click(Sender: TObject);
    begin
    {Destroy Active Screen First}
    DestroyActivePaint;

    PaintBox1.Refresh;
    PaintBox1.Canvas.Pen.Color:=clBlack;
    {Get Function Name}
    StatusBar1.Panels[9].Text := FunctionName;
    { Get Grid Lines Count for XY and X Increment value, Demo Function first}
    GetParameters;
    { Draw Main XY Axis }
    DrawAxisOrdinate;
    { Draw XY Value GridLines and XY Axis Values}
    if ChBoxGridLinesX.Checked or ChBoxAxisValuesX.Checked or
    ChBoxGridLinesY.Checked or ChBoxAxisValuesY.Checked then
    DrawGraphGridLines;
    { Finally Draw the Graph }
    DrawGraph;
    {Save Active Screen preventing blank windows}
    SaveActivePaint;
    end;

    procedure TFrmGraph.DrawAxisOrdinate;
    var ZeroX, ZeroY : Integer;
    begin
    { Draw x=0 and y=0}
    ZeroX := PaintBox1.Width div 2;
    ZeroY := PaintBox1.Height div 2;

    with PaintBox1.Canvas do
    begin
    Brush.Color := clBlack;
    Brush.Style := bsClear;
    Pen.Style := psSolid;
    Pen.Width := 3;
    // Draw x, y
    Polyline([Point(ZeroX, 0), Point(ZeroX, PaintBox1.Height)]);
    Polyline([Point(0, ZeroY), Point(PaintBox1.Width, ZeroY)]);
    end;

    end;

    procedure TFrmGraph.DrawGraphGridLines;
    var i, pW, pH : Integer;
    begin
    pW := PaintBox1.Width;
    pH := PaintBox1.Height;

    with PaintBox1.Canvas do
    begin
    Pen.Style := psDot;
    Pen.Width := 1;
    { Draw x = [-XridLineCount..XGridLineCount] }
    for i:= 0 to XGridLineCount-1 do
    begin
    if i<> XGridLineCount/2 then //Don't draw x = 0
    begin
    if ChBoxGridLinesX.Checked then
    Polyline([
    Point(Round( pW * (1 - i/XGridLineCount) ), 0),
    Point(Round( pW * (1 - i/XGridLineCount) ), pH)
    ]
    );
    end;
    if ChBoxAxisValuesX.Checked then
    TextOut(Round( pW * (1 - i/XGridLineCount) )+1, Round(pH/2)+2, IntToStr(Round(XGridLineCount/2)-i) );
    end;
    { Draw y = [-YridLineCount..YGridLineCount] }
    for i:= 0 to YGridLineCount-1 do
    if i<> YGridLineCount/2 then //Don't draw y = 0
    begin
    if ChBoxGridLinesY.Checked then
    Polyline([
    Point(0, Round( pH *(1 - i/YGridLineCount) ) ),
    Point(pW,Round( pH *(1 - i/YGridLineCount) ) )
    ]
    );
    if ChBoxAxisValuesY.Checked then
    TextOut(pW div 2 + 2, Round( pH * (1 - i/YGridLineCount) )+1, IntToStr(i-Round(YGridLineCount/2)) );
    end;
    end;
    end;

    procedure TFrmGraph.DrawGraph;
    var x, y : Extended;
    pPosX, pPosY : Integer;
    ZeroX, ZeroY : Integer;
    pW, pH : Integer;
    begin
    pW := PaintBox1.Width;
    pH := PaintBox1.Height;

    ZeroX := pW div 2;
    ZeroY := pH div 2;

    PaintBox1.Canvas.Lock;
    PaintBox1.Canvas.Pen.Style := psSolid;
    x:=-XGridLineCount/2; y:=0;
    repeat
    // Handles the Changes of the function coeeficients and redraws
    case DemoFXValue of
    1: y:= UDCoef1.Position * sin(x * UDCoef2.Position);
    2: y:= UDCoef1.Position * cos(x * UDCoef2.Position);
    3: y:= UDCoef1.Position * x + UDCoef2.Position;
    4: y:= UDCoef1.Position * Power(x, 2) + UDCoef2.Position * x + UDCoef3.Position;
    5: y:= UDCoef1.Position * Power(x, 3) + UDCoef2.Position * Power(x, 2)
    + UDCoef3.Position * x + UDCoef4.Position;
    end;
    pPosX := ZeroX + Round(x * pW /XGridLineCount);
    pPosY := ZeroY - Round(y * pH /YGridLineCount);
    PaintBox1.Canvas.Pixels[pPosX, pPosY] := GraphColor.Selected;
    // Incremented Calculation of X Approach
    x:= x + FXIncrement;
    until x > XGridLineCount / 2;
    PaintBox1.Canvas.Unlock;
    end;

    procedure TFrmGraph.GetParameters;
    var i:Integer;
    begin
    XGridLineCount := UpDown1.Position * 2; { X Axis Grid Lines }
    YGridLineCount := UpDown2.Position * 2; { Y Axis Grid Lines }
    FXIncrement := StrToFloat(cbXApp.Text); { X Approach Increment Count }

    { Decide Which Function to be drawn }
    for i:=1 to 5 do
    if TRadioButton(FindComponent('RadioButton'+IntToStr(i))).Checked then
    DemoFXValue := i;
    {Get Function Name}
    StatusBar1.Panels[9].Text := FunctionName;
    end;

    procedure TFrmGraph.RadioButton1Click(Sender: TObject);
    var i:Integer;
    coefCount : Integer;
    begin
    { Show belonging Function Coeeficients }
    coefCount := 0;
    for i:=1 to 4 do
    begin
    TEdit(FindComponent('Coef'+IntToStr(i))).Enabled := False;
    TLabel(FindComponent('LCoef'+IntToStr(i))).Enabled := False;
    TUpDown(FindComponent('UDCoef'+IntToStr(i))).Enabled := False;
    end;

    if (RadioButton1.Checked) or (RadioButton2.Checked) or
    (RadioButton3.Checked) then coefCount := 2;
    if (RadioButton4.Checked) then coefCount := 3;
    if (RadioButton5.Checked) then coefCount := 4;

    for i:=1 to coefCount do
    begin
    TEdit(FindComponent('Coef'+IntToStr(i))).Enabled := True;
    TLabel(FindComponent('LCoef'+IntToStr(i))).Enabled := True;
    TUpDown(FindComponent('UDCoef'+IntToStr(i))).Enabled := True;
    end;

    GetParameters;
    end;

    procedure TFrmGraph.Button2Click(Sender: TObject);
    begin
    { Form Close }
    Close;
    end;

    procedure TFrmGraph.Button3Click(Sender: TObject);
    begin
    MessageBox(
    Handle,
    ':: FxGraphView Demo v1.0.4 by XaoCody...'+#13+
    ':: July 06th, 2003 - Delphi 7'+#13+
    ':: ---------------------------------------- '+#13+
    ':: FxGraphView Version History ::'+#13+
    ':: v1.0.4 : Axis Grid and Value Disable/Enable Options'+#13+
    ':: : DoubleBuffer Correction'+#13+
    ':: v1.0.3 : GraphPan and Position Values'+#13+
    ':: v1.0.2 : Lossless Canvas, XApproach Combo'+#13+
    ':: v1.0.1 : FunctionName is available'+#13+
    ':: v1.0.0 : Generic'+#13+
    ':: ---------------------------------------- '+#13+
    ':: v1.0.5 will handle function creation...'+#13+
    ':: Check for updates...',
    'FxGraphView v1.0.4',
    MB_OK
    );
    end;
    procedure TFrmGraph.Edit2Change(Sender: TObject);
    begin
    Button1.Click;
    end;

    function TFrmGraph.FunctionName : string;
    var s1, s2, s3, s4 : string;
    begin
    ////////////////////////////////////////////////////////////////////////
    // Function Type f(x) = a * sin(b * x)
    ////////////////////////////////////////////////////////////////////////
    Result:='f(x) = ';
    if RadioButton1.Checked then s2 := 'sin';
    if RadioButton2.Checked then s2 := 'cos';

    if (RadioButton1.Checked) or (RadioButton2.Checked) then
    // Adjust format with coeffs as 'a * sin(b*x)' or 'a * cos(b*x)'
    begin
    case UDCoef1.Position of
    0: Result:= Result + '0';
    1: Result:= Result + s2;
    -1: Result:= Result + '-' + s2;
    else Result:= Result + Coef1.Text + ' * ' + s2;
    end;

    case UDCoef2.Position of
    0:
    begin
    if RadioButton1.Checked then Result:= 'f(x) = 0';
    if RadioButton2.Checked then Result:= 'f(x) = 1';
    end;
    1: if Result<> 'f(x) = 0' then Result:= Result + '(x)';
    -1: if Result<> 'f(x) = 0' then Result:= Result + '(-x)';
    else if Result<> 'f(x) = 0' then Result:= Result +'('+ Coef2.Text + 'x)';
    end;

    if (UDCoef1.Position = 0) and (UDCoef2.Position = 0) then Result := 'f(x) = 0';
    end;

    ////////////////////////////////////////////////////////////////////////
    // Function Type f(x) = a * x + b
    ////////////////////////////////////////////////////////////////////////
    if RadioButton3.Checked then
    begin
    Result:='f(x) = ';
    case UDCoef1.Position of
    0: Result := Result; //No change
    1: Result := Result + 'x';
    -1: Result := Result + '-x';
    else Result := Result + Coef1.Text + 'x';
    end;

    case UDCoef2.Position of
    0: Result := Result; //No change
    else
    begin
    if (UDCoef2.Position > 0) and (UDCoef1.Position <> 0) then Result:=Result + ' + ';
    Result := Result + ' ' + Coef2.Text;
    end;
    end;

    if (UDCoef2.Position = 0) and (UDCoef1.Position = 0) then Result:= Result + '0';
    end;

    ////////////////////////////////////////////////////////////////////////
    // Function Type f(x) = a * x^2 + b * x + c
    ////////////////////////////////////////////////////////////////////////
    if RadioButton4.Checked then
    begin
    case UDCoef1.Position of
    0 : s1 := '';
    1 : s1 := 'x^2 ';
    -1: s1 := '-x^2 ';
    else s1 := Coef1.Text + 'x^2 ';
    end;

    case UDCoef2.Position of
    0 : s2 := '';
    1 : s2 := 'x ';
    -1: s2 := '-x ';
    else s2 := ' ' + Coef2.Text + 'x ';
    end;

    case UDCoef3.Position of
    0 : s3 := '';
    else s3 := ' ' + Coef3.Text;
    end;

    //Write one by one
    Result:= s1;
    if s2 <> '' then
    begin
    if (UDCoef2.Position > 0) and (Result<>'') then s2:= '+' + s2;
    end;
    Result := Result + s2;

    if s3 <> '' then
    begin
    if (UDCoef3.Position > 0) and (Result<>'') then s3:= '+' + s3;
    end;
    Result := Result + s3;

    if Result = '' then Result:= 'f(x) = 0'
    else Result := 'f(x) = ' + Result;
    end;

    ////////////////////////////////////////////////////////////////////////
    // Function Type f(x) = a * x^3 + b * x^2 + cx + d
    ////////////////////////////////////////////////////////////////////////
    if RadioButton5.Checked then
    begin
    case UDCoef1.Position of
    0 : s1 := '';
    1 : s1 := 'x^3 ';
    -1: s1 := '-x^3 ';
    else s1 := Coef1.Text + 'x^3 ';
    end;

    case UDCoef2.Position of
    0 : s2 := '';
    1 : s2 := 'x^2 ';
    -1: s2 := '-x^2 ';
    else s2 := ' ' + Coef2.Text + 'x^2 ';
    end;

    case UDCoef3.Position of
    0 : s3 := '';
    1 : s3 := 'x ';
    -1: s3 := '-x ';
    else s3 := ' ' + Coef3.Text + 'x ';
    end;

    case UDCoef4.Position of
    0 : s4 := '';
    else s4 := ' ' + Coef4.Text;
    end;

    //Write one by one
    Result:= s1;
    if s2 <> '' then
    begin
    if (UDCoef2.Position > 0) and (Result<>'') then s2:= '+' + s2;
    end;
    Result := Result + s2;

    if s3 <> '' then
    begin
    if (UDCoef3.Position > 0) and (Result<>'') then s3:= '+' + s3;
    end;
    Result := Result + s3;

    if s4 <> '' then
    begin
    if (UDCoef4.Position > 0) and (Result<>'') then s4:= '+' + s4;
    end;
    Result := Result + s4;

    if Result = '' then Result:= 'f(x) = 0'
    else Result := 'f(x) = ' + Result;
    end;
    end;

    procedure TFrmGraph.Coef1Change(Sender: TObject);
    begin
    {When coefficients are changed then Get Function Name}
    StatusBar1.Panels[9].Text := FunctionName;
    end;

    procedure TFrmGraph.SaveActivePaint;
    var graphRect : TRect;
    begin
    if Assigned(FGraphBmp) then FreeAndNil(FGraphBmp);
    FGraphBmp := TBitmap.Create;
    FGraphBmp.Width := PaintBox1.Width;
    FGraphBmp.Height := PaintBox1.Height;
    graphRect.Left := 0;
    graphRect.Top := 0;
    graphRect.Right := FGraphBmp.Width;
    graphRect.Bottom := FGraphBmp.Height;
    FGraphBmp.Canvas.CopyRect(graphRect, PaintBox1.Canvas, PaintBox1.ClientRect);
    end;

    procedure TFrmGraph.PaintBox1Paint(Sender: TObject);
    begin
    if Assigned(FGraphBmp) then
    PaintBox1.Canvas.Draw(0,0, FGraphBmp);
    end;

    procedure TFrmGraph.DestroyActivePaint;
    begin
    if Assigned(FGraphBmp) then FreeAndNil(FGraphBmp);
    end;


    procedure TFrmGraph.FormDestroy(Sender: TObject);
    begin
    DestroyActivePaint;
    end;

    procedure TFrmGraph.FormActivate(Sender: TObject);
    begin
    FGraphBmp := nil;
    DoubleBuffered := True;
    end;

    procedure TFrmGraph.Edit4KeyPress(Sender: TObject; var Key: Char);
    begin
    if not (ord(key) in [48..57]) then
    Key := #0; {Return '0' if the pressed key is not numerical}
    end;

    procedure TFrmGraph.BkColorChange(Sender: TObject);
    begin
    Color := BkColor.Selected;
    Button1.Click;
    end;

    procedure TFrmGraph.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState;
    X, Y: Integer);
    var zeroX, zeroY : Integer;
    posX, posY : Extended;
    pW, pH : Integer;
    gridLineWidthX : Integer;
    gridLineWidthY : Integer;
    s : string;
    begin
    pW := PaintBox1.Width;
    pH := PaintBox1.Height;

    zeroX := pW div 2;
    zeroY := pH div 2;

    gridLineWidthX := zeroX div UpDown1.Position;
    gridLineWidthY := zeroY div UpDown2.Position;

    posX :=0; posY :=0;

    //Draw Graph Follower
    PaintBox1.Refresh;
    PaintBox1.Canvas.Pen.Style := psSolid;
    PaintBox1.Canvas.Pen.Width := 1;
    PaintBox1.Canvas.Polyline([Point(X, 0), Point(X, PaintBox1.Height)]);
    PaintBox1.Canvas.Polyline([Point(0, Y), Point(PaintBox1.Width, Y)]);

    //Define GraphX Positons
    if X <> zeroX then posX := (X - zeroX) / gridLineWidthX;
    if X = zeroX then posX := 0;

    //Define GraphX Positons
    if Y <> zeroY then posY := (zeroY - Y) / gridLineWidthY;
    if X = zeroY then posY := 0;

    StatusBar1.Panels[1].Text := IntToStr(X);
    StatusBar1.Panels[3].Text := IntToStr(Y);
    StatusBar1.Panels[5].Text := Format('%.2f', [posX]);
    StatusBar1.Panels[7].Text := Format('%.2f', [posY]);

    case DemoFXValue of
    1: s := Format('f( %.2f ) = %.2f', [posX, UDCoef1.Position * sin(UDCoef2.Position * posX)]);
    2: s := Format('f( %.2f ) = %.2f', [posX, UDCoef1.Position * cos(UDCoef2.Position * posX)]);
    3: s := Format('f( %.2f ) = %.2f', [posX, UDCoef1.Position * posX + UDCoef2.Position]);
    4: s := Format('f( %.2f ) = %.2f', [posX, UDCoef1.Position * PowerN(posX,2)
    + UDCoef2.Position * posX + UDCoef3.Position]);
    5: s := Format('f( %.2f ) = %.2f', [posX, UDCoef1.Position * PowerN(posX,3)
    + UDCoef2.Position * PowerN(posX,2) + UDCoef3.Position * posX + UDCoef4.Position]);
    end;

    StatusBar1.Panels[8].Text := s;
    end;

    function TFrmGraph.PowerN(base : Extended; expo : Integer) : Extended;
    var i:Integer;
    begin
    if expo < 0 then begin Result:=-1; exit; end;

    Result := 1;
    for i:=1 to expo do
    Result := Result * base;
    end;

    end.
    [/code]
    Vartolu Saadettin (Berat Berber) 1 yıl
    kolay şeyler bunlaaar bunu mu yapamıyor ameriganlar.
    Yorum Yaz Forumda Yanıtla
    Nasıl eklemek istersiniz? Üye Girişi Yaparak
    Sorgu:
    Önceki ve Sonraki İçerikler
    Daha Yeniler 1 yıl Ödüllü HyperX QuadCast profesyonel mikrofon satışa çıkıyor 1 yıl Kablosuz Powerbeats Pro kulaklık ortaya çıktı 1 yıl Ada ülkesi Morityus’da, dar gelirlilere güneş panelleri yardımıyla ucuz elektrik sağlanıyor 1 yıl Galaxy A70 tanıtıldı: İşte özellikleri 1 yıl Asus güncelleme aracında zararlı yazılım tespit edildi 1 yıl Google Haritalara etkinlik ekleme özelliği geliyor 1 yıl Apple News+ entegre iOS 12.2 yayınlandı 1 yıl Xiaomi dünyanın en hızlı şarj teknolojisini duyuracak 1 yıl Apple TV uygulaması artık daha farklı 1 yıl 2si1 | Google Stadia ile konsol ve PC devri bitiyor mu? 1 yıl Apple'ın kendi dizi ve filmlerini yayınlayacağı TV+ servisi duyuruldu 1 yıl Developer Summit 2019, önümüzdeki ay İstanbul'da düzenlenecek 1 yıl 5000 Avro değerindeki Asus ProArt PQ22UC monitör satışa çıkıyor 1 yıl Apple Arcade oyun abonelik servisi duyuruldu 1 yıl Apple kendi kredi kartını tanıttı! 1 yıl Cep telefonları için Lazca klavye 1 yıl 2019 BMW M3 test edilirken görüntülendi 1 yıl Apple'ın dergi abonelik servisi News+ tanıtıldı 1 yıl Kanada'da dünyanın en büyük ve en yaşlı T-rex fosili bulundu 1 yıl Redmi Note 7 Pro global pazarda satışa sunulmayacak 1 yıl GÖRÜNTÜLENEN Windows 10 hesap makinesine, denklem çizebilme özelliği ekleniyor Sonraki Huawei'nin ilk akıllı TV'si Nisan'da geliyor, hedef 10 milyon adet satmak 1 yıl Apple Arcade, Apple TV ve Apple Card canlı yayın tekrarı 1 yıl 7 nm'lik Kirin 985 ile güçlendirilecek ilk telefon Huawei Mate 30 olacak 1 yıl Açılır-kapanır ön kameralı Samsung Galaxy A90'ın pil kapasitesi ortaya çıktı 1 yıl Nintendo bu yıl içinde iki yeni Switch modeli tanıtacak 1 yıl Volkswagen Caravelle'in dört tekerlekten çekişli versiyonu Türkiye'de satışa sunuldu 1 yıl Microsoft’un Chromium tabanlı Edge tarayıcısı sızdırıldı 1 yıl Tesla, Model 3'ü hackleyen takıma ödül olarak otomobil verdi 1 yıl Gmail değişiklikleri IFTTT ayarlarını olumsuz etkiledi 1 yıl PlayStation 4 için bu yıl yayınlanacak en iyi 10 oyun 1 yıl Microsoft, dosya gezgininin tasarımını yenileyecek 1 yıl Xiaomi Mi 9 SE yakında tüm dünyada satışa sunulabilir 1 yıl BNB kripto parası müthiş bir sıçrama yaptı 1 yıl 1 milyondan fazla Mac cihazı sahte Flash Player kurbanı oldu 1 yıl Google, yeni oyun servisi Stadia için olması gereken internet hızı gereksinimlerini açıkladı 1 yıl Netflix’in Beren Saat’li dizisinin ismi “Atiye” olarak açıklandı 1 yıl Apple bugün neler tanıtacak? 1 yıl Efsane Supernatural dizisi 15 sezon sonra bitiyor 1 yıl Apple'ın bugün tanıtacağı yeni hizmetlerinin fiyatlandırması ortaya çıktı 1 yıl Huawei MateBook X Pro (2018) Türkiye’de satışa sunuldu Daha Eskiler
    Alternatif Görünümler Geri Bildirim
    Yeni Bir Haber Var
    şimdi