1

Konu: Gridde bar grafik

Bu kodu foxite'da cevap olarak gondermistim. Sanirim benim dusundugumden fazla ilgi cekiciymis. Onun icin buraya da koyayim dedim:

Visual Fox Pro
Public oForm

oForm = Createobject('myForm')
oForm.Show
 
Define Class myForm As Form
  Add Object myGrid As Grid
 
  Procedure Load
    Create Cursor myProcess (percent i, Name c(10))
    Rand(-1)
    For ix = 1 To 100
      Insert Into myProcess Values (Int(Rand()*100),Sys(2015))
    Endfor
    Locate
  Endproc
 
  Procedure Init
    With This.myGrid
      .AddColumn(.ColumnCount+1)
      .Columns(.ColumnCount).ControlSource = 'myProcess.Percent'
      .Columns(.ColumnCount).DynamicFontBold = "!(thisform.UpdateContainer(this.columns(1).myPercent))"
      .Columns(.ColumnCount).Header1.Caption = 'Percentage'
    Endwith
 
    With This.myGrid.Columns(1)
      .AddObject('myPercent','myContainer')
      .myPercent.Width = .Width
      .myPercent.lblPercent.Width = .Width
      .myPercent.Visible = .T.
      .DynamicFontBold = "thisform.UpdateContainer(this.columns(1).myPercent)"
      .CurrentControl = 'myPercent'
      .Sparse = .F.
    Endwith
 
    This.myGrid.Columns(1).Enabled = .F.
  Endproc
 
  Procedure UpdateContainer(toContainer)
    With toContainer
      .shpPercent.BackColor = Iif(percent>90,0xFF,Iif(percent>70,0x00FFFF,0x00FF00))
      .shpPercent.Width = toContainer.Parent.Width * percent/100
      .lblPercent.Caption = '%'+Ltrim(Str(percent))
    Endwith
  Endproc
Enddefine
 
Define Class myContainer As Container
  BackColor=0xFFFFFF
  BorderWidth=0
  Add Object shpPercent As Shape With BorderStyle = 0
  Add Object lblPercent As Label With Alignment = 2 ,BackStyle=0
Enddefine

2

Re: Gridde bar grafik

^ (şapka çıkarma işareti)(Kınamadan gına gelmişti - iyi oldu)

VFP9 SP2

3

Re: Gridde bar grafik

Futbolun Messi'si varsa, Yazılımın da Çetin'i var.

Hayatımda çok az insanı böyle tanımaktan mutlu oldum, aynı havayı solumaktan, aynı zamanı paylaşmaktan gurur duydum.
Çetin seni tanıdığım için çok şanslı hissediyorum kendimi. İyi ki varsın.
Mesleğimi bana yeniden sevdiren adam. Selam olsun sana.

4

Re: Gridde bar grafik

selamlar, bunu kodla değilde form üzerinde oluşturan varmı, ben beceremedim ,acaba neyi yanlış yapıyorum.
yeni b,r form açtım,
form'a grid ekledim
formun loadına (procedure load ta yazanları yazdım)
formun initine bu kodu yazdım

Visual Fox Pro
With This.myGrid

      .AddColumn(.ColumnCount+1)
      .Columns(.ColumnCount).ControlSource = 'myProcess.Percent'
      .Columns(.ColumnCount).DynamicFontBold = "!(thisform.UpdateContainer(this.columns(1).myPercent))"
      .Columns(.ColumnCount).Header1.Caption = 'Percentage'
    Endwith
 
    With This.myGrid.Columns(1)
      .AddObject('myPercent','Container')
 
  with .mypercent
  BackColor=0xFFFFFF
  BorderWidth=0
  .AddObject('shpPercent','shape')
  .AddObject('lblPercent','label')
 
      WITH .shpPercent
      .borderstyle = 0
      ENDWITH
 
      WITH .lblPercent
      .Alignment = 2
      .BackStyle=0
      endwith
ENDWITH   
 
      .myPercent.Width = .Width
      .myPercent.lblPercent.Width = .Width
      .myPercent.Visible = .T.
      .DynamicFontBold = "thisform.UpdateContainer(this.columns(1).myPercent)"
      .CurrentControl = 'myPercent'
      .Sparse = .F.
     Endwith
 
    This.myGrid.Columns(1).Enabled = .F.


form'a updatecontainer diye new method ekledim ve şunu yazdım

Visual Fox Pro
LPARAMETERS tocontainer

    With tocontainer
      .shpPercent.BackColor = Iif(percent>90,0xFF,Iif(percent>70,0x00FFFF,0x00FF00))
      .shpPercent.Width = toContainer.Parent.Width * percent/100
      .lblPercent.Caption = '%'+Ltrim(Str(percent))
      ENDWITH

form çalışıyor ama grid bar renklenmiyor

Kader, beyaz kağıda sütle yazılmış yazı
Elindeyse beyazdan, gel de sıyır beyazı. (NFK)

5

Re: Gridde bar grafik

Selamlar;

tarik  bu link sanırım işini görürür,

http://www.foxite.com/uploads/1a866bd7- … 9c04c4.zip

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

6

Re: Gridde bar grafik

Tarik,
Sadece ekledigin kontrollerin visible = .t. ozelliklerini unutmussun. Eger objeleri AddObject ya da NewObject ile eklersen, visible otomatikman .F.

Visual Fox Pro
WITH .shpPercent

         .borderstyle = 0
 
.Visible = .t.
ENDWITH
 
WITH .lblPercent
      .Alignment = 2
      .BackStyle=0
 
.Visible = .t.
endwith

7

Re: Gridde bar grafik

visible = .f.  yapınca sorun çözüldü
ramazan gönderdiğin linke baktım ,grid'çalışma esnasında oluşturmayı düşündüğüm için çetinbey'in dediği gibi düzeltmeyi yapıp o şekilde kullanacağım.
ilginiz için çok teşekkür ederim.

Kader, beyaz kağıda sütle yazılmış yazı
Elindeyse beyazdan, gel de sıyır beyazı. (NFK)

8

Re: Gridde bar grafik

çetin hocam
aşağıdaki gibi bir cursor oluşturulsa ,gantchart benzeri birşey olabilirmi grid içerisinde,eğer olursa sizden basit bir örnek görebilirmiyiz

Visual Fox Pro
Create Cursor myProcess (Name c(10),m1 n(4,2),m2 n(4,2),m3 n(4,2),m4 n(4,2),m5 n(4,2),m6 n(4,2),m7 n(4,2),m8 n(4,2),m9 n(4,2),m10 n(4,2))

INSERT INTO myprocess VALUES ( "500501",100,100,100,25,0,0,0,0,0,0)
INSERT INTO myprocess VALUES ( "500501",0,0,0,75,25,0,0,0,0,0)
INSERT INTO myprocess VALUES ( "500501",0,0,0,0,75,100,0,0,0,0)
INSERT INTO myprocess VALUES ( "500501",0,0,0,0,0,0,100,100,100,50)
Kader, beyaz kağıda sütle yazılmış yazı
Elindeyse beyazdan, gel de sıyır beyazı. (NFK)

9

Re: Gridde bar grafik

Tarik,
Senin cursor degerlerinin ne oldugunu anlamadim. Burada calakalem tarzi bir ornek var (normalde bir container class yapip onun metodlarina yuklerim update isini):

Visual Fox Pro
Public oForm

oForm = Createobject('myForm')
oForm.Show
 
Define Class myForm As Form
    Height=400
    Width=400
    Add Object myGrid As Grid With ;
        RecordSource = 'myProcess', RowHeight=100, ;
        Height=400,Width = 400,Anchor=15 ;
 
    Procedure Load
        Create Cursor myProcess (ProcessID i, Name c(10))
        Insert Into myProcess Values (1, "Process #1")
        Insert Into myProcess Values (2, "Process #2")
        Insert Into myProcess Values (3, "Process #2")
        Locate
 
        Create Cursor myProcessProgress (ProcessID i, Start i, duration i, Color i)
        Insert Into myProcessProgress Values (1, 0, 10, Rgb(255,0,0))
        Insert Into myProcessProgress Values (1, 10, 20, Rgb(255,255,0))
        Insert Into myProcessProgress Values (1, 25, 10, Rgb(255,0,255))
 
        Insert Into myProcessProgress Values (2, 20, 10, Rgb(255,255,0))
        Insert Into myProcessProgress Values (2, 25, 20, Rgb(0,255,0))
        Insert Into myProcessProgress Values (2, 50, 50, Rgb(0,0,255))
        Insert Into myProcessProgress Values (2, 30, 10, Rgb(255,255,0))
 
        Insert Into myProcessProgress Values (3, 10, 50, Rgb(0,0,255))
        Insert Into myProcessProgress Values (3, 60, 30, Rgb(255,255,0))
        Locate
 
    Endproc
 
    Procedure Init
        With This.myGrid.Columns(1)
            .ControlSource = 'myProcess.Name'
            .Width = 100
        Endwith
 
        With This.myGrid.Columns(2)
            .Header1.Caption = 'Progress'
            .Width=150
            .AddObject('myProgress','Container')
            .myProgress.Width = .Width
            .myProgress.BorderWidth=0
            .myProgress.BackStyle = 0
            .myProgress.Visible = .T.
            .DynamicFontBold = "thisform.UpdateContainer(this.columns(2).myProgress, myProcess.ProcessID)"
            .CurrentControl = 'myProgress'
            .Sparse = .F.
            .Enabled = .F.
        Endwith
    Endproc
 
    Procedure UpdateContainer(toContainer, tnProcessID)
        Local lnControls, ix, ctrlName
        Local Array laProcess[1]
        Select Start, duration, Color ;
            From myProcessProgress ;
            WHERE ProcessID = m.tnProcessID ;
            INTO Array laProgress
        lnControls = _Tally
 
        With toContainer
            If .ControlCount < m.lnControls
                For ix = .ControlCount+1 To .ControlCount+m.lnControls
                    ctrlName = Textmerge('shpProgress<< m.ix >>')
                    .AddObject( m.ctrlName, 'Shape' )
                Endfor
            Endif
            .SetAll('Visible', .F. )
            For ix = 1 To m.lnControls
                ctrlName = Textmerge('shpProgress<< m.ix >>')
                With Getpem(m.toContainer, m.ctrlName)
                    .BorderStyle = 0
                    .Height = 20
                    .Top = .Height * (m.ix-1)
                    .Left = laProgress[m.ix,1]
                    .Width = laProgress[m.ix,2]
                    .BackColor = laProgress[m.ix,3]
                    .Visible = .T.
                Endwith
            Endfor
        Endwith
    Endproc
 
    Procedure myGrid.BeforeRowColChange
        Lparameters nColIndex
        Thisform.LockScreen = .T.
    Endproc
 
    Procedure myGrid.AfterRowColChange
        Lparameters nColIndex
        Thisform.LockScreen = .F.
    Endproc
 
Enddefine

10 Son düzenleyen, tarik (05.02.2013 22:57:02)

Re: Gridde bar grafik

hocam cursor deki değerler sizin start,duration benzeri değerlerdi.yani resimdeki gibi birşey

İleti eklentileri

GANTT2.jpg
GANTT2.jpg 105.29 kb, 2 kez indirildi, 2013-02-05 tarihinden itibaren 

Bu iletideki eklenti/leri indirmeye yetkiniz yok.
Kader, beyaz kağıda sütle yazılmış yazı
Elindeyse beyazdan, gel de sıyır beyazı. (NFK)

11

Re: Gridde bar grafik

Bu daha kolaymis:) Benim gonderdigimde ayni processin N tane start/duration'i var.

12

Re: Gridde bar grafik

Soylemeyi unuttum, ben benzer isleri MS HFlexgrid kontrolu ile yapiyorum. O daha esnek (ya da nasil olsa bu goruntu icin, HTML daha basit).

13

Re: Gridde bar grafik

hocam şu basit olanlar için bi bukle örnek rica etsek smile

Kader, beyaz kağıda sütle yazılmış yazı
Elindeyse beyazdan, gel de sıyır beyazı. (NFK)

14 Son düzenleyen, cetinbasoz (07.02.2013 19:03:53)

Re: Gridde bar grafik

Pek bukle olmadi ama bunun icinde DOM isleme de var ondan bunu sectim (basit demenin ceremesi:)

Visual Fox Pro
CreateTestData()

 
* Gannt icin hazirla
Select islem.*, tip.islemAdi, renk.renkAdi ;
    from islemler islem ;
    inner Join islemTipleri tip On islem.islemTipi = tip.islemTipi ;
    inner Join islemRenkleri renk On islem.islemTipi = renk.islemTipi ;
    into Cursor crsGannt ;
    nofilter
 
ShowGannt()
 
Procedure ShowGannt()
    * Horizontal or vertical layout
    Local lHorizontal
    lHorizontal = ( Messagebox("Horizontal or Vertical?",4+32+4096,"Yes = Horizontal") = 6 )
 
    Public oForm
    oForm = Newobject('HTMLViewerForm')
    oForm.Show()
 
    Local loDocument
    loDocument = oForm.HTMLViewer.Object.Document
    If ( m.lHorizontal )
        HorizontalLayout(m.loDocument)
    Else
        VerticalLayout(m.loDocument)
    Endif
 
Endproc
 
Procedure HorizontalLayout(toDocument)
    Local oTable, loTable, oRow, ix
    oTable = toDocument.createElement("TABLE")
    With oTable
        .Border = 0
        oTBody = toDocument.createElement("TBODY")
        .AppendChild(oTBody)
        .cellSpacing = 0
        .cellPadding = 0
    Endwith
    oRow = oTBody.insertRow(-1)
 
    Select Year(dStart) As yr, Month(dStart) As mn From crsGannt ;
        union ;
        select Year(dEnd), Month(dEnd) From crsGannt ;
        into Cursor crsYearMon ;
        nofilter
 
    For ix = 1 To Reccount('crsYearMon')+1
        oRow.insertCell(-1)
    Endfor
 
    loTable = CreateInfoRows(m.toDocument,'crsGannt')
    oRow.Cells(0).AppendChild( m.loTable )
 
    Select crsYearMon
    Scan
        loTable = CreateTableForMonth(m.toDocument,'crsGannt', crsYearMon.yr, crsYearMon.mn)
        Select crsYearMon
        oRow.Cells(Recno()).AppendChild( m.loTable )
    Endscan
    toDocument.body.AppendChild(m.oTable)
Endproc
 
Procedure VerticalLayout(toDocument)
    Local oTable, loTable, oRow, ix
    oTable = toDocument.createElement("TABLE")
    With oTable
        .Border = 0
        oTBody = toDocument.createElement("TBODY")
        .AppendChild(oTBody)
        .cellSpacing = 0
        .cellPadding = 0
    Endwith
 
    Select Year(dStart) As yr, Month(dStart) As mn From crsGannt ;
        union ;
        select Year(dEnd), Month(dEnd) From crsGannt ;
        into Cursor crsYearMon ;
        nofilter
 
    For ix = 1 To Reccount('crsYearMon')
        oRow = oTBody.insertRow(-1)
        oRow.insertCell(-1)
        oRow.insertCell(-1)
    Endfor
 
    Select crsYearMon
    Scan
        ldStart = Date(crsYearMon.yr, crsYearMon.mn, 1)
        ldEnd = Gomonth(m.ldStart,1)-1
 
        Select * From crsGannt ;
            where dStart <= m.ldEnd And dEnd >= m.ldStart ;
            order By dStart, dEnd ;
            into Cursor crsThisMonth ;
            nofilter
 
        loInfoTable = CreateInfoRows(m.toDocument,'crsThisMonth')
        loTable = CreateTableForMonth(m.toDocument,'crsThisMonth', crsYearMon.yr, crsYearMon.mn)
 
        Select crsYearMon
 
        oTable.Rows( Recno() - 1 ).Cells( 0 ).AppendChild( loInfoTable )
        oTable.Rows( Recno() - 1 ).Cells( 1 ).AppendChild( loTable )
    Endscan
    toDocument.body.AppendChild(m.oTable)
Endproc
 
Procedure CreateTestData
    Local ix, dStart, dEnd
    Create Cursor islemRenkleri (islemTipi i, renkAdi c(10))
    Insert Into islemRenkleri (islemTipi, renkAdi) Values (1, 'Red')
    Insert Into islemRenkleri (islemTipi, renkAdi) Values (2, 'RoyalBlue')
    Insert Into islemRenkleri (islemTipi, renkAdi) Values (3, 'LightGreen')
    Insert Into islemRenkleri (islemTipi, renkAdi) Values (4, 'Chocolate')
    Insert Into islemRenkleri (islemTipi, renkAdi) Values (5, 'Turquoise')
    Insert Into islemRenkleri (islemTipi, renkAdi) Values (6, 'Moccasin')
    Insert Into islemRenkleri (islemTipi, renkAdi) Values (7, 'Maroon')
    Insert Into islemRenkleri (islemTipi, renkAdi) Values (8, 'DarkKhaki')
    Insert Into islemRenkleri (islemTipi, renkAdi) Values (9, 'LightCoral')
    Insert Into islemRenkleri (islemTipi, renkAdi) Values (10, 'Blue')
 
    Create Cursor islemTipleri (islemTipi i, islemAdi c(10))
    For ix = 1 To 10
        Insert Into islemTipleri (islemTipi, islemAdi) Values (m.ix, Textmerge('Islem << m.ix >>'))
    Endfor
 
    Create Cursor islemler (ProcessID i, Name c(20), dStart d, dEnd d, islemTipi i)
    Insert Into islemler (ProcessID, Name, dStart, dEnd, islemTipi) Values (1, 'Aksiyon 1', Date(2013,2,1), Date(2013,2,2), 1)
    Insert Into islemler (ProcessID, Name, dStart, dEnd, islemTipi) Values (2, 'Aksiyon 2', Date(2013,2,2), Date(2013,2,4), 2)
    Insert Into islemler (ProcessID, Name, dStart, dEnd, islemTipi) Values (3, 'Aksiyon 3', Date(2013,2,5), Date(2013,2,7), 3)
    Insert Into islemler (ProcessID, Name, dStart, dEnd, islemTipi) Values (4, 'Aksiyon 4', Date(2013,2,8), Date(2013,2,10), 4)
 
    Rand(-1)
    For ix = 1 To 20
        dStart = Date(2013,2,1) + Int(Rand()*90)
        dEnd = m.dStart + Int(Rand()*10)
        Insert Into islemler ;
            (ProcessID, Name, dStart, dEnd, islemTipi) ;
            values ;
            (m.ix, Textmerge('Aksiyon << m.ix+4 >>'), m.dStart, m.dEnd, Max(Int(Rand()*10),1))
    Endfor
Endproc
 
Procedure CreateTableForMonth(toDocument,tcCursor, tnYear, tnMonth)
 
    Select (m.tcCursor)
    Local oTable,oThead,oTFoot,oTBody,oCaption, ix, oRow, oCell, ldStart, ldEnd
    ldStart = Date(m.tnYear,m.tnMonth,1)
    ldStart = m.ldStart  - Day(m.ldStart) + 1 && Ayin ilk gunu
    ldEnd = Gomonth(m.ldStart, 1) - Day(Gomonth(m.ldStart, 1)) && Ayin son gunu
 
    oTable = toDocument.createElement("TABLE")
 
    * Insert the created elements into oTable.
    With oTable
        .Border = 1
        .Width = (15 + 1)*Day(m.ldEnd)
        .Id = 'my'+Left(Dtoc(m.ldStart,1),6)
        .Style.BorderColor = "black"
        .Style.BorderWidth = "thin"
        .Style.BorderStyle = "solid"
 
        oTBody = toDocument.createElement("TBODY")
        oTFoot = .createTFoot()
 
        .AppendChild(oTBody)
 
        .cellSpacing = 0
        .cellPadding = 0
    Endwith
 
    * caption
    CreateTableCaptionForMonth(m.oTable, m.ldStart)
    * header
    CreateHeaderForMonth(m.oTable, m.ldEnd)
    *RowData
    CreateDetailForMonth(m.oTable, m.tcCursor, m.ldStart, m.ldEnd)
    Return oTable
Endproc
 
Procedure CreateDetailForMonth(m.oTable, m.tcCursor, m.tdStart, m.tdEnd)
    Local oRow, lnDays, ix, nMonth, nStart, nEnd
    nMonth = Month(m.tdStart)
    lnDays = Day(m.tdEnd)
 
    For ix=1 To Reccount()
        CreateDetailRow(m.oTable, m.lnDays)
    Endfor
 
    Select (m.tcCursor)
    Scan
        If dStart <= m.tdEnd And dEnd >= m.tdStart
            Do Case
                Case Month(dStart) = m.nMonth And Month(dEnd) = m.nMonth
                    nStart = Day(dStart)
                    nEnd = Day(dEnd)
                Case Month(dStart) = m.nMonth
                    nStart = Day(dStart)
                    nEnd = m.lnDays
                Case Month(dEnd) = m.nMonth
                    nStart = 1
                    nEnd = Day(dEnd)
                Otherwise
                    nStart = 1
                    nEnd = m.lnDays
            Endcase
            For ix = m.nStart To m.nEnd
                m.oTable.Rows(Recno()).Cells(m.ix-1).Style.backgroundcolor = Trim(renkAdi)
            Endfor
        Endif
    Endscan
Endproc
 
Procedure CreateDetailRow(toTable, tnColumncount)
    Local oRow, oCell, ix
    oRow = m.toTable.insertRow(1)
    For ix=1 To m.tnColumncount
        oCell = m.oRow.insertCell(-1)
        oCell.innerHtml = "&nbsp;"
        oCell.Style.BorderCollapse = "collapse"
        oCell.Style.Border = "1px dashed lightgray"
    Endfor
    Return m.oRow
Endproc
 
Procedure CreateTableCaptionForMonth(toTable, tdSampleDate)
    oCaption = toTable.createCaption()
    oCaption.innerText = Getwordnum("Ocak,Subat,Mart,Nisan,Mayis,Haziran,Temmuz,Agustos,Eylul,Ekim,Kasim,Aralik",Month(m.tdSampleDate),",")
    oCaption.Style.FontSize = "14 pt"
    oCaption.Style.Color = "Blue"
    oCaption.Style.backgroundcolor = "Yellow"
    oCaption.Style.BorderWidth = "thin"
    oCaption.Style.BorderStyle = "solid"
    oCaption.Align = "top"
Endproc
 
Procedure CreateHeaderForMonth(toTable, tdEnd)
    Local oThead, oRow, oCell, ix
    oThead = toTable.createTHead()
    oRow = oThead.insertRow(0)
    For ix=1 To Day(m.tdEnd)
        oCell = oRow.insertCell(-1)
        oCell.Style.FontSize = 'x-small'
        oCell.innerText = Ltrim(Str(m.ix))
        oCell.Width = "15px"
        oCell.Align = "center"
    Endfor
    Return oThead
Endproc
 
Procedure CreateInfoRows(toDocument,tcCursor)
    Select (m.tcCursor)
    Local oTable,oThead,oTFoot,oTBody,oCaption, ix, oRow, oCell, ldStart, ldEnd
 
    oTable = toDocument.createElement("TABLE")
 
    * Insert the created elements into oTable.
    With oTable
        .Border = 1
        .Width = 460
        .Id = 'myInfo'
        .Style.BorderColor = "lightgray"
        .Style.BorderWidth = "1px"
        .Style.BorderStyle = "solid"
        oTBody = toDocument.createElement("TBODY")
        .AppendChild(oTBody)
        .cellSpacing = 0
        .cellPadding = 0
    Endwith
 
    * caption
    oCaption = oTable.createCaption()
    oCaption.innerHtml = "&nbsp;"
    oCaption.Style.FontSize = "14 pt"
    oCaption.Align = "top"
 
    * header
    Local oThead, oRow, oCell, ix
    oThead = oTable.createTHead()
    oRow = oThead.insertRow(0)
    oCell = oRow.insertCell(-1)
    oCell.Width = "100px"
    oCell.Align = "right"
    oCell.innerText = "ProcessID"
 
    oCell = oRow.insertCell(-1)
    oCell.Width = "150px"
    oCell.Align = "left"
    oCell.innerText = "Name"
 
    oCell = oRow.insertCell(-1)
    oCell.Width = "100px"
    oCell.Align = "left"
    oCell.innerText = "Start"
 
    oCell = oRow.insertCell(-1)
    oCell.Width = "100px"
    oCell.Align = "center"
    oCell.innerText = "Duration"
 
    *RowData
    Select (m.tcCursor)
    Scan
        oRow = oTable.insertRow(-1)
        oCell = oRow.insertCell(-1)
        oCell.Align = "right"
        oCell.innerText = Ltrim(Str(ProcessID))
 
        oCell = oRow.insertCell(-1)
        oCell.innerText = Name
 
        oCell = oRow.insertCell(-1)
        oCell.innerText = Dtoc(dStart)
 
        oCell = oRow.insertCell(-1)
        oCell.Align = "center"
        oCell.innerText = Ltrim(Str( dEnd - dStart + 1 ))
    Endscan
    Return oTable
Endproc
 
Define Class HTMLViewerForm As Form
    DataSession = 2
    ShowWindow = 2
    Height = 500
    Width = 800
    Caption = "HTML sample"
 
    Add Object HTMLViewer As OleControl With ;
        Top = 0, Left = 0, Height = 500, Width = 800, Visible = .T., ;
        anchor=15, OleClass = 'Shell.Explorer'
 
    Procedure Init
        This.HTMLViewer.navigate2('about:blank')
        With This.HTMLViewer.Document
            oBody = .createElement('body')
            .AppendChild(oBody)
        Endwith
    Endproc
 
    Procedure HTMLViewer.Refresh
        Nodefault
    Endproc
Enddefine

15

Re: Gridde bar grafik

hocam ellerinize sağlık ,harikalar dünyanızdaki güzellikleri bizle paylaştınız

Kader, beyaz kağıda sütle yazılmış yazı
Elindeyse beyazdan, gel de sıyır beyazı. (NFK)

16

Re: Gridde bar grafik

Çetin Üstadım;

Uzun süredir böyle keyifli bir kod görmemiştim.

Yine şapkadan FİL çıkartmışsın!!!

Aklına, sağlığına ve ellerine sağlık smile

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

17

Re: Gridde bar grafik

hocam son örneğinizde ilk aksiyon 8 şubatta başlasa ,son aksiyonda 9 martta bitse. şemamız da bu tarih aralığında oluşturmak için ne yapmalıyız. (DOM işleme bumu ?)
birde gantt şemeasını formun içinde nasıl gösteririz ?

Kader, beyaz kağıda sütle yazılmış yazı
Elindeyse beyazdan, gel de sıyır beyazı. (NFK)

18

Re: Gridde bar grafik

tarıh aralıgını soylediğin aralık yaparsın.

Ornek zaten form.