Udah pada tau kan tentang TStringGrid ini?
Simplenya, StringGrid ini sama seperti DBGrid, tapi sayangnya DBGrid tidak bisa di edit kalo belum di koneksikan ke database.
StringGrid ini sama seperti DataGridView pada VB.Net
oke jadi ceritanya saya mau buat supaya dalam 1 cell di Grid, bisa 2 baris atau lebih
kyk gini nih
Penasaran? langsung aja step by stepnya yah :D
1. Letakkan TStringGrid ke dalam Form
2. Ubah properties
- OPTIONS - GOEDITING - TRUE
- COLCOUNT = 5
- FIXEDCOLS = 0
- FIXEDROW = 1
StringGrid1.Cols[0].Text:='QTY';
StringGrid1.Cols[1].Text:='ITEM';
StringGrid1.Cols[2].Text:='DESCRIPTION';
StringGrid1.Cols[3].Text:='UNIT PRICE';
StringGrid1.Cols[4].Text:='LINE TOTAL';
StringGrid1.ColWidths[0]:=50;
StringGrid1.ColWidths[1]:=100;
StringGrid1.ColWidths[2]:=300;
StringGrid1.ColWidths[3]:=100;
StringGrid1.ColWidths[4]:=100;
4.Pilih StringGridnya, EVENT - ONDRAWCELL ketikkan kode berikut
with TStringGrid(Sender) do
if Pos(#13#10, Cells[ACol, ARow]) > 0 then
begin
Canvas.FillRect(Rect);
Inc(Rect.Left, 2);
Inc(Rect.Top, 2);
DrawText(Canvas.Handle, PChar(Cells[ACol, ARow]), -1, Rect,
DT_NOPREFIX or DT_WORDBREAK);
end;
5. Tambahkan procedure ini dibawah {$R *.dfm}
procedure TForm1.UpdateRowHeights(AGrid: TStringGrid);
var
Y: Integer;
MaxHeight: Integer;
X: Integer;
R: TRect;
TxtHeight: Integer;
begin
for Y := AGrid.FixedRows to AGrid.RowCount - 1 do
begin
MaxHeight := AGrid.DefaultRowHeight - 4;
for X := AGrid.FixedCols to AGrid.ColCount - 1 do
begin
R := Rect(0, 0, AGrid.ColWidths[X] - 4, 0);
TxtHeight := DrawText(AGrid.Canvas.Handle, PChar(AGrid.Cells[X, Y]), -1,
R, DT_WORDBREAK or DT_CALCRECT);
if TxtHeight > MaxHeight then
MaxHeight := TxtHeight;
end;
AGrid.RowHeights[Y] := MaxHeight + 4;
end;
end;
TForm1 dapat diganti ya sesuai nama form kalian :)
6. Tambahin ini di bagian atas dibawah TYPE
private
{ Private declarations }
procedure UpdateRowHeights(AGrid: TStringGrid); // mendaftarkan procedure yg kita buat
public
{ Public declarations }
end;
7. Pilih StringGridnya, EVENT ONKEYPRESS tambahkan coding :
if key=#13 then
UpdateRowHeights(StringGrid1);
selesaii deh :D
saatnya uji coba..!
Pilih salah satu cells / Fields
kemudian ketikan
ABC trus buat pindah baris barunya, teken CTRL + ENTER
ketikkan CDE
kalo sudah selesai, tekan ENTER
taraaa :D
oke sekian pemirsa
terimakasih sudah berkunjung di blog saya :)
mas..gimana kalo perkalian data stringgrid dengan edittext..
BalasHapusmasalnya stringgrid ad field no nilai
no nilai
1 5
2 3
3 2
edittext=3
jadi nanti 5*3,3*3,2*3..dan kalo input data lagi..trus berlanjut perkaliannya..
halo terimakasih sudah berkunjung di sini =)
Hapusmudah kok..
(0) (1) (2) -> Indeks kolom
No Nilai Hasil
1 5 15
2 3 9
3 2 6
If Key=#13 Then
Begin
Case StringGrid1.Col of
1 : Begin
StringGrid1.Cells[2,StringGrid1.row] =
INTTOSTR(
STRTOINT(StringGrid1.Cells[1,StringGrid1.row])*
STRTOINT(EditText1.Text)
)
End
End //End case
ditaruh event KeyPress
Penggunaan : Masukkan Angka di kolom ke 2, kemudian tekan Enter
nanti hasilnya muncul di kolom ke 3 (atau indeks ke 2)
Semoga bermanfaat =)
mas gimana kalau pakai dbgrid?
BalasHapusmas mau tanya bagaimana cara memuat tulisan berupa kalimat (string) di stringgrid. Secara default ketika kita masukan tulisan kalimat akan memanjang untuk setiap cell di stringgrid sehingga tidak terbaca kecuali jika letakkan kursor. kita inginkan "tulisan" bisa termuat dalam 1 cell di stringgrid dalam keadaan sudah rata kiri dan kanan. Sama halnya seperti kita melakukannya di excel ketika ingin memuat 1 tulisan kalimat yang cukup panjang dalam 1 cell. Mohon bantuannya.
BalasHapusKomentar ini telah dihapus oleh pengarang.
BalasHapusBagaimana Cara Membuat Paginasi di Stringgrid
BalasHapusApakah Bisa Stringgrid di buat Paginasi Tabel?
BalasHapus