stringgride hesaplanan verileri teker teker yazmak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

stringgride hesaplanan verileri teker teker yazmak

Mesaj gönderen delphist »

S.a. Arkadaşlar benim hesaplayıp örneğin 5 sütün halinde verileri stringgride yazmam gerekiyor. Foruma baktım ama hiç kullanmadığım için tam anlayamadım stringgridin kullanımını. 5 kolona başlıklarını ve alt alta belki 5000 satır veri yazacağım hesaplayıp ve bunu daha sonra excele gönderme durumumda olacak. Nasıl alt alta hesaplayıp hesaplayıp stringgride veri yazabilirim. Yardımlarınızı bekliyorum. Belki basit bir soru sordum ama hiç kullanmadığım için beceremedim.

Teşekkürler
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Re: stringgride hesaplanan verileri teker teker yazmak

Mesaj gönderen ikutluay »

delphist yazdı:S.a. Arkadaşlar benim hesaplayıp örneğin 5 sütün halinde verileri stringgride yazmam gerekiyor. Foruma baktım ama hiç kullanmadığım için tam anlayamadım stringgridin kullanımını. 5 kolona başlıklarını ve alt alta belki 5000 satır veri yazacağım hesaplayıp ve bunu daha sonra excele gönderme durumumda olacak. Nasıl alt alta hesaplayıp hesaplayıp stringgride veri yazabilirim. Yardımlarınızı bekliyorum. Belki basit bir soru sordum ama hiç kullanmadığım için beceremedim.

Teşekkürler
açıkçası forumda yada google da nasıl olup da bulamadığınız başlı başına hayret konusu ancak ;

mantıksal olarak bahsedelim ;

öncelikle string grid denen şey bir matristir. 0 0 indexlidir. siz 1. satır ve sütunu başlıklar için ayıracağınızdan döngü ile ilgili CELL değerlerine kendi değerlerinizi yazacaksınız.

kur programımdan örnek kod

Kod: Tümünü seç

Procedure TFrmdoviz.FillValuesToGrid;
Var
 Loop:Integer;
Begin
  For Loop := 1 to 12 do
    Begin
      Sgrid.Cells[0,Loop] := IntToStr(DkurUnit[Loop]);
      Sgrid.Cells[1,Loop] := Dkur[Loop];
      Sgrid.Cells[2,Loop] := Dkurn[Loop];
      Sgrid.Cells[3,Loop] := FloatToStr(DkurAlis[Loop]);
      Sgrid.Cells[4,Loop] := FloatToStr(DkurSatis[Loop]);
      Sgrid.Cells[5,Loop] := FloatToStr(DkurEAlis[Loop]);
      Sgrid.Cells[6,Loop] := FloatToStr(DkurESatis[Loop]);
      Sgrid.Cells[7,Loop] := FloatToStr(DkurUsdPrt[Loop]);
      Sgrid.Cells[8,Loop] := FloatToStr(DkurOthPrt[Loop]);
    End;
end;
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

string grid yazdırma

Mesaj gönderen ikutluay »

aslında bu ipucu bölümünede atılabilir ama buradada bulunsun

STRINGGRID YAZDIRAN FONKSIYON

Kod: Tümünü seç

procedure PrintStringGrid(AGrid: TStringGrid);
var MaxSizes: array of Integer;
    column, row, sx, sy, LeftSpace: Integer;
begin
  SetLength(MaxSizes, AGrid.ColCount);
  for column := 0 to AGrid.ColCount - 1 do
   MaxSizes[column] := 0;
  for row := 0 to AGrid.RowCount - 1 do
   for column := 0 to AGrid.ColCount - 1 do
     if Printer.Canvas.TextWidth(Agrid.Cells[column, row]) > MaxSizes[column] then
      MaxSizes[column] := Printer.Canvas.TextWidth(Agrid.Cells[column, row]) + 10;
  Printer.BeginDoc;
  LeftSpace := 10; // sol bosluk
  sx := LeftSpace;
  sy := 0;
  for row := 0 to AGrid.RowCount - 1 do
  begin
   for column := 0 to AGrid.ColCount - 1 do
   begin
     Printer.Canvas.TextOut(sx, sy, AGrid.Cells[column, row]);
     sx := sx + MaxSizes[column];
   end;
   sx := LeftSpace;
   sy := sy + Printer.Canvas.TextHeight('A') + 2;
  end;
  Printer.EndDoc;
end;

procedure TFrmdoviz.BtnPrnClick(Sender: TObject);
begin
  PrintStringGrid(sgrid);
end;
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

STRING GRID EXCELE ATMAK

Kod: Tümünü seç

procedure XlsWriteCellLabel(XlsStream: TStream; const ACol, ARow: Word;
  const AValue: string);
var
  L: Word;
const
  {$J+}
  CXlsLabel: array[0..5] of Word = ($204, 0, 0, 0, 0, 0);
  {$J-}
begin
  L := Length(AValue);
  CXlsLabel[1] := 8 + L;
  CXlsLabel[2] := ARow;
  CXlsLabel[3] := ACol;
  CXlsLabel[5] := L;
  XlsStream.WriteBuffer(CXlsLabel, SizeOf(CXlsLabel));
  XlsStream.WriteBuffer(Pointer(AValue)^, L);
end;


function SaveAsExcelFile(SG: TStringGrid; AFileName: string): Boolean;
const
  {$J+} CXlsBof: array[0..5] of Word = ($809, 8, 00, $10, 0, 0); {$J-}
  CXlsEof: array[0..1] of Word = ($0A, 00);
var
  FStream: TFileStream;
  I, J: Integer;
begin
  Result := False;
  FStream := TFileStream.Create(PChar(AFileName), fmCreate or fmOpenWrite);
  try
    CXlsBof[4] := 0;
    FStream.WriteBuffer(CXlsBof, SizeOf(CXlsBof));
    for i := 0 to SG.ColCount - 1 do
      for j := 0 to SG.RowCount - 1 do
        XlsWriteCellLabel(FStream, I, J, SG.cells[i, j]);
    FStream.WriteBuffer(CXlsEof, SizeOf(CXlsEof));
    Result := True;
  finally
    FStream.Free;
  end;
end;

procedure TFrmdoviz.BtnExcelClick(Sender: TObject);
begin
if SaveDialog.Execute then
SaveAsExcelFile(sgrid, SaveDialog.FileName);
end;
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

EXCEL I AÇAN FONKSİYON VE İÇİNE SATIR SUTUN PARAMETRİK YAZAN FONKSİYON

Kod: Tümünü seç

Function ikOpenExcel(Show : Boolean) : Boolean;
Begin
  ikOpenExcel  := False;
  Excelcreated := False;
{  Try
    //   If RunningInTheIDE=False then
    //    Begin
    ExExcel      := GetActiveOleObject('Excel.Application');
    ExcelCreated := True;
    If Show Then
      ExExcel.Visible := True;
    //    End;
  Except}
    Try
      ExExcel := CreateOleObject('Excel.Application');
      If Show Then
        Exexcel.Visible := True;
      ExcelCreated := True;
    Except
      ExcelCreated := False;
      ShowMessage('Excel Yüklü Değil ?');
     End;
//   End;
  If ExcelCreated Then
    ikOpenExcel := True;
End;
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

Kod: Tümünü seç

///////////////////////////////////
Procedure IkWriteCell(line, col : Integer; txt : String; upper : Boolean);
Begin
  Ex_Cell := ExWorkSheet.Cells[line, col];
  If upper Then
    txt := UpperstrTr(txt);
  Ex_Cell.Value := txt;
End;
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

STRING GRIDI DBYE YAZMA

Kod: Tümünü seç

Procedure TFrmdoviz.SetValuesToDb(typ:smallint);
Var
 Loop : Integer;
Begin
  If typ = 0 then DM.TblDoviz.Append else DM.TblDoviz.Edit;
  DM.TblDovizDvzTar.AsDateTime    :=KurTar;
  DM.TblDovizDvzUpdated.AsBoolean :=True;
  For Loop:=2 to 13 Do
    Begin
      DM.TblDoviz.Fields[Loop].AsInteger:=DkurUnit  [Loop-1];
    End;
  For Loop:=14 to 25 Do
    Begin
      DM.TblDoviz.Fields[Loop].AsFloat:=DkurAlis  [Loop-13];
    End;
  For Loop:=26 to 37 Do
    Begin
      DM.TblDoviz.Fields[Loop].AsFloat:=DkurSatis  [Loop-25];
    End;
  For Loop:=38 to 49 Do
    Begin
      DM.TblDoviz.Fields[Loop].AsFloat:=DkurEAlis  [Loop-37];
    End;
  For Loop:=50 to 61 Do
    Begin
      DM.TblDoviz.Fields[Loop].AsFloat:=DkurESatis  [Loop-49];
    End;
  For Loop:=62 to 73 Do
    Begin
      DM.TblDoviz.Fields[Loop].AsFloat:=DkurUsdPrt  [Loop-61];
    End;
  For Loop:=74 to 85 Do
    Begin
      DM.TblDoviz.Fields[Loop].AsFloat:=DkurOthPrt  [Loop-73];
    End;
  DM.TblDoviz.Post;
End;
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Cevapla