1

Konu: Grafikte sütun max değerini sabitleme

merhaba dostlar,malumunuz herhangi bir veriyi grafiğe dökerken ,grafiği hazırladıktan sonra, general alana grafiği saklıyor ve yazdırıyoruz.Problem şu Grafiğin Y ekseninin alabileceği max değeri sabitleyemiyorum.Verinin içeriğine göre Max değer her seferinde değişiyor.Bu da grafiğin yanlış yorumlanmasına sebebiyet veriyor. Max değer 500 olsun,eğer okunan veri 250 ise ona göre grafik sütünu kendini ayarlasın istiyorum.Tecrübeli dostlardan görüş bekliyorum :-)

En büyük sermaye nakit,nakit sermaye vakittir...

2

Re: Grafikte sütun max değerini sabitleme

"General alana sakliyoruz ve yazdiriyoruz" - ben oyle yapmiyorum ama bundan anladigim MSGraph kullaniyorsun.

Visual Fox Pro
*** set the LOCALEID to English

nlLocaleId=Sys(3004)        && Save local id
=Sys(3006,1033)                && We will be sending instructions in English
 
* Part of xlChartType constants
#Define xl3DArea                     -4098
#Define xl3DColumn                    -4100
#Define xl3DLine                    -4101
#Define xl3DPie                        -4102
#Define xlArea                        1
#Define xlBar                       2
#Define xlColumn                    3
#Define xlLine                        4
#Define xlPie                        5
 
*** Constant Group: XlAxisType
#Define xlCategory                                        1
#Define xlSeriesAxis                                      3
#Define xlValue                                           2
*** Constant Group: XlRowCol
#Define xlColumns                                         2
#Define xlRows                                            1
 
 
Create Cursor testgen (graph1 g, graph2 g, graph3 g)
Append Blank
Append General graph1 Class msgraph.Chart Data GetDataSet(200)
Append General graph2 Class msgraph.Chart Data GetDataSet(500)
Append General graph3 Class msgraph.Chart Data GetDataSet(300)
 
Public oForm
oForm = Createobject("Form")
With oForm
  .Height = 400
  .Width = 920
  .Show
  .AddObject('myGraph1','OleBoundControl')
  .AddObject('myGraph2','OleBoundControl')
  .AddObject('myGraph3','OleBoundControl')
 
  With .myGraph1
    .Height = oForm.Height - 20
    .Width = 300
    .Left = 0
    .Top = 0
    .ControlSource = "testgen.graph1"
    .Object.Application.plotby = xlColumns
    .HasLegend = .F.
    .Axes(xlValue).MaximumScale = 500
    .Visible=.T.
  Endwith
  With .myGraph2
    .Height = oForm.Height - 20
    .Width = 300
    .Left = 310
    .Top = 0
    .ControlSource = "testgen.graph2"
    .Object.Application.plotby = xlColumns
    .HasLegend = .F.
    .Axes(xlValue).MaximumScale = 500
    .Visible=.T.
  Endwith
  With .myGraph3
    .Height = oForm.Height - 20
    .Width = 300
    .Left = 620
    .Top = 0
    .ControlSource = "testgen.graph3"
    .Object.Application.plotby = xlColumns
    .HasLegend = .F.
    .Axes(xlValue).MaximumScale = 500
    .Visible=.T.
  Endwith
Endwith
**** Set the LocaleId to the previous value
=Sys(3006,Val(nlLocaleId))
 
Procedure GetDataSet(tnMax)
  Local lcTemp, cData, lnSelect
  lnSelect = Select()
  Rand(-1)
  Create Cursor DataSheet (Kategori c(10), ColA i, colB i, colC i)
  For ix = 1 To 5
    Insert Into DataSheet Values ;
      ('Row #'+Padl(m.ix,2,'0'),Rand()*m.tnMax, Rand()*m.tnMax, Rand()*m.tnMax)
  Endfor
  lcTemp = Forcepath(Sys(2015)+'.tmp',Sys(2023))
 
  Copy To (m.lcTemp) Type Csv
  cData = Chrtran(Filetostr(m.lcTemp),',',Chr(9))
  Erase (m.lcTemp)
  Use In 'DataSheet'
  Select (m.lnSelect)
  Return m.cData
endproc

3

Re: Grafikte sütun max değerini sabitleme

hocam sen bir başkasın.

Bilmediğin Neyse Yanıldığındır.

4

Re: Grafikte sütun max değerini sabitleme

çetin hocam,her zamanki gibi süpersiniz.ms graph kullanıyorum dediğiniz gibi. çok teşekkür ederim.Bilmediğimiz başka yöntemler de varsa,aydınlatırsanız çok memnun oluruz

En büyük sermaye nakit,nakit sermaye vakittir...

5

Re: Grafikte sütun max değerini sabitleme

Merhaba

Dbf'de farklı malların satış fiyatları ve aynı malların toptancı fiyatları var.
Her iki datayı kullanarak grafik oluşturuyorum. (X,Y)

Bir form üzerinde malların ismini gösterdiğim Listbox var ve  interactivechange altında;

#DEFINE CRLF CHR(13)+CHR(10)
#DEFINE TAB CHR(9)
LOCAL lcData
sele anadata

SCAN
lcData = lcData + DTOC(tarih)
lcData = lcData + TAB
lcData = lcData + ALLTRIM(STR(fiyat,5,2))+TAB+ALLTRIM(STR(bazfiyat,5,2)) + CRLF
ENDSCAN
thisform.lst1.rowsource="anadata.fiyat,tarih"
sele Graph
APPEND GENERAL msgraph DATA lcData

var.
Öğrenmek istediğim şu.
Listbox'ta seçilen herbir malın min ve max fiyatları farklı. Grafik oluştururken Y ekseninin
min ve max değerlerinin listbox ta seçilen malın min ve max  fiyatına eşit olsun.
Nasıl yapabilirim ?

6

Re: Grafikte sütun max değerini sabitleme

Visual Fox Pro
WITH Thisform.OleBoundControl01 AS "MSGraph.Chart"

    .ControlSource = "anadata.fiyat"
    .HasLegend = .t.
    .autoformat(-4100,1)
    .Axes(2).MinimumScale = MINS   &&minimum değerin
    .Axes(2).MaximumScale = MAXS  &&maximum değerin
ENDWITH

örneğindeki gibi .MinimumScale ve .MaximumScale kullanabilirsin.

7

Re: Grafikte sütun max değerini sabitleme

Teşekkürler.

8

Re: Grafikte sütun max değerini sabitleme

Özcan beyin verdiği bilgiler doğrultusunda gerekeni yaptım. Y eksenindeki Min ve max değerleri değişken hale getirdim ve bir sorun yok.
Ancak X eksenindeki verilerde (tarihler) bir problem oluşuyor.
haftalık, aylık, yıllık graph oluşturduğumda X eksenindeki tarih aralığı sabit kalıyor. Önce haftalık grafiği oluşturup sonra yıllık grafiğe geçtiğimde bu eksende yine haftalığa ait tarihler kalıyor. Oysa 365 günün tarihini göstermesi gerekiyor.
Ne yapabilirim.
Teşekkürler.

9

Re: Grafikte sütun max değerini sabitleme

Sorumu değiştiriyorum

Özcan beyin verdiği kod'u  1.11.2009 tarihinde verdiğim(yukarıda) scan...endscan' dan öncemi
sonramı çalıştımalıyım (nereye koymalıyım)
Teşekkürler

10

Re: Grafikte sütun max değerini sabitleme

sonra çalıştırmalısın, önce data hazır olmalı, sonra da grafikteki ayarlar yapılmalı.
Aşağıdaki şekilde deneyebilir misin.

Visual Fox Pro
.....

THISform.LockScreen = .T.
Thisform.OleBoundControl01.ControlSource=""
SELECT anadata
APPEND GENERAL fiyat CLASS MSGraph.Chart DATA lcData
WITH Thisform.OleBoundControl01 AS "MSGraph.Chart"
    .ControlSource = "anadata.fiyat"
    .HasLegend = .t.
    .autoformat(-4100,1)
    .Axes(2).MinimumScale = MINS   &&minimum değerin
    .Axes(2).MaximumScale = MAXS  &&maximum değerin
ENDWITH
THISform.LockScreen = .F.

11

Re: Grafikte sütun max değerini sabitleme

Bende öyle yapmıştım, ancak emin olamadım.
Y eksenindeki min ve max değerleri istediğim gibi değiştiriyorum. Buraya kadar sorun yok.
Bu durumda X eksenindeki tarihler sabit kalıyor.


Örnek:
Haftalık grafikte
             Y ekseninde min=50    max=100
             X eksenindeki tarihler 01/01/2010, 02/01/2010 .....07/01/2010 (bir haftalık)
Sonra bir command buton aracılığı ile aylık grafiğe çeviriyorum.
             Y ekseninde min=60    max=90 olarak (senin verdiğin bilgiler doğrultusunda) değiştiriyorum.
             Ancak Y eksenindeki tarihler bir aylık olması gerekirken  yine 01/01/2010, 02/01/2010 .....07/01/2010 (bir haftalık) olarak görünüyor.

Not: Min ve mak değerlere müdahale etmezsem haftalık, aylık grafiklerdeki Y eksendeki tarihler
doğru görünüyor.

Teşekkürler.

12

Re: Grafikte sütun max değerini sabitleme

Bu gün tekrar burada yazılan kodlardan yararlanarak önemli değişiklikler yaptım.Fox pro dostlarına yürekten teşekkürler

En büyük sermaye nakit,nakit sermaye vakittir...