Memo içindeki bilgileri StringGride Alma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Mugen71
Üye
Mesajlar: 4
Kayıt: 24 Tem 2019 05:03

Memo içindeki bilgileri StringGride Alma

Mesaj gönderen Mugen71 » 24 Tem 2019 05:13

Merhabalar,

Memo kutusu içinde;

paint/acura-mdx-formal-black-ii-nh707,153952
#010101 , #010101
NH707
FORMAL BLACK II
paint/acura-mdx-crystal-black-pearl-nh731p,214
#030405 , #050607
NH731P
CRYSTAL BLACK PEARL

şeklinde (4ün katları kadar satırda) veriler var.

Bu satırları StringGride her 4 satırı 1 sütuna yerleştirmek istiyorum. Sonrasındaki memonun 4 satırını stringgridde bir alt satıra. Yani;

paint/acura-mdx-formal-black-ii-nh707,153952 | #010101 , #010101 | | NH707 | | FORMAL BLACK II |
paint/acura-mdx-crystal-black-pearl-nh731p,214 | #030405 , #050607 | | NH731P | | CRYSTAL BLACK PEARL |

Yardımcı olmak isteyen varsa lütfen biraz yol göstersin. (Dik çizgileri sütunları belirtmek için koydum, normalde gridde olmayacaklar))

Saygılar

ertank
Üye
Mesajlar: 1237
Kayıt: 11 Eyl 2015 11:45

Re: Memo içindeki bilgileri StringGride Alma

Mesaj gönderen ertank » 24 Tem 2019 10:45

Merhaba,

İstediğinizi birden fazla şekilde yapmak mümkün. Aşağıda olası yöntemlerden bir tanesini bulabilirsiniz.

Kod: Tümünü seç

procedure ParseData(Grid: TStringGrid; const List: TStrings; GridHasHeader: Boolean = True);
var
  I: Integer;
  Row: Integer;
begin
  if List.Count mod 4 <> 0 then
  begin
    ShowMessage('HATA: Veri 4 ve katları şeklinde değil.');
    Exit();
  end;

  if Grid.ColCount < 4 then
  begin
    ShowMessage('HATA: Grid kolon sayısı 3 veya daha az.');
    Exit();
  end;

  I := (List.Count div 4); // 4'lü veri bloğu adedince satır
  if GridHasHeader then Inc(I);
  Grid.RowCount := I;

  I := 0;
  Row := 1;
  while I < List.Count do
  begin
    Grid.Cells[0, Row] := List[I];
    Inc(I);

    Grid.Cells[1, Row] := List[I];
    Inc(I);

    Grid.Cells[2, Row] := List[I];
    Inc(I);

    Grid.Cells[3, Row] := List[I];
    Inc(I);
    Inc(Row);
  end;
end;
Kullanımı aşağıdaki gibi olacaktır:

Kod: Tümünü seç

  ParseData(StringGrid1, Memo1.Lines);
Ekte Delphi 10.3.2 ile hazırlanmış örnek projeyi bulabilirsiniz.
Dosya ekleri
memo_to_stringgrid.7z
(52.17 KiB) 11 kere indirildi

Mugen71
Üye
Mesajlar: 4
Kayıt: 24 Tem 2019 05:03

Re: Memo içindeki bilgileri StringGride Alma

Mesaj gönderen Mugen71 » 24 Tem 2019 02:13

Teşekkür ederim. Ufak bir iki modifikasyonla tam oldu.

Cevapla