Konuyu Oyla:
  • Derecelendirme: 4/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
[ÇÖZÜLDÜ] Grafik VCL önerisi
#1
Herkese selamlar,

bir projemde kullanılmak üzere ekteki resimdeki gibi bir grafik yapmam gerekiyor. Teechart ile bu şekle bep getiremedim. Önereceğiniz bir VCL varsa, yardımcı olmanızı rica ederim.

   
Cevapla
#2
(10-04-2019, Saat: 18:29)wiseman Adlı Kullanıcıdan Alıntı: Herkese selamlar,

bir projemde kullanılmak üzere ekteki resimdeki gibi bir grafik yapmam gerekiyor. Teechart ile bu şekle bep getiremedim. Önereceğiniz bir VCL varsa, yardımcı olmanızı rica ederim.
Teecharta bakmışsınız herhalde fakat ben sample larında boyle bir ornek hatirliyorum sanki
Yalnızım ama bir kente yürüyen ordu gibiyim, edebiyattan kaçınmalıyım..
Cevapla
#3
Basit bir örnek vereyim, oradan mantığı yürütürsünüz...  Idea

Uses  VclTee.Series,
      VclTee.TeeGDIPlus,
      VclTee.TeEngine,
      Vcl.ExtCtrls,
      VclTee.TeeProcs,
      VclTee.Chart;

var
  FChart : VclTee.Chart.TChart;

Procedure PieChartHazirla( aControl: TWinControl );
begin
  if NOT Assigned( FChart )
    then FChart := VclTee.Chart.TChart.Create(nil);

  With FChart do begin
    Parent  := aControl;
    Width   := aControl.Width  - 20;
    Height  := aControl.Height - 20;
    Left    := 10;
    Top     := 10;
    Anchors := [akLeft, akTop, akRight, akBottom];
    Visible := True;

    View3D := True;
    Legend.Visible := True;

    while SeriesCount > 0 do Series[0].DisposeOf;

    Title.Text.Clear;
      Title.Text.Add( 'Ana Başlık 1. Satır' );
      Title.Text.Add( 'Ana Başlık 2. Satır' );
      Title.Text.Add( 'Ana Başlık 3. Satır' );

    AddSeries( VCLTee.Series.TPieSeries.Create(nil) );
    Series[0].Name := 'PieChart';
    Series[0].Add( 10, '10 birim', clYellow  );
    Series[0].Add( 20, '20 birim', clBlue    );
    Series[0].Add( 30, '30 birim', clMaroon  );
    Series[0].Add( 40, '40 birim', clRed     );
  end;
end;

Procedure PieChartKaldir;
begin
  if Assigned( FChart ) then
  begin
    while FChart.SeriesCount > 0
      do FChart.Series[0].DisposeOf;
    FreeAndNil( FChart );
  end;
end;



Örnek Kullanım

procedure TForm1.Button1Click(Sender: TObject);
begin
  PieChartHazirla( self );
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  PieChartKaldir();
end;



uhkfflgl06kdaguvnxvc.png
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#4
Muharrem hocam, çok teşekkür ederim ilginize. Aşağıdaki satırda disposeof komutunu kabul etmedi.
while SeriesCount > 0 do Series[0].DisposeOf;
Cevapla
#5
Free deyin disposeof yerine çalışacaktır.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#6
Muharrem hocam, teşekkür ederim. Yine bir derdimize çare oldunuz. Smile
Cevapla
#7
(11-04-2019, Saat: 09:53)mrmarman Adlı Kullanıcıdan Alıntı: Free deyin disposeof yerine çalışacaktır.

Muharrem hocam, bir de chart onmousemove eventinda, mouse hangi dilimin üzerinde ise, onun değerini hint olarak nasıl alabileceğim konusunda da yardım istesem olur mu?
Cevapla
#8
Hemen örnekleyelim...

  With FChart do begin
    Parent  := aControl;
   Width   := aControl.Width  - 20;
   Height  := aControl.Height - 20;
   Left    := 10;
   Top     := 10;
   Anchors := [akLeft, akTop, akRight, akBottom];
   Visible := True;
// Eklenen Event
   OnMouseMove := Form1.PieMouseMove; //Bunu Ekledik....

procedure TForm1.PieMouseMove(Sender: TObject; Shift: TShiftState; X,  Y: Integer);
var
  sIdx   : Integer;
  aPoint : TPoint;
begin
  sIdx   := FChart.Series[0].Clicked(X, Y);
  FChart.ShowHint := sIdx <> -1;

  if FChart.ShowHint then
  begin
    FChart.Hint := FChart.Series[0].ValueMarkText[sIdx];
    aPoint.X := X;
    aPoint.Y := Y - 30;
    Application.ActivateHint( ClientToScreen( aPoint ));
  end;
end;


csbges7difcp7zjtzuix.gif
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#9
(11-04-2019, Saat: 18:33)mrmarman Adlı Kullanıcıdan Alıntı: Hemen örnekleyelim...

  With FChart do begin
    Parent  := aControl;
   Width   := aControl.Width  - 20;
   Height  := aControl.Height - 20;
   Left    := 10;
   Top     := 10;
   Anchors := [akLeft, akTop, akRight, akBottom];
   Visible := True;
// Eklenen Event
   OnMouseMove := Form1.PieMouseMove; //Bunu Ekledik....

procedure TForm1.PieMouseMove(Sender: TObject; Shift: TShiftState; X,  Y: Integer);
var
  sIdx   : Integer;
  aPoint : TPoint;
begin
  sIdx   := FChart.Series[0].Clicked(X, Y);
  FChart.ShowHint := sIdx <> -1;

  if FChart.ShowHint then
  begin
    FChart.Hint := FChart.Series[0].ValueMarkText[sIdx];
    aPoint.X := X;
    aPoint.Y := Y - 30;
    Application.ActivateHint( ClientToScreen( aPoint ));
  end;
end;


csbges7difcp7zjtzuix.gif
Teşekkürler hocam. Oldu.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  [ÇÖZÜLDÜ]animate işlemi wiseman 2 183 11-05-2020, Saat: 09:23
Son Yorum: wiseman
  [ÇÖZÜLDÜ]Chart Hatası hk. wiseman 5 327 05-05-2020, Saat: 17:50
Son Yorum: wiseman
  [çözüldü] TeeChart 10.2 yeniden kurulum wiseman 4 309 29-04-2020, Saat: 01:02
Son Yorum: hi_selamlar
  çözüldü-lazarusda md5 işlemi hk. sadikacar60 3 272 06-04-2020, Saat: 22:13
Son Yorum: ihalilcoban
  çözüldü-screenshot yapmak hk. sadikacar60 8 714 27-03-2020, Saat: 21:11
Son Yorum: sadikacar60



Konuyu Okuyanlar: 1 Ziyaretçi