Konfigurasi Teks

sekedar goresan untuk melawan lupa ....

Jumat, 23 Januari 2009

Program Dialog listProduk

Dalam kesempatan Latihan kali ini , coba buat ulang Aplikasi Dialog
dengan nama ListProduk



1. IDC_KODEBARANG (m_Kodebarang)
2. IDC_NAMABARANG (m_NamaBarang)
3. IDC_SPESIFIKASI (m_Spesifikasi)
4. IDC_TYPE (m_Type)
5. IDC_MERK (m_Merk)
6. IDC_SATUAN (m_Satuan)
7. IDC_PACKING (m_Packing)
8. IDC_HARGAUNIT (m_HargaUnit)
9. IDC_TANGGALPRICE (m_TanggalPrice)
10 IDC_NOTE (m_Note)
11. IDC_CARIKODE void :: OnCarikode()
12. IDC_HASIL (m_Hasil)
13. IDC_LISTBARANG (m_ListBarang)
14. IDC_SIMPAN void ::OnSimpan()
15. IDC_HAPUS void ::OnHapus()
16. IDC_TAMBAH void ::OnTambah()
*#include <C:\\Programer\\ERS\\Umum\\Fungsi.h>
#include <C:\\Programer\\ERS\\Umum\\Definisi.h>
typedef struct
{
char kodebarang[15];
char namabarang[64];
char spesifikasi[128];
char type[128] ;
char merk ;
char satuan;
char packing;
long double hargaunit;
CTime tanggalprice;
char note[256];
int filefoto;
long foto;
} ST_PRODUK;
ST_PRODUK far *po;
ST_PRODUK far *op;
.h files*
#include <C:\\...\\Umum\\Foto.h>
long m_pRekord;
long m_pMakRekord;
long m_pAwal;
long m_pLangkah;
CFoto m_Video;
int m_pFileFoto;
long m_pRekFoto;
long m_pMakFoto;
char m_pMerk;
char m_pSatuan;
char m_pPacking;
void mfCreatNew() ;
void mfListBarang() ;
void mfTayangEditBarang() ;
*BOOL CListProdukDlg::OnInitDialog()*
{
CDialog::OnInitDialog();
m_ListBarang.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE,
LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);
m_ListBarang.InsertColumn( 0, "No", LVCFMT_LEFT, 30);
m_ListBarang.InsertColumn( 1, "kodebarang", LVCFMT_LEFT, 100);
m_ListBarang.InsertColumn( 2, "namabarang", LVCFMT_LEFT, 100);
m_ListBarang.InsertColumn( 3, "spesifikasi", LVCFMT_LEFT, 100);
m_ListBarang.InsertColumn( 4, "type", LVCFMT_LEFT, 100);
m_ListBarang.InsertColumn( 5, "merk", LVCFMT_LEFT, 100);
m_ListBarang.InsertColumn( 6, "satuan", LVCFMT_LEFT, 80);
m_ListBarang.InsertColumn( 7, "packing", LVCFMT_LEFT, 80);
m_ListBarang.InsertColumn( 8, "hargaunit", LVCFMT_LEFT, 100);
m_ListBarang.InsertColumn( 9, "tanggalprice", LVCFMT_LEFT, 80);
m_ListBarang.InsertColumn( 10, "filefoto", LVCFMT_LEFT, 80);
m_ListBarang.InsertColumn( 11, "foto", LVCFMT_LEFT, 80);
// m_pRekord = 0 ;
m_pAwal = 0 ;
// m_pMakRekord = 0 ;
// m_pLangkah = 26 ;
mfListBarang() ;
// mfCreatNew () ;
}

// Edit Box
*void CListProdukDlg::OnChangeKodebarang() *
{
GetDlgItemText (IDC_KODEBARANG, m_KodeBarang);
}
//ComboBox
*void CListProdukDlg::OnSelendokMerk() *
{
CComboBox* pCmb = (CComboBox*)GetDlgItem(IDC_MERK);
m_pMerk = pCmb->GetCurSel();
}
*void CListProdukDlg::mfCreatNew() *
{
char str [128];

FILE * arus ;
if (AfxMessageBox ("Yakin, Creat Data Pras?", MB_OKCANCEL )!=IDOK )
return;
if(( po = (ST_PRODUK*)malloc(sizeof(ST_PRODUK))) == NULL ) exit(-1);
arus = _fsopen( NC_PRODUK, "w+b", _SH_DENYNO );
for( int i=0; i<10 ; i++)
{
strcpy (po->kodebarang, "Kode");
strcpy (po->namabarang, "Nama Barang") ;
strcpy (po->spesifikasi, "Spesifikasi") ;
strcpy (po->type, "Type") ;
po->merk = 0 ;
po->satuan = 0 ;
po->packing = 0 ;
po->hargaunit = 0 ;
po->tanggalprice = ((CFungsi*)AfxGetApp())->mfSekarang();
strcpy (po->note, "note") ;
po->filefoto = 0 ;
po->foto = 0 ;
fwrite (po, sizeof (ST_PRODUK),1,arus );
}
fclose (arus);
free (po);
// mfTayangEditPerhitungan();
AfxMessageBox ("Selesai");
}
*void CListProdukDlg::mfTayangEditBarang() *
{
char str[32];
FILE *arus;
if(( po = (ST_PRODUK*)malloc(sizeof(ST_PRODUK))) == NULL ) exit(-1);
arus = _fsopen( NC_PRODUK, "r+b", _SH_DENYNO );
fseek( arus, m_pRekord*sizeof(ST_PRODUK), SEEK_SET );
fread( po, sizeof(ST_PRODUK), 1, arus );
m_KodeBarang = po->kodebarang; SetDlgItemText (IDC_KODEBARANG,
m_KodeBarang);
m_NamaBarang = po->namabarang; SetDlgItemText (IDC_NAMABARANG,
m_NamaBarang);
m_Spesifikasi= po->spesifikasi; SetDlgItemText (IDC_SPESIFIKASI,
m_Spesifikasi);
m_Type = po->type; SetDlgItemText (IDC_TYPE, m_Type);
m_pMerk = po->merk; m_Merk.SetCurSel(m_pMerk);
m_pSatuan= po->satuan; m_Satuan.SetCurSel(m_pSatuan);
m_pPacking = po->packing; m_Packing.SetCurSel(m_pPacking);
sprintf( str, "%22.f",((po->hargaunit)), str);
SetDlgItemText (IDC_HARGAUNIT, str);
m_TanggalPrice = po->tanggalprice;
m_Note = po->note; SetDlgItemText (IDC_NOTE, m_Note);
fclose( arus );
free( po);
}
*void CListProdukDlg::mfListBarang() *
{
char str[128];
int i;
FILE *arus;
if(( po = (ST_PRODUK*)malloc(sizeof(ST_PRODUK))) == NULL ) exit(-1);
arus = _fsopen( NC_PRODUK, "r+b", _SH_DENYNO );
m_pMakRekord =
(long)(_filelength(fileno(arus)))/(long)(sizeof(ST_PRODUK));
// m_ListBarang.DeleteAllItems();
// for( i=0 ; i<m_pLangkah ; i++ ) m_ListBarang.InsertItem(0, "");
m_ListBarang.DeleteAllItems();
for( i=0 ; i<m_pMakRekord ; i++ ) m_ListBarang.InsertItem(0, "");
fseek( arus, m_pAwal*sizeof(ST_PRODUK), SEEK_SET );
i=0;
while(1)
// for( i=0 ; i<m_pLangkah ; i++ )
{
if( fread( po, sizeof(ST_PRODUK), 1, arus )!=1 ) break;
sprintf (str, "%d", i+m_pAwal);
m_ListBarang.SetItem(i, 0, LVIF_TEXT, str, -1, 0, 0, 0);
m_ListBarang.SetItem(i, 1, LVIF_TEXT, po->kodebarang, -1, 0, 0, 0);
m_ListBarang.SetItem(i, 2, LVIF_TEXT, po->namabarang, -1, 0, 0, 0);
m_ListBarang.SetItem(i, 3, LVIF_TEXT, po->spesifikasi, -1, 0, 0, 0);
m_ListBarang.SetItem(i, 4, LVIF_TEXT, po->type, -1, 0, 0, 0);
m_ListBarang.SetItem (i,5, LVIF_TEXT,
((CFungsi*)AfxGetApp())->mfKonversiMerk (po->merk), -1, 0, 0, 0);
m_ListBarang.SetItem (i,6, LVIF_TEXT,
((CFungsi*)AfxGetApp())->mfKonversiSatuan(po->satuan), -1, 0, 0, 0);
m_ListBarang.SetItem (i,7, LVIF_TEXT,
((CFungsi*)AfxGetApp())->mfKonversiSatuan(po->packing), -1, 0, 0, 0);
((CFungsi*)AfxGetApp())->mfFormatRupiah(po->hargaunit, str);
m_ListBarang.SetItem(i, 8, LVIF_TEXT, str, -1, 0, 0, 0);
sprintf (str, "%s", po->tanggalprice.Format("%d-%m-%Y"));
m_ListBarang.SetItem(i, 9, LVIF_TEXT, str, -1, 0, 0, 0);
i++;
}
fclose( arus );
free( po );
}
*void CListProdukDlg::OnClickListbarang(NMHDR* pNMHDR, LRESULT* pResult) *
{
char sss[32];
NM_LISTVIEW *pmnListView = (NM_LISTVIEW *)pNMHDR;
int i = pmnListView->iItem;
m_ListBarang.GetItemText( i, 0, sss, 8 );
m_pRekord = atoi( sss ) ;

// mfTayangEditBarang();

*pResult = 0;
}
*void CListProdukDlg::OnCarikode() *
{
char str[128], isi[256];
long rek = 0;
FILE *arus;
strcpy( str, m_KodeBarang );
if(( po = (ST_PRODUK*)malloc(sizeof(ST_PRODUK))) == NULL ) exit(-1);
arus = _fsopen( NC_PRODUK, "a+b", _SH_DENYNO );
m_Hasil.ResetContent();
while( 1 )
{
if( fread( po, sizeof(ST_PRODUK), 1, arus )!=1 ) break;
if( strstr( _strupr(po->kodebarang), _strupr(str))!=0 )
{
sprintf( isi, "%02ld - %s - %s - %s - %s ", rek+1,
po->kodebarang, po->namabarang, po->spesifikasi, po->type);
m_Hasil.AddString( isi );
}
rek++;
}
fclose( arus );
free( po );
}
*void CListProdukDlg::OnSelchangeHasil() *
{
char str[128];
int pos;
long rek;
CSize cs;
cs.cx = 0;
;
pos = m_Hasil.GetCurSel();
m_Hasil.GetText( pos, str );
str[6] = '\0';
m_pRekord = atol( str )-1;
mfTayangEditBarang();
// Menayangkan data pokok
// m_pAwal = m_pRekord;
// mfListBarang();
}
*void CListProdukDlg::OnSimpan() *
{
FILE *arus;
int pan;
char str[32];
int i;

if( (strlen (m_KodeBarang)==0) || (strlen (m_NamaBarang)==0) )
{
AfxMessageBox( "Pengisian Tidak Boleh Kosong" );
// mfTayangEditKosong ();
GetDlgItem(IDC_KODEBARANG)->SetFocus();
return;
}
if (AfxMessageBox ("Yakin Akan Menyimpan Data ?", MB_OKCANCEL
)!=IDOK ) return;
if(( po = (ST_PRODUK*)malloc(sizeof(ST_PRODUK))) == NULL ) exit(-1);
arus = _fsopen( NC_PRODUK, "r+b", _SH_DENYNO );
fseek( arus, m_pRekord*sizeof(ST_PRODUK), SEEK_SET );
fread( po, sizeof(ST_PRODUK), 1, arus );
// strcpy (po->kodebarang, m_KodeBarang);
strcpy (po->namabarang, m_NamaBarang) ;
strcpy (po->spesifikasi, m_Spesifikasi) ;
strcpy (po->type, m_Type) ;
po->merk = m_pMerk ;
po->satuan = m_pSatuan ;
po->packing = m_pPacking ;
strcpy( str, m_HargaUnit);
pan = strlen (str);
for( i=0 ; i<pan ; i++ ) if( str[i]==',' ) str[i] = '.';
po->hargaunit = (double long) atof (str);
po->tanggalprice = m_TanggalPrice;
//strcpy( po->tanggalprice, m_TanggalPrice );
strcpy (po->note, m_Note) ;
po->filefoto = m_pFileFoto;
po->foto = m_pRekFoto ;
fseek(arus, m_pRekord*sizeof(ST_PRODUK),SEEK_SET);
fwrite(po,sizeof(ST_PRODUK),1,arus);
fclose( arus );
free ( po );
mfListBarang();
// mfTayangListSlipT();
// mfTayangKosong();
}
*void CListProdukDlg::OnHapus() *
{
int i = 0;
FILE *arus, *dest;
if( (strlen(m_KodeBarang)==0) || (strlen(m_NamaBarang)==0) )
{
AfxMessageBox( "Data Tidak Boleh Kosong" );
return;
}
if(( po = (ST_PRODUK*)malloc(sizeof(ST_PRODUK))) == NULL ) exit(-1);
arus = _fsopen( NC_PRODUK, "r+b", _SH_DENYNO );
dest = fopen( NC_SEMENTARA, "w+b" );
while( 1 )
{
if( fread( po, sizeof(ST_PRODUK), 1, arus )!=1 ) break;
if( i!=m_pRekord )
fwrite( po, sizeof(ST_PRODUK), 1, dest );
i++;
}
fclose( arus );
fclose( dest );
free( po );
remove(NC_PRODUK);
rename(NC_SEMENTARA,NC_PRODUK);
// mfTayangKosong();
mfListBarang();
}
*void CListProdukDlg::OnTambah() *
{
FILE *arus;
int pan;
char str[32];
int i;
if( (strlen(m_KodeBarang)==0) || (strlen(m_NamaBarang)==0) )
{
AfxMessageBox( "Data Tidak Boleh Kosong" );
return;
}
if (AfxMessageBox ("Yakin akan menambah data ?", MB_OKCANCEL )!=IDOK
) return;
if(( po = (ST_PRODUK*)malloc(sizeof(ST_PRODUK))) == NULL ) exit(-1);
arus = _fsopen( NC_PRODUK, "a+b", _SH_DENYNO );
if( strlen( m_KodeBarang)==0 )
{
AfxMessageBox( "Kode Barang Harus di isi" );
GetDlgItem(IDC_KODEBARANG)->SetFocus();
return;
}
while (1)
{
if (fread(po, sizeof(ST_PRODUK),1, arus)!=1) break;
if ((strcmp(po->kodebarang, m_KodeBarang) == 0 ) )
{
AfxMessageBox ("Data Sudah Ada ");
goto LANJUT ;
}
}
strcpy (po->kodebarang, m_KodeBarang);
strcpy (po->namabarang, m_NamaBarang) ;
strcpy (po->spesifikasi, m_Spesifikasi) ;
strcpy (po->type, m_Type) ;
po->merk = m_pMerk ;
po->satuan = m_pSatuan ;
po->packing = m_pPacking ;
strcpy( str, m_HargaUnit);
pan = strlen (str);
for( i=0 ; i<pan ; i++ ) if( str[i]==',' ) str[i] = '.';
po->hargaunit = (double long) atof (str);
po->tanggalprice = m_TanggalPrice;
strcpy (po->note, m_Note) ;
po->filefoto = 0;
po->foto = 0;
fwrite( po, sizeof(ST_PRODUK), 1, arus );
LANJUT :
fclose( arus );
free( po );
mfListBarang();
}
*void CListProdukDlg::OnAwaldata() *
{
m_pRekord = 0;
char str[32];
sprintf( str, "%ld", m_pRekord );
SetDlgItemText( IDC_NOMORREKORDDATA, str );
// mfListPegawai();
mfTayangEditBarang();
}
*void CListProdukDlg::OnSebelumcepatdata() *
{
m_pRekord -= 1;
if( m_pRekord<0 ) m_pRekord = 0;
char str[32];
sprintf( str, "%ld", m_pRekord );
SetDlgItemText( IDC_NOMORREKORDDATA, str );
// mfListPegawai();
mfTayangEditBarang();
}
*void CListProdukDlg::OnSesudahcepatdata() *
{
m_pRekord += 1;
if( m_pRekord>m_pMakRekord-m_pLangkah ) m_pRekord =
m_pMakRekord-m_pLangkah;

char str[32];
sprintf( str, "%ld", m_pRekord );
SetDlgItemText( IDC_NOMORREKORDDATA, str );
// mfListPegawai();
mfTayangEditBarang();
}
*void CListProdukDlg::OnChangeNomorrekorddata() *
{
m_NomorRekordData = (long) GetDlgItemInt (IDC_NOMORREKORDDATA);

}
*void CListProdukDlg::OnKerekordlistkaryawan() *
{
m_pRekord = m_NomorRekordData;
char str[32];
sprintf( str, "%ld", m_pRekord );
SetDlgItemText( IDC_NOMORREKORDDATA, str );
mfTayangEditBarang();
}