Kamis, Mei 15, 2008

Bhs C Dasar - Chapter VIII

#include
#include

int main()
{
char input_char;

printf("Hit any key - to stop hit a $\n");
do
{
input_char = getch();
printf("Input character is %c, numerical value is %3d\n",
input_char, input_char);
} while (input_char != '$');

return 0;
}

contoh lain

#include
#include
char storage[80];
int main()
{
char c;
int index = 0;

printf("Tekan sembarang character, keluar dari program tekan X\n");

do
{
c = getch(); /* ambil sebuah character */
if (index < 79) /* batas dari 79 characters */
{
storage[index] = c;
index++;
}
putchar(c); /* tampilkan hit key */
} while (c != 'X');
storage[index] = 0;
printf("%s\n", storage);
printf("\nAkhir dari program.\n");

return 0;

}

Bhs C Dasar - Chapter VII

struct dalah kumpulan dari berbagai tipe data menjadi satu.
cara pendeklarasian :
struct nama{
int a;
float b ; // berbeda bisa dijadikan dalam 1 struct;
char z;
};

contoh pemakaian sebagai berikut :
struct nama{
int a;
float b ;
char z;
};

void main() {
nama.a =5;
nama.b =4.0;
nama.z = 'a';
}
contoh lain berupa Array of struct
#include
#include
struct
{
char what[25];
int legs, arms;
} object[6];

int main()
{
int index;

strcpy(object[0].what, "human being");
object[0].legs = 2;
object[0].arms = 2;

strcpy(object[1].what, "dog");
object[1].legs = 4;
object[1].arms = 0;

strcpy(object[2].what, "television set");
object[2].legs = 4;
object[2].arms = 0;

strcpy(object[3].what, "chair");
object[3].legs = 4;
object[3].arms = 2;

strcpy(object[4].what, "centipede");
object[4].legs = 100;
object[4].arms = 0;

strcpy(object[5].what, "spider");
object[5].legs = 6;
object[5].arms = 0;

for(index = 0 ; index < 6 ; index++)
{
printf("A %s has %d legs and %d arms.\n", object[index].what,
object[index].legs, object[index].arms);
}

return 0;
}

contoh kombinasinya , menggunakan pointer:
#include
#include
struct
{
char what[25];
int legs, arms;
} object[6], *point;

int main()
{
int index;

strcpy(object[0].what, "human being");
object[0].legs = 2;
object[0].arms = 2;

strcpy(object[1].what, "dog");
object[1].legs = 4;
object[1].arms = 0;

strcpy(object[2].what, "television set");
object[2].legs = 4;
object[2].arms = 0;

strcpy(object[3].what, "chair");
object[3].legs = 4;
object[3].arms = 2;

strcpy(object[4].what, "centipede");
object[4].legs = 100;
object[4].arms = 0;

strcpy(object[5].what, "spider");
object[5].legs = 6;
object[5].arms = 0;

point = object;
for(index = 0 ; index < 6 ; index++)
{
printf("A %s has %d legs and %d arms.\n", point->what,
point->legs, point->arms);
point++;
}
return 0;
}

#include
#include

struct child
{
char initial;
int age;
int grade;
} *boy, *girl;

int main()
{
boy = (struct child *)malloc(sizeof(struct child));

boy->initial = 'R';
boy->age = 15;
boy->grade = 75;

girl = (struct child *)malloc(sizeof(struct child));

girl->age = boy->age - 1;
girl->grade = 82;
girl->initial = 'H';

printf("%c is %d years old and got a grade of %d\n",
girl->initial, girl->age, girl->grade);

printf("%c is %d years old and got a grade of %d\n",
boy->initial, boy->age, boy->grade);

return 0;
}

#include
#include

struct child
{
char initial;
int age;
int grade;
} *kids[12];

int main()
{
int index;

for (index = 0 ; index < 12 ; index++)
{
kids[index] = (struct child *)malloc(sizeof(struct child));
kids[index]->initial = 'A' + index;
kids[index]->age = 16;
kids[index]->grade = 84;
}

kids[3]->age = kids[5]->age = 17;
kids[2]->grade = kids[6]->grade = 92;
kids[4]->grade = 57;

*kids[10] = *kids[4]; /* Structure assignment */

for (index = 0 ; index < 12 ; index++)
printf("%c is %d years old and got a grade of %d\n",
kids[index]->initial, kids[index]->age,
kids[index]->grade);

return 0;
}

Bhs C Dasar - Chapter VI

untuk bermain dengan file kita harus mendeklarasikannya terlebih dahulu;
contoh;

FILE *ptrfile ; //pointer penunjuk kesebuah file
ptrfile = fopen(outfilename, "w"); /// membuka suatu file ,ditampung disebuah ptrfile
fclose (outfilename); // menutup kembali file yang barusan dibuka

perhatikan tanda "w " , itu disebut dengan modus
modus sangat perlu jika kita bermain dengan file :
r ³ Open for reading only
w ³ Create for writing
³ If a file by that name already exists, it will be overwritten.
a ³ Append; open for writing at end of file, or create for
³ writing if the file does not exist.
r+ ³ Open an existing file for update (reading and writing)
w+ ³ Create a new file for update (reading and writing).
³ If a file by that name already exists, it will be overwritten.
a+ ³ Open for append; open for update at the end of the file, or
³ create if the file does not exist.


contoh :
#include
int main()
{
FILE *infile, *outfile, *printer;
char infilename[25], outfilename[25];
int c;
printf("Enter input file name ----> ");
scanf("%s", infilename);
infile = fopen(infilename, "r");

printf("Enter output file name ---> ");
scanf("%s", outfilename);
outfile = fopen(outfilename, "w");
printer = fopen("PRN", "w");
do
{
c = getc(infile);
if (c != EOF)
{
putchar(c);
putc(c, outfile);
putc(c, printer);
}
} while (c != EOF);
fclose(printer);
fclose(infile);
fclose(outfile);
return 0;
}
contoh lain :
#include
int main()
{
FILE *infile;
char *c, infilename[25], inputline[100];
int line = 1;

printf("Enter input file name ----> ");
scanf("%s", infilename);
infile = fopen(infilename, "r");

printf("%5d", line);
do
{
c=fgets(inputline, 100, infile); /* baca perbaris */
if (c != NULL)
{
printf("%5d %s", line, inputline);
line++;
}
} while (c != NULL);

fclose(infile);

return 0;
}

#include
int main()
{
FILE *fp1;
char oneword[100], filename[25];
char *c;

printf("Enter filename -> ");
scanf("%s", filename); /* baca nama file */
fp1 = fopen(filename, "r");
if (fp1 == NULL)
{
printf("File doesn't exist\n");
exit (1);
}
else
{
do
{
c = fgets(oneword, 100, fp1); /* baca perbaris dari file*/
if (c != NULL)
printf("%s", oneword); /* tampilkan dimonitor */
} while (c != NULL); /* ulangi sampai ketemu NULL
*/
}
fclose(fp1);

return 0;
}

Bhs C Dasar - Chapter V

Array adalah kumpulan tipe data yang sejenis, kita dapat mendeklarasikan Array kedalam berbagai Dimensi

tampung[5]; // 1 Dimensi
tampung[5][5]; // 2 Dimensi
tampung[5][5][3]; // 3 Dimensi
...
.......
dan seterusnya
cara pendeklarasian :
int tampung[5];
float tampung[5];
char tampung[20];
int tampung[5][5];

angka 5 menjelaskan bawah kita mempunyai 5 data didalam variabel tampung cara pengisian langsung ;

int tampung[5] ={1,2,3,4,5};
float tampung[5] = { 1.0.2.0.3.0.4.0.5.0};
char tampung[5] = {'a','b','c','d','e'};

contoh pemakaian sebagai berikut :
#include
#include
char my_string[20] = "C hebat!";
int main()
{
int index;
printf("%s\n", my_string);
for (index = 0 ; my_string[index] ; index = index + 1)
printf("%c", my_string[index]);
printf("\n");

for(index = strlen(my_string) ; index > 0 ; index = index - 1)
printf("%c", my_string[index - 1]);
printf("\n");

return 0;
}

contoh lain :
#include
#include

int main()
{
int index;
char stuff[20], *pt;

strcpy(stuff, "This is a neat test.");
pt = stuff;
for(index = 0 ; index < 20 ; index++)
{
printf("A character is ---> %c\n", *pt);
pt++;
}

return 0;
}

#include
#include
int main()
{
int index;
char string1[6], string2[6], string3[6], all_three[18];

strcpy(string1, "one"); //mencopy string "one" kedalam varibel
string1
strcpy(string2, "two"); //idem
strcpy(string3, "three"); // idem

strcpy(all_three, string1);
strcat(all_three, " "); // mengosongkan isi variabel all_tree;

strcat(all_three, string2); // gabungkan isinya
strcat(all_three, " ");
strcat(all_three, string3);

for(index = 0 ; index < 10 ; index = index + 1)
printf("hasil stringnya ---> %s\n", all_three);
return 0;
}


#include
int main()
{
int index, array1[10], array2[10], arrays[10];

for(index = 0 ; index < 10 ; index = index + 1)
{
array1[index] = 2 + 2 * index;
array2[index] = 10 * (index + 1);
}

for(index = 0 ; index < 10 ; index = index + 1)
arrays[index] = array1[index] + array2[index];

for(index = 0 ; index < 10 ; index = index + 1)
printf("%4d %4d + %4d = %4d\n", (index + 1), array1[index],
array2[index], arrays[index]);

return 0;
}

Contoh penggunaan Array 2 Dimensi
#include
int main()
{
int i, j;
int big[8][8], large[25][12];

for (i = 0 ; i < 8 ; i++)
for (j = 0 ; j < 8 ; j++)
big[i][j] = i * j; /* perkalian tables */

for (i = 0 ; i < 25 ; i++)
for (j = 0 ; j < 12 ; j++)
large[i][j] = i + j; /* penambahan tabel*/

big[2][6] = large[24][10] * 22;
big[2][2] = 5;
big[big[2][2]][big[2][2]] = 177; /* big[5][5] = 177; */

for (i = 0 ; i < 8 ; i++)
{
for (j = 0 ; j < 8 ; j++)
printf("%5d ", big[j]);
printf("\n");
}

return 0;
}

Bhs C Dasar - Chapter IV

Bayangkan jika program anda sekarang dalam baris yang sangat panjang, merepotkan sekali bukan nah dengan fungsi kita dapat menyederhakan sebuah program menjadi jelas dan mudah di baca

okeh.. kita mulai lagi.
contoh pemakaian sebagai berikut :
#include
void writename(); // ini sebuah fungsi
void writename() // ini sebuah fungsi bernama writename()
{
printf("Riefkhy\n");
}

int main()
{
int index;

for(index = 0 ; index < 10 ; index = index + 1)
writename(); // panggil fungi yang bernama writename();
return 0;
}

contoh lain ;
#include
int tempcalc(int centtemp);
int main()
{
int count;
int farenheit; /* temperature farenheit */
int centigrade; /* temperature centigrade */

printf("Table Farenheit temperature \n\n");
for(count = -2 ; count <= 12 ; count = count + 1)
{
centigrade = 10 * count;
farenheit = tempcalc(centigrade);
printf(" C =%4d F =%4d ", centigrade, farenheit);
if (centigrade == 0)
printf(" Freezing point of water");
if (centigrade == 100)
printf(" Boiling point of water");
printf("\n");
} /* akhir dari perulangan*/
return 0;
}

int tempcalc(int centtemp)
{
int faren;

faren = 32 + (centtemp * 9)/5;
return (faren);
}

note :
ingat , didalam sebuah program terdapat yang namanya variabel local dan grobal, jika kita ingin melempar sebuah varibel kesuatu fungsi maka kita dapat melakukan hal sebagai berikut

model passing by value
void fungsi (int tampung){
printf("%d",tampung); /// disini nilai 5 akan tercetak dari operan
dibawah
}

void main(){
int a=5;
cetak(a); ///lempar variabel a ke fungsi cetak diatas
}

gimana jika kita ingin melempar sebuah 2 buah varibel
void fungsi (int tampung, float tampung1){
printf("%d",tampung); /// disini nilai 5 akan tercetak dari operan dibawah
printf("%f",tampung1); /// disini nilai 4.5 akan tercetak dari operan dibawah
}

void main(){
int a=5;
float b=4.5
cetak(a,b); ///lempar variabel a ke fungsi cetak diatas
}

model passing by pointer
void testing(int &a){
printf("%d",*a);
}

void main(){
int a=5;
testing(&a);
}

perhatikan tipe data yang anda lemparkan ,,, dia harus di tampung didalam tipe yang sama (jika memungkinkan)

contoh kombinasi :
#include
void header(void);
void square(int number);
void ending(void);

int sum; /* ini global variable */

int main(void)
{
int index; // ini local variabel

header(); /* ini memanggil fungsi header */
for (index = 1 ; index <= 7 ; index++)
square(index); /* ini memanggil fungsi square */
ending(); /* ini memanggil fungsi ending */

return 0;
}

void header(void) /* ini fungsi header */
{
sum = 0; /* inisialisasi dari sum=0 */
printf("ini adalah header dari square program\n\n");
}

void square(int number) /* ini fungsi square */
{
int numsq;

numsq = number * number;
sum += numsq;
printf("nilai square %d adalah %d\n", number, numsq);
}

void ending(void) /* ini fungsi ending */
{
printf("\njumlah dari square adalah %d\n", sum);
}

/* ouputnya
ini adalah header dari square program
nilai square 1 adalah 1
nilai square 2 adalah 4
nilai square 3 adalah 9
nilai square 4 adalah 16
nilai square 5 adalah 25
nilai square 6 adalah 36
nilai square 7 adalah 49
jumlah dari square adalah :140
*/

Bhs C Dasar - Chapter III

Kondisi sangat perlu sebagai pembatas atau pengecekan suatu nilai, ada 2 bentuk penulisan kondisi :
1. if
2. switch -case

1. if(kondisi)

{
}

if(kondisi ){
}else{
if(kondisi){

}else{

}
}

contoh pemakaian sebagai berikut :
a = 4;
if (a < 2 ) // apakah a lebih besar dari 4

if (a < 2 ) { // apakah a lebih besar dari 4
//akan mengeksekusi didalam sini
}

if (a < 2 ) { // apakah a lebih besar dari 4

//akan mengeksekusi didalam sini Jika kondisinya berlaku benar
}else{ //selain itu
//akan mengeksekusi didalam sini jika Kondisinya berlaku salah

}

1. switch-case

contoh pemakaian sebagai berikut :
awal = 4;
swicth(awal){
case '1' : printf("ini angka 1"); break;
case '2' : printf("ini angka 2"); break;
case '3' : printf("ini angka 3"); break;
case '4' : printf("ini angka 4"); break;
default : printf("angka tersebut tidak ada");
}

perhatikan source diatas
pertama kali awal=4
sewaktu masuk kedalam kondisi swith(kondisi)
apakah 4 termasuk didalam switch
jika terdapat maka baris : printf("ini angka 4"); //akan dijalankan
jika tidak terdapat maka akan lompat ke default : printf("angka tersebut tidak ada");

coba sekarang anda rubah awal =1;
apa yang terjadi ? // pikirkan sendiri

Contoh lain:
operand =ADD;
switch (operand) {
case MULTIPLY: x *= y; break;
case DIVIDE: x /= y; break;
case ADD: x += y; break;
case SUBTRACT: x -= y; break;
case INCREMENT2: x++;
case INCREMENT1: x++; break;
case EXPONENT:
case ROOT:
case MOD: printf("Not done\n"); break;
default: printf("Bug!\n");

exit(1);
}

contoh kombinasinya :
#include
int main()
{
int index;

for(index = 1 ; index < 101 ; index = index + 1)
{
if ((index >= 32) && (index <= 39))
printf("%5d\n", index);
}

return 0;
}

atau bentuk begini
#include
int main()
{
int index;

index = 1;
do
{
printf("nilai sekarang %2d",index);
if (index == 3)
printf(" ini sama dengan 3.");
if (index == 7)
printf(" ini sama dengan 7.");
printf("\n");
index = index + 1;
} while (index < 11);

return 0;
}

----- pikirkan kembali bentuk seperti dibawah ini ----------------
#include
#define OPTION_1 /* This defines the preprocessor control */
#define PRINT_DATA /* If this is defined, we will print */
#ifndef OPTION_1
int count_1 = 17; /* This exists if OPTION_1 is not defined */
#endif
int main()
{
int index;
#ifndef PRINT_DATA
printf("No results will be printed with this version of "
" the program IFNDEF.C\n");
#endif
for (index = 0 ; index < 6 ; index++)
{
#ifdef PRINT_DATA
printf("In the loop, index = %d", index);
#ifndef OPTION_1
printf(" count_1 = %d", count_1); /* This may be printed */
#endif
printf("\n");
#endif
}

return 0;
}

// apakah anda bisa membayangkannya ? apa maksud dari #ifndef - #endif
?

contoh pemakaian sebagai berikut :
#include
int main()
{
enum {WIN, TIE, BYE, LOSE, NO_SHOW} result;
enum {SUN, MON, TUE, WED, THU, FRI, SAT} days;

result = WIN;
printf(" WIN = %d\n", result);
result = LOSE;
printf(" LOSE = %d\n", result);
result = TIE;
printf(" TIE = %d\n", result);
result = BYE;
printf(" BYE = %d\n", result);
result = NO_SHOW;
printf("NO_SHOW = %d\n\n", result);

for(days = MON ; days < FRI ; days++)
printf("The day code is %d\n", days);

return 0;
}

Bhs C Dasar - Chapter II

Terkadang sangat melelahkan jika kita mencetak sebuah kata "hello world " sebanyak 1000 kali dengan adanya perulangan semua jadi simple! macam-macam perulangan yang terdapat pada Bahaca c :
1.for
2.while
3.do-while

contoh pemakaian sebagai berikut :
1. for (awal ;kondisi ;akhir)
{
}

Perhatikan soure code dibawah ini
contoh :
#include
int main()
{
int angka;
for(angka = 0 ; angka < 1000 ; angka = angka + 1)
printf("Aku ganteng lo\n");
return 0;
}
/* Outputnya : mencetak Aku ganteng sebanyak seribu kali (perhatikan kondisinya)
Jika bernilai True (benar) maka statement didalam { } akan dijalankan
Jika bernilai False kondisi didalam perulangan tidak akan dijalankan
*/

2.while
contoh pemakaian sebagai berikut :
--------------------------------
awal =0;
while (kondisi) {
awal=awal+1; /// variabel awal akan bertambah sesuai dengan dengan kondisi didalam = while(kondisi)
}

contoh :
#include
int main()
{
int index;
index = 0;
while (index < 10)
{
printf("Fox Mania\n");
index = index + 1;
}
return 0;
}

3.do-while
contoh pemakaian sebagai berikut :
awal =0;
do{
awal=awal+1
}while(kondisi)

contoh :
#include
int main()
{
int index;

index = 0;
do
{
printf("Riefkhy\n");
index = index + 1;
} while (index < 10);

return 0;
}

note :
awal=awal+1; /// dapat ditulis dengan awal+=1; (ini sama saja artinya)

nilai awal selalu ditambah dengan angka satu, contoh :

int main()
{
int x = 0, y = 2, z = 1025;
float a = 0.0, b = 3.14159, c = -37.234;
x = x + 1;
x++;
++x;
z = y++;
z = ++y;

y = y - 1;
y--;
--y;
y = 3;
z = y--;
z = --y;

a = a + 12;
a += 12;
a *= 3.2;
a -= b;
a /= 10.0;

a = (b >= 3.0 ? 2.0 : 10.5 );
if (b >= 3.0)
a = 2.0;
else
a = 10.5;

c = (a > b ? a : b);
c = (a > b ? b : a);

return 0;
}

Gimana dengan konstanta suatu nilai :
kita dapat menggunakan #DEFINE

Contoh :
#define START 0
#define ENDING 9
#define MAX(A,B) ((A)>(B)?(A)B))
#define MIN(A,B) ((A)>(B)?(B)A))
int main()
{
int index, mn, mx;
int count = 5;

for (index = START ; index <= ENDING ; index++)
{
mx = MAX(index, count);
mn = MIN(index, count);
printf("Max is %d and min is %d\n", mx, mn);
}

return 0;
}

Bhs C Dasar - Chapter I

Chapter I :

Bentuk dasar :
void main(){
//disini badan program diproses
}

#include
int main()
{
printf("Belajar Bahasa C\n");
return 0;
}

Hasil keluarannya tampak dimonitor anda:
Belajar Bahasa C

Perhatikan :
#include <--- #include untuk membuka file header/library file stdio.h yang dibutuhkan oleh fungsi printf (kita harus sertakan)

int main() { <--- ini adalah fungsi utama pada saat program dijalankan
<--- pada saat kita mengcompile suatu program selalu fungsi ini yang dijalankan
printf(" test \n"); <--- fungsinya untuk mencetak text kelayar , \n artinya turun baris

return 1; <--- nilai yang dikembalikan oleh fungsi utama bernilai true
}

Note (Tanda)
{ = pembuka
} = penutup

1 : true
0 : false


Apakah anda bisa membayangkan hasil dari source code ini..
int main()
{
printf("Pelajaran Dasar\n");
printf("---------------------\n");
printf("Bahasa C\n");
printf("Pemula");
return 0;
}

Bermain dengan tipe data :
Apakah tipe data itu ?
Tipe data adalah jenis tipe dari suatu variable
contoh : abc ->> merupakan string
a ->> merupakan character
1,2,3,... ->> merupakan bilangan integer
1.001 ->> merupakan bilangan desimal (berkoma)
dll

nah didalam bahasa C terdapat tipe-tipe data yang menampung sesuai dengan data anda. Ada pun tipe data tersebut adalah sebagai berikut :

Type ³ Length ³ Range
unsigned char ³ 8 bits ³ 0 to 255
char ³ 8 bits ³ -128 to 127
enum ³ 16 bits ³ -32,768 to 32,767
unsigned int ³ 16 bits ³ 0 to 65,535
short int ³ 16 bits ³ -32,768 to 32,767
int ³ 16 bits ³ -32,768 to 32,767
unsigned long ³ 32 bits ³ 0 to 4,294,967,295
long ³ 32 bits ³ -2,147,483,648 to 2,147,483,647
float ³ 32 bits ³ 3.4 * (10**-38) to 3.4 * (10**+38)
double ³ 64 bits ³ 1.7 * (10**-308) to 1.7 * (10**+308)
long double ³ 80 bits ³ 3.4 * (10**-4932) to 1.1 * (10**+4932)

nah kira-kira jenis tipe data apa yang kita gunakan , itu tergantung dari kebutuhan saat kita membuat program!

contoh pemakaian sebagai berikut :
Bermain dengan tipe data
#include
int main()
{
int angka; // int = tipe data , angka = merupakan variabel penampung
angka=1;
printf("nilai dari angka : %d\n", angka);
angka=5;
printf("nilai dari angka : %d\n", angka);
angka=-8;
printf("nilai dari angka : %d\n", angka);
return 0;
}

contoh lain :
#include
int main()
{
int a = 2;
float x = 17.1, y = 8.95, z;
char c;

c = (char)a + (char)x;
c = (char)(a + (int)x);
c = (char)(a + x);
c = a + x;

z = (float)((int)x * (int)y);
z = (float)((int)(x * y));
z = x * y;
return 0;
}
note : tanda // artinya komentar yang anda sisipkan jika hanya untuk satu baris jika lebih anda bisa mengunakan

seperti ini :
/*
komentarnya disini
*/

Apa yang terdapat dalam tanda itu tidak akan dieksekusi (dijalankan/running)

Senin, Mei 12, 2008

Aplikasi SMS dengan Visual FoxPro

Dari Fox-Id
{ Vfp Code }
**************************************************
*-- "Sample of using Acrobat Reader in FoxPro"
*-- Created By : Teguh P
*-- Time Stamp: 11/18/06 10:18:00 AM
**************************************************
*!* Aplikasi SMS dengan Visual FoxPro via IrDA
*!* Created by : Handi Rusli
*!* Member Of http://www.fox-id.com
*!* Komunitas Programmer FoxPro Indonesia
LOCAL oForm as Form
oForm = CREATEOBJECT("FormSMS")
oForm.Show(1)
RETURN
DEFINE CLASS FormSMS AS form
DataSession = 2
Height = 440
Width = 527
AutoCenter = .T.
Caption = "Aplikasi SMS dengan Visual FoxPro"
ADD OBJECT sms as mysms WITH Visible = .F.
ADD OBJECT pageframe1 as mypageframe1
ADD OBJECT label1 AS myLabel WITH ;
Caption = "Com Port :", ;
Height = 17, ;
Left = 67, ;
Top = 126, ;
Width = 60
ADD OBJECT label2 AS myLabel WITH ;
FontBold = .T., ;
FontName = "Verdana", ;
FontSize = 10, ;
Caption = "http://www.fox-id.com (Komunitas Programmer FoxPro Indonesia)", ;
Height = 18, ;
Left = 7, ;
Top = 416, ;
Width = 512
ADD OBJECT label3 AS myLabel WITH ;
Caption = "Baud Rate Settings :", ;
Height = 17, ;
Left = 13, ;
Top = 153, ;
Width = 114
ADD OBJECT label4 AS myLabel WITH ;
Caption = "(9600,N,8,1) - Default Value", ;
Height = 17, ;
Left = 225, ;
Top = 154, ;
Width = 153
ADD OBJECT label5 AS myLabel WITH ;
FontBold = .T., ;
FontSize = 12, ;
Caption = "Cobalah SMS ke nomor ini, ", ;
Height = 22, ;
Left = 158, ;
Top = 378, ;
Visible = .F., ;
Width = 211, ;
ForeColor = RGB(255,0,0)
ADD OBJECT label6 AS myLabel WITH ;
FontBold = .T., ;
FontSize = 12, ;
Caption = "OnComm Event akan memberitahu Anda bahwa ada SMS Masuk :-D", ;
Height = 22, ;
Left = 4, ;
Top = 398, ;
Visible = .F., ;
Width = 518, ;
ForeColor = RGB(255,0,0)
ADD OBJECT label7 AS myLabel WITH ;
FontBold = .T., ;
Caption = "* Tested using Nokia 6510 & Nokia 8310 Mobile Phone via IrDA with Windows XP", ;
Height = 17, ;
Left = 3, ;
Top = 99, ;
Width = 454, ;
ForeColor = RGB(0,0,255)
ADD OBJECT edit1 AS editbox WITH ;
FontSize = 7, ;
Height = 94, ;
Left = 3, ;
ReadOnly = .T., ;
Top = 3, ;
Width = 521
ADD OBJECT command1 AS commandbutton WITH ;
Top = 138, ;
Left = 396, ;
Height = 27, ;
Width = 108, ;
Caption = "Connect"
ADD OBJECT text1 AS textbox WITH ;
Height = 23, ;
InputMask = "#", ;
Left = 133, ;
Top = 124, ;
Width = 30
ADD OBJECT text2 AS textbox WITH ;
Height = 23, ;
Left = 133, ;
Top = 150, ;
Width = 87

PROCEDURE Init
SET TALK OFF
SET BELL OFF
SET CENTURY ON
thisform.edit1.Value="Demo ini hanya merepresentasikan bagaimana Teknologi "+;
"SMS dapat digunakan di Visual FoxPro (tidak menunjukan semua kemampuan yang "+;
"dimiliki oleh Teknologi ini). Untuk tingkat lanjut, "+;
"Anda dapat mengunjungi situs http://www.forum.nokia.com "+CHR(013)+CHR(013)+;
"Salam hangat, "+CHR(013)+CHR(013)+;
"Handi Rusli"
thisform.text1.Value = thisform.sms.CommPort
thisform.text2.Value = thisform.sms.settings
ENDPROC
PROCEDURE command1.Click
IF this.Caption="Connect"
=MESSAGEBOX("Bagi Anda yang menggunakan IrDA sebagai koneksinya, "+;
"pastikan Modul IrDA sudah diaktifkan di HP Anda dan "+CHR(013)+;
"Virtual Infrared COM Port sudah diinstall pada komputer Anda."+CHR(013)+CHR(013)+;
"Tekan 'OK' Jika sudah siap",64,"Perhatian")
thisform.sms.PortOpen = .t.
WITH thisform.pageframe1.page3
.text1.value = thisform.sms.ManufacturerInfo()
.text2.value = thisform.sms.ModelInfo()
.text3.value = thisform.sms.IMEIInfo()
.edit1.value = thisform.sms.FirmwareInfo()
ENDWITH
thisform.pageframe1.page1.Activate
this.Caption="Disconnect"
WITH this.Parent
STORE .f. to .text1.Enabled, .text2.enabled
ENDWITH
WITH thisform
STORE .t. to .label5.visible,.label6.visible
ENDWITH
ELSE
thisform.sms.PortOpen = .f.
this.Caption="Connect"
WITH this.Parent
STORE .t. to .text1.Enabled, .text2.enabled
ENDWITH
WITH thisform.pageframe1.page3
STORE "" TO .text1.value,.text2.value,.text3.value,.edit1.value
ENDWITH
WITH thisform
STORE .f. to .label5.visible,.label6.visible
ENDWITH
ENDIF
ENDPROC

PROCEDURE text1.LostFocus
thisform.sms.CommPort=this.Value
ENDPROC

PROCEDURE text2.LostFocus
thisform.sms.Settings=ALLTRIM(this.Value)
ENDPROC

ENDDEFINE
DEFINE CLASS mypageframe1 as PageFrame
TabStyle = 1
Top = 179
Left = 0
Width = 528
Height = 196
ADD OBJECT page1 as mypage1
ADD OBJECT page2 as mypage2
ADD OBJECT page3 as mypage3
ENDDEFINE
DEFINE CLASS mypage1 as Page
FontBold = .T.
Caption = "Read SMS"
ADD OBJECT label1 AS myLabel WITH ;
Caption = "Inbox No :", ;
Height = 17, ;
Left = 60, ;
Top = 20, ;
Width = 56
ADD OBJECT label2 AS myLabel WITH ;
Caption = "Pengirim (Sender) :", ;
Height = 17, ;
Left = 8, ;
Top = 46, ;
Width = 109
ADD OBJECT label3 AS myLabel WITH ;
Caption = "Tgl Kirim :", ;
Height = 17, ;
Left = 60, ;
Top = 69, ;
Width = 57
ADD OBJECT label4 AS myLabel WITH ;
Caption = "Jam Kirim :", ;
Height = 17, ;
Left = 53, ;
Top = 92, ;
Width = 64
ADD OBJECT label5 AS myLabel WITH ;
Caption = "Pesan (Message) :", ;
Height = 17, ;
Left = 262, ;
Top = 18, ;
Width = 106
ADD OBJECT spinner1 AS spinner WITH ;
Height = 24, ;
InputMask = "##", ;
KeyboardHighValue = 15, ;
KeyboardLowValue = 1, ;
Left = 119, ;
SpinnerHighValue = 15.00, ;
SpinnerLowValue = 1.00, ;
Top = 19, ;
Width = 43, ;
Value = 1
ADD OBJECT text1 AS textbox WITH ;
Height = 23, ;
Left = 119, ;
ReadOnly = .T., ;
Top = 43, ;
Width = 134

ADD OBJECT text2 AS textbox WITH ;
Height = 23, ;
Left = 119, ;
ReadOnly = .T., ;
Top = 66, ;
Width = 134
ADD OBJECT text3 AS textbox WITH ;
Height = 23, ;
Left = 119, ;
ReadOnly = .T., ;
Top = 89, ;
Width = 134
ADD OBJECT edit1 AS editbox WITH ;
Height = 109, ;
Left = 262, ;
ReadOnly = .T., ;
Top = 38, ;
Width = 254
ADD OBJECT command1 AS commandbutton WITH ;
Top = 116, ;
Left = 138, ;
Height = 27, ;
Width = 84, ;
Caption = "Delete"
PROCEDURE Activate
this.spinner1.InteractiveChange
ENDPROC
PROCEDURE spinner1.InteractiveChange
IF thisform.sms.readsms(this.Value)
WITH this.Parent
.text1.Value = thisform.sms.pengirim
.text2.Value = thisform.sms.tglkirim
.text3.value = thisform.sms.jamkirim
.edit1.value = thisform.sms.pesan
ENDWITH
this.Parent.command1.Enabled= .t.
ELSE
WITH this.Parent
STORE "Kosong" TO .text1.value,.text2.value,.text3.value,.edit1.value
ENDWITH
this.Parent.command1.Enabled= .F.
ENDIF
ENDPROC
PROCEDURE command1.Click
thisform.sms.deletesms(this.Parent.spinner1.Value)
this.Parent.spinner1.InteractiveChange
ENDPROC
ENDDEFINE
DEFINE CLASS mypage2 as Page
FontBold = .T.
Caption = "Send SMS"
ADD OBJECT label1 AS myLabel WITH ;
Caption = "Nomor HP yang dituju :", ;
Height = 17, ;
Left = 35, ;
Top = 23, ;
Width = 128
ADD OBJECT label2 AS myLabel WITH ;
FontBold = .T., ;
Caption = "* (Maksimal 160 karakter)", ;
Height = 17, ;
Left = 167, ;
Top = 105, ;
Width = 149
ADD OBJECT label3 AS myLabel WITH ;
Caption = "Pesan :", ;
Height = 17, ;
Left = 119, ;
Top = 50, ;
Width = 44
ADD OBJECT text1 AS textbox WITH ;
Height = 23, ;
Left = 167, ;
Top = 21, ;
Width = 132
ADD OBJECT edit1 AS editbox WITH ;
Height = 55, ;
Left = 167, ;
MaxLength = 160, ;
Top = 48, ;
Width = 321
ADD OBJECT command1 AS commandbutton WITH ;
Top = 127, ;
Left = 220, ;
Height = 27, ;
Width = 84, ;
Caption = "Kirim"
PROCEDURE command1.Click
IF thisform.sms.sendsms(ALLTRIM(this.Parent.teXT1.Value),ALLTRIM(this.Parent.ediT1.Value))
=MESSAGEBOX("Pesan sudah dikirim",64,"Aplikasi SMS dgn VFP")
ELSE
=MESSAGEBOX("Pesan TIDAK terkirim",16,"ERROR")
ENDIF
ENDPROC
ENDDEFINE
DEFINE CLASS mypage3 as Page
FontBold = .T.
Caption = "Mobile Phone Info"
ADD OBJECT label1 AS myLabel WITH ;
Caption = "Manufacturer Info :", ;
Height = 17, ;
Left = 66, ;
Top = 24, ;
Width = 102
ADD OBJECT label2 AS myLabel WITH ;
Caption = "Model Info :", ;
Height = 17, ;
Left = 104, ;
Top = 48, ;
Width = 64
ADD OBJECT label3 AS myLabel WITH ;
Caption = "Firmware Info :", ;
Height = 17, ;
Left = 85, ;
Top = 94, ;
Width = 83
ADD OBJECT label4 AS myLabel WITH ;
Caption = "Serial Number :", ;
Height = 17, ;
Left = 80, ;
Top = 71, ;
Width = 88
ADD OBJECT text1 AS textbox WITH ;
Height = 23, ;
Left = 171, ;
ReadOnly = .T., ;
Top = 22, ;
Width = 286
ADD OBJECT text2 AS textbox WITH ;
Height = 23, ;
Left = 171, ;
ReadOnly = .T., ;
Top = 45, ;
Width = 286
ADD OBJECT edit1 AS editbox WITH ;
Height = 53, ;
Left = 171, ;
ReadOnly = .T., ;
Top = 91, ;
Width = 286
ADD OBJECT text3 AS textbox WITH ;
Height = 23, ;
Left = 171, ;
ReadOnly = .T., ;
Top = 68, ;
Width = 286
ENDDEFINE
DEFINE CLASS myLabel as Label
AutoSize = .T.
BackStyle = 0
ENDDEFINE
DEFINE CLASS mySMS as Container
nTimeOut = 10
CommPort = 4
PortOpen = .f.
Settings = "9600,N,8,1"
myBuffer = ""
Pengirim = ""
UdahDiBaca = .t.
TglKirim = ""
JamKirim = ""
Pesan = ""
ADD OBJECT oSMS as myOLE
PROCEDURE PortOpen_Assign
LPARAMETERS newValue
this.PortOpen = m.newValue
IF this.PortOpen
this.oSMS.Settings = this.Settings
this.oSMS.InputLen = 0
this.oSMS.CommPort = this.CommPort
this.oSMS.Handshaking = 3 && Setting Buffer
ENDIF
this.oSMS.PortOpen = this.PortOpen
IF this.PortOpen
*!* Memerintahkan HP/Modem untuk berjalan di Mode Teks
this.SendReceiveData("AT+CMGF=1")
*!* Memerintahkan HP/Modem untuk mem-"ByPass" SMS yg masuk langsung ke PC (tidak disimpan ke SIM Card)
this.SendReceiveData("AT+CNMI=2,2")
ENDIF
ENDPROC
PROCEDURE SendReceiveData
LPARAMETERS cString,lRemoveATCommand
IF PCOUNT()=1
lRemoveATCommand = .t.
ENDIF
LOCAL nWaktu as Long, lSendSMS as Boolean
WITH this.oSMS
STORE 0 TO .Rthreshold,.Sthreshold
.InBufferCount = 0
IF ("AT+CMGS=" $ cString)
lSendSMS = .t.
ELSE
lSendSMS = .f.
ENDIF
.Output = cString + CHR(13)
cString = ""
nWaktu = SECONDS() + this.nTimeOut
DO WHILE (nWaktu>SECONDS()) .and. ;
IIF(lSendSMS,!(">" $ cString),(!("OK" $ cString) .and. !("ERROR" $ cString)))
IF (.InBufferCount>0)
cString = cString + .Input
ENDIF
ENDDO
STORE 1 TO .Rthreshold,.Sthreshold
ENDWITH
IF lRemoveATCommand
cString = SUBSTR(cString,AT(CHR(13),cString),RAT(CHR(13),cString,2)-AT(CHR(13),cString))
ENDIF
RETURN (cstring)
ENDPROC
PROCEDURE IMEIInfo
RETURN STRTRAN(STRTRAN(this.SendReceiveData("AT+CGSN"),CHR(13),""),CHR(10),"")
ENDPROC
PROCEDURE ModelInfo
RETURN STRTRAN(STRTRAN(this.SendReceiveData("AT+CGMM"),CHR(13),""),CHR(10),"")
ENDPROC
PROCEDURE ManufacturerInfo
RETURN STRTRAN(STRTRAN(this.SendReceiveData("AT+CGMI"),CHR(13),""),CHR(10),"")
ENDPROC
PROCEDURE FirmwareInfo
LOCAL cTemp as String
cTemp = this.SendReceiveData("AT+CGMR")
DO WHILE LEFT(cTemp,1)=CHR(13)
cTemp = SUBSTR(cTemp,2)
ENDDO
DO WHILE LEFT(cTemp,1)=CHR(10)
cTemp = SUBSTR(cTemp,2)
ENDDO
RETURN (cTemp)
ENDPROC
PROCEDURE NetworkFieldStrength
RETURN (this.SendReceiveData("AT+CSQ"))
ENDPROC
PROCEDURE SendSMS
LPARAMETERS tSMSNum, tMessage
LOCAL cString
cString = this.SendReceiveData("AT+CMGS=" + ["] + tSMSNum + ["],.f.)
cString = this.SendReceiveData(tMessage + CHR(26),.f.)
RETURN !("ERROR" $ cString)
ENDPROC
PROCEDURE DeleteSMS
LPARAMETERS lSMSNum
RETURN !("ERROR" $ this.SendReceiveData("AT+CMGD=" + TRANSFORM(lSMSNum) + CHR(13)))
ENDPROC
PROCEDURE ReadSMS
LPARAMETERS tSMSNum
LOCAL tChar, i, tRead, lQuoteNum, tDateTime, tData, balik
TRY
tData = "AT+CMGR=" + TRANSFORM(tSMSNum) + CHR(13)
WITH this.oSMS
STORE 0 TO .Rthreshold,.Sthreshold
.InBufferCount = 0
.Output = tData
ENDWITH
tData = ""
i = SECONDS() + this.nTimeOut
DO WHILE (i > SECONDS()) .and. !("OK" $ tData) .and. !("ERROR" $ tData)
IF (this.oSMS.InBufferCount > 0)
tChar = this.oSMS.Input
tData = tData + tChar
ENDIF
ENDDO
STORE 1 TO this.oSMS.Rthreshold, this.oSMS.Sthreshold
IF !EMPTY(tData) .and. !("ERROR" $ tData)
lQuoteNum = 0
STORE "" TO tRead, tSender, tDateTime, tMessage
FOR i = 1 To LEN(tData)
tChar = SUBSTR(tData, i, 1)
IF tChar = ["]
lQuoteNum = lQuoteNum + 1
ENDIF
IF (lQuoteNum = 1) .and. !(tChar=["])
tRead = tRead + tChar
ENDIF
IF (lQuoteNum = 3) .and. !(tChar=["])
tSender = tSender + tChar
ENDIF
IF (lQuoteNum = 5) .and. !(tChar=["])
tDateTime = tDateTime + tChar
ENDIF
IF (lQuoteNum = 6) .and. !(tChar=["])
tMessage = tMessage + tChar
ENDIF
ENDFOR
this.UdahDiBaca = (tRead = "REC READ")
this.Pengirim = tSender
this.TglKirim = LEFT(tDateTime, 8)
this.JamKirim = SUBSTR(tDateTime,10,8)
tMessage = RIGHT(tMessage,LEN(tMessage)-2)
this.Pesan = SUBSTR(tMessage, 1, AT(CHR(13),tMessage) - 1)
balik = .t.
ENDIF
CATCH
balik = .f.
ENDTRY
RETURN (balik)
ENDPROC
ENDDEFINE
DEFINE CLASS myOLE as OLEControl
OLEClass = "MSCommLib.MSComm.1"
PROCEDURE OnComm
IF (this.CommEvent = 2) .and. (this.InBufferCount>0)
this.parent.myBuffer = this.Input
IF !EMPTY(this.parent.myBuffer) .and. !("ERROR" $ this.parent.myBuffer)
lQuoteNum = 0
STORE "" TO tSender, tDateTime, tMessage
FOR i = 1 To LEN(this.parent.myBuffer)
tChar = SUBSTR(this.parent.myBuffer, i, 1)
IF tChar = ["]
lQuoteNum = lQuoteNum + 1
ENDIF
IF (lQuoteNum = 1) .and. !(tChar=["])
tSender = tSender + tChar
ENDIF
IF (lQuoteNum = 3) .and. !(tChar=["])
tDateTime = tDateTime + tChar
ENDIF
IF (lQuoteNum = 4) .and. !(tChar=["])
tMessage = tMessage + tChar
ENDIF
ENDFOR
WITH this.parent
.UdahDiBaca = .f.
.Pengirim = tSender
.TglKirim = LEFT(tDateTime, 8)
.JamKirim = SUBSTR(tDateTime,10,8)
.Pesan = ALLTRIM(tMessage)
=MESSAGEBOX("Pengirim : "+.Pengirim+CHR(013)+;
"Tgl Kirim : "+.tglkirim+CHR(013)+;
"Jam Kirim : "+.jamkirim+CHR(013)+;
"Pesan : "+.pesan,64,"Ada SMS Masuk",5000)
ENDWITH
ENDIF
ENDIF
ENDPROC
ENDDEFINE

{ End Code }

PDF dalam Form

Dari Fox-Id
{ Vfp Code }
LOCAL form1
form1 = CREATEOBJECT("fvp_acrobatreader")
form1.SHOW(1)

DEFINE CLASS fvp_acrobatreader AS FORM
TOP = 0
LEFT = 0
HEIGHT = 550
WIDTH = 700
DOCREATE = .T.
BORDERSTYLE = 2
CAPTION = "Sample of using Acrobat Reader in FoxPro"
MAXBUTTON = .F.
MINBUTTON = .F.
NAME = "FVP_AcrobatReader"
AUTOCENTER = .T.
ADD OBJECT olecontrol1 AS OLECONTROL WITH ;
TOP = 12, ;
LEFT = 12, ;
HEIGHT = 467, ;
WIDTH = 673, ;
TABINDEX = 10, ;
NAME = "Olecontrol1", ;
OLECLASS = "PDF.PdfCtrl.5"
&& Ganti nilai ini bila memakai Acrobat Versi lain (bukan 5.0)
ADD OBJECT cmdload AS COMMANDBUTTON WITH ;
TOP = 492, ;
LEFT = 24, ;
HEIGHT = 27, ;
WIDTH = 96, ;
CAPTION = "Load PDF File", ;
TABINDEX = 1, ;
NAME = "cmdLoad"
ADD OBJECT cmdTools AS COMMANDBUTTON WITH ;
TOP = 520, ;
LEFT = 24, ;
HEIGHT = 27, ;
WIDTH = 115, ;
CAPTION = "Hide/Show Toolbar", ;
TABINDEX = 2, ;
NAME = "cmdTools"
ADD OBJECT cmdtop AS COMMANDBUTTON WITH ;
TOP = 492, ;
LEFT = 348, ;
HEIGHT = 27, ;
WIDTH = 84, ;
CAPTION = "Top", ;
TABINDEX = 5, ;
NAME = "cmdTop"
ADD OBJECT cmdprev AS COMMANDBUTTON WITH ;
TOP = 492, ;
LEFT = 432, ;
HEIGHT = 27, ;
WIDTH = 84, ;
CAPTION = "Prev", ;
TABINDEX = 6, ;
NAME = "cmdPrev"
ADD OBJECT cmdnext AS COMMANDBUTTON WITH ;
TOP = 492, ;
LEFT = 516, ;
HEIGHT = 27, ;
WIDTH = 84, ;
CAPTION = "Next", ;
TABINDEX = 7, ;
NAME = "cmdNext"
ADD OBJECT cmdend AS COMMANDBUTTON WITH ;
TOP = 492, ;
LEFT = 600, ;
HEIGHT = 27, ;
WIDTH = 84, ;
CAPTION = "End", ;
TABINDEX = 8, ;
NAME = "cmdEnd"
ADD OBJECT cmdzoomdown AS COMMANDBUTTON WITH ;
TOP = 492, ;
LEFT = 263, ;
HEIGHT = 27, ;
WIDTH = 84, ;
CAPTION = "Zoom (-)", ;
TABINDEX = 4, ;
NAME = "cmdZoomDown"
ADD OBJECT cmdzoomup AS COMMANDBUTTON WITH ;
TOP = 492, ;
LEFT = 180, ;
HEIGHT = 27, ;
WIDTH = 84, ;
CAPTION = "Zoom (+)", ;
TABINDEX = 3, ;
NAME = "cmdZoomUp"
PROCEDURE INIT
THISFORM.ADDPROPERTY("ZoomVal",100)
&& u/ nyimpen Nilai Zoom
THISFORM.ADDPROPERTY("ToolVal",.T.) && u/ nyimpen Status Toolbars
ENDPROC
PROCEDURE cmdload.CLICK
THISFORM.olecontrol1.OBJECT.LoadFile(GETFILE("PDF"))
ENDPROC
PROCEDURE cmdTools.CLICK
THISFORM.ToolVal = .NOT. THISFORM.ToolVal
THISFORM.olecontrol1.OBJECT.setShowToolbar(THISFORM.ToolVal)
THISFORM.REFRESH()
ENDPROC
PROCEDURE cmdtop.CLICK
&&>> -U/ Mengatur tampilan gambar dgn koding : OBJECT.gotoFirstPage,gotoPreviousPage, Dsb
&&>> -Method/property lainnya yg bisa dipake bisa diliat dgn memanfaatkan Intellisense
THISFORM.olecontrol1.OBJECT.gotoFirstPage()
THISFORM.REFRESH()
ENDPROC
PROCEDURE cmdprev.CLICK
THISFORM.olecontrol1.OBJECT.gotoPreviousPage()
THISFORM.REFRESH()
ENDPROC
PROCEDURE cmdnext.CLICK
THISFORM.olecontrol1.OBJECT.gotoNextPage()
THISFORM.REFRESH()
ENDPROC

PROCEDURE cmdend.CLICK
THISFORM.olecontrol1.OBJECT.gotoLastPage()
THISFORM.REFRESH()
ENDPROC
PROCEDURE cmdzoomdown.CLICK
LOCAL lnNewVal
lnNewVal = THISFORM.ZoomVal - 10
THISFORM.olecontrol1.OBJECT.setZoom(lnNewVal)
THISFORM.ZoomVal= lnNewVal
THISFORM.REFRESH()
ENDPROC
PROCEDURE cmdzoomup.CLICK
LOCAL lnNewVal
lnNewVal = THISFORM.ZoomVal + 10
THISFORM.olecontrol1.OBJECT.setZoom(lnNewVal)
THISFORM.ZoomVal= lnNewVal
THISFORM.REFRESH()
ENDPROC
ENDDEFINE

{ End Code }

DBF to Excel

From Fox-Id

{ Vfp Code }
xlMedium=-4138
xlCenter=-4108
xlLeft=-4131
xlRight=-4152
xldiagonaldown= 5
xlbottom=-4107
xldiagonalup=6
xledgeleft=7
xlcontinuous=1
xlthin=2
xlautomatic=-4105
xledgetop=8
xledgebottom=9
xledgeright=10
xlinsidevertical=11
xlinsidehorizontal=12
xlautomatic=-4105
xlsolid=1
xlnone=-4142
xlLandscape=2
** Variable Jenis Kertas
xlPaperLegal=5
xLPaperA3=8
xlPaperA4=9
xlPaperLetter=1
** Jenis Cetakan
xlPortrait=1
xlLandscape=2

xlautomatic=-4105
xlDownThenOver=1
tmpsheet = Getobject('','excel.sheet')
&& Create Object excel
xlapp = tmpsheet.Application
&& Get Applikasi
xlapp.Visible = .F. && Tampilkan Excel di monitor
_workbook=xlapp.WorkBooks.Add()
xlsheet = xlapp.activesheet && Ambil Sheet yang active

With _workbook
.styles.Add("RETUR")
With .styles["RETUR"]
.Font.bold=.T.
.Interior.COlor=RGB(220,0,0)
Endwith
.styles.Add("VOID")
With .styles["VOID"]
.Font.bold=.T.
.Interior.COlor=RGB(0,220,0)
Endwith
ENDWITH

** Dibawah ini untuk ngeset opage
With xlsheet
With .PageSetup
.PrintTitleRows = "$1:$3" && Title Row ( Baris kebarapa yang akan di cetak di setiap halamn di contong ini baris 1 sampai dengan baris 7
.PrintTitleColumns = ""
&& Title Colums
.PrintArea = ""
&& Hapus Print Area
.LeftHeader = ""
&& Header Kiri
.CenterHeader = ""
&& Header tengah
.RightHeader =""
&& Header Kanan
.CenterFooter = "Page &P of &N"
&& Footer ( dicontoh ini Footer diisi dengan halaman )
.LeftFooter = "Printed Date : &D,&T"
&& Footer Tanggal di Kiri
.LeftMargin = tmpsheet.Application.InchesToPoints(0)
&& Margin kiri dalam Inch
.RightMargin = tmpsheet.Application.InchesToPoints(0)
&& Margin Kanan dalam Inch
.TopMargin = tmpsheet.Application.InchesToPoints(.5) && Margin Atas dalam Inch
.BottomMargin = tmpsheet.Application.InchesToPoints(.5)
&& Margin Bawah dalam Inch
.HeaderMargin = tmpsheet.Application.InchesToPoints(0.25)
&& Margin Header dalam Inch
.FooterMargin = tmpsheet.Application.InchesToPoints(0.25) && Margin Footer dalam Inch
**.Orientation = xlPortrait && Mau Landscape atau portrait ( 1 = Portrait, 2 = LandScape )
**.Papersize = xLPaperA3 && Jenis Kertas

.FirstPageNumber = xlautomatic
.Order = xlDownThenOver
.Zoom=65 && Bikin menjadi 65 %
Endwith
Endwith
xlsheet.Range("A1:P1").Merge && Merge Kolom 1 baris 1 sampai dengan Kolom 3 baris 1
xlsheet.Range("A1:P1").Value = "SALES REPORT "
xlsheet.Range("A1:P1").Font.bold=.T. && Buat Bold
xlsheet.Range("A1:P1").Font.Size=14 && Size 14
xlsheet.Range("A1:P1").horizontalalignment=xlCenter
&& Bikin ketengah

xlsheet.cells(3,2).Value="No Inv" && Isi cells B3
xlsheet.cells(3,3).Value="Hotel" && Isi Cells C3
xlsheet.cells(3,6).Value="Room" && Isi cells B3
xlsheet.cells(3,4).Value="Check In" && Isi ceclose lls B3
xlsheet.cells(3,5).Value="Check Out" && Isi Cells C3
xlsheet.cells(3,7).Value="Name Pax" && Isi Cells C3
xlsheet.cells(3,8).Value="Name agent" && Isi Cells C3
xlsheet.cells(3,9).Value="SGD" && Isi Cells C3
xlsheet.cells(3,10).Value="USD" && Isi Cells C3
xlsheet.cells(3,11).Value="Rp" && Isi Cells C3

xlsheet.cells(3,12).Value="COST" && Isi Cells C3
xlsheet.cells(3,13).Value="GP-SGD " && Isi Cells C3
xlsheet.cells(3,14).Value="GP-USD " && Isi Cells C3
xlsheet.cells(3,15).Value="GP-Rp " && Isi Cells C3

xlsheet.cells(3,16).Value="HotelBill" && Isi Cells C3
xlsheet.cells(3,17).Value="R/N" && Isi Cells C3
xlsheet.cells(3,18).Value="QTY ROOM" && Isi Cells C3
xlsheet.cells(3,19).Value="Kode Booking" && Isi Cells C3
xlsheet.cells(3,20).Value="Staff Agent" && Isi Cells C3
xlsheet.cells(3,21).Value="Collect Date" && Isi Cells C3
xlsheet.cells(3,22).Value="Remarks"
oRange = xlsheet.Range("A4:P4")
NCOL=16
oldroom=''
oldhotel=''
nRow=4
nUrut=0
Select (Thisform.baseadapter1.cursorlink.c_alias)
Go Top
Do While !Eof(Thisform.baseadapter1.cursorlink.c_alias)
nUrut=nUrut+1
With oRange
If icode='R'
oRange.Style="RETUR"
IF jenis="M"
.columns(1).value="MARKUP"
ENDIF
IF jenis="R"
.columns(1).value="RFND"
ENDIF
IF jenis="H"
.columns(1).value="HOTELSTMENT"
ENDIF
ENDIF
IF void
orange.style="VOID"
.columns(1).value="VOID"
ENDIF
.Columns(2).Value=no_invoice
If icode='R'
IF jenis="H"
.columns(6).value=oldroom
ELSE
.Columns(6).Value=ALLTRIM(roomdesc)
ENDIF
ELSE
.Columns(6).Value=ALLTRIM(roomdesc)
ENDIF
If icode='R'
IF jenis="H"
.Columns(3).Value=''
ELSE
.Columns(3).Value=nama_hotel
ENDIF
ELSE
.Columns(3).Value=nama_hotel
ENDIF
If ! Empty(check_in)
.Columns(4).Value=check_in
Endif
If ! Empty(check_out)
.Columns(5).Value=check_out
Endif
.Columns(7).Value=name_pax
.Columns(.Value=nama_agent
IF curr_type="SGD"
.Columns(9).Value=tagihan
ENDIF
IF curr_type="USD"
.Columns(10).Value=tagihan
ENDIF
IF UPPER(curr_type)="RP"
.Columns(11).Value=tagihan
ENDIF
.Columns(12).Value=Hdasar
** .Columns(12).Value=tagihan-Hdasar
IF curr_type="SGD"
.Columns(13).Value=tagihan-Hdasar
ENDIF
IF curr_type="USD"
.Columns(14).Value=tagihan-Hdasar
ENDIF
IF UPPER(curr_type)="RP"
.Columns(15).Value=tagihan-Hdasar
ENDIF
.Columns(16).Value=alice
.Columns(17).Value=r_n
.Columns(18).Value=qty
.Columns(19).Value=no_booking
.Columns(20).Value=aff_agent
If ! Empty(collect_date)
.Columns(21).Value=collect_date
Endif
.columns(22).value=Remark
Endwith

oldroom=roomdesc
oldhotel=nama_hotel
Skip
oRange = oRange.Offset(1,0)
nRow=nRow+1
Enddo

xlsheet.Range(xlsheet.cells(1,1),xlsheet.cells(nRow,NCOL-1)).EntireColumn.AutoFit && Bikin Autofit
kd8="=SUM( I4:I"+ALLTRIM(STR(nrow-1))+" )"
kd9="=SUM( J4:J"+ALLTRIM(STR(nrow-1))+" )"
kd10="=SUM( K4:K"+ALLTRIM(STR(nrow-1))+" )"
kd11="=SUM( L4:L"+ALLTRIM(STR(nrow-1))+" )"
kd12="=SUM( M4:M"+ALLTRIM(STR(nrow-1))+" )"
kd13="=SUM( N4:N"+ALLTRIM(STR(nrow-1))+" )"
xlsheet.cells[nrow,9].formula=kd8
xlsheet.cells[nrow,10].formula=kd9
xlsheet.cells[nrow,11].formula=kd10
xlsheet.cells[nrow,12].formula=kd11
xlsheet.cells[nrow,13].formula=kd12
xlsheet.cells[nrow,14].formula=kd13
WITH xlsheet.Range("B3:P"+ALLTRIM(STR(nrow-1)) )
.Borders[7].LineStyle = xlContinuous
.Borders[7].colorIndex= 23
.Borders[8].LineStyle = xlContinuous
.Borders[8].colorindex=23
.Borders[9].LineStyle = xlContinuous
.Borders[9].colorIndex=23
.Borders[10].LineStyle = xlContinuous
.Borders[10].colorIndex=23
.Borders[11].LineStyle = xlContinuous
.Borders[11].colorIndex=23

.Borders[12].LineStyle = xlContinuous
.Borders[12].colorIndex=23
ENDWITH
**xlsheet.PrintOut && Kalau mau langsung cetak
ok=.f.
Do While ! ok
Try
xlapp.activeworkbook.SaveAs("c:\SalesReport.xls")
&& Simpan Hasil excelnya
ok=.t.
Catch
If Messagebox('Kemungkinan anda membuka file SalesReport.xls,Tutup Dulu ,Ingin Melanjutkan ?',4)=7
ok=.t.
Endif

Endtry
Enddo

tmpsheet.Close && Close Applikasi Excel
Messagebox('Export Success di c:\Sales Report.xls')
xlapp.Visible=.T.
tmpsheet=Null
**xlapp=null
**xlsheet=null

{ End Code }

Top 10 Best & Worst Selling

{ Vfp Code }
* Function Top 10 Best
Select Top 10 tbarang.nm_barang,;
SUM( ttransdt.qty*ttransdt.nominal);
FROM tbarang INNER Join ttransdt ;
ON tbarang.kd_barang = ttransdt.kd_barang;
GROUP By tbarang.nm_barang;
ORDER By 2 Desc Into Cursor curtopbest


* Function Top 10 Worst
Select Top 10 tbarang.nm_barang,;
SUM( ttransdt.qty*ttransdt.nominal);
FROM tbarang INNER Join ttransdt ;
ON tbarang.kd_barang = ttransdt.kd_barang;
GROUP By tbarang.nm_barang;
ORDER By 2 Into Cursor curtopworst
{ End Code }

Repair MemoFile

{ vfp code }
close data all
m.lcDBF = "D:\On Duty\Latest\Database\tmove.dbf"
RepairMemo(Forceext(m.lcDBF,'FPT'))
Function RepairMemo
* RepairMemo
* Simply fixes next block pointer, blocksize and filesize
Lparameters tcMemoFilename
Local handle, lnFileSize, lnNextBlockPointer, lnBlockSize, lnFirstBlock, lnCalculatedFileSize
handle=Fopen(tcMemoFilename,12) && Opened readwrite
lnFileSize = Fseek(handle,0,2) && Get file size
* With This
* Read header info
lnNextBlockPointer = ReadBytes(handle, 0,4,.T.) && Stored in left-to-right format
lnBlockSize = ReadBytes(handle, 6,2,.T.) && Stored in left-to-right format
* Specific to me - no blocksize setting to something other than default 0x40
If lnBlockSize # 0x40
WriteBytes(handle, 6,2,0x40,.T.)
lnBlockSize=0x40
Endif
*
lnFirstBlock = Ceiling(512/lnBlockSize) && Possible min lnNextblockpointer
lnCalculatedFileSize = lnNextBlockPointer*lnBlockSize
* Fix if needs repair
If !(lnFileSize >= 512 ;
and lnNextBlockPointer >= lnFirstBlock ;
and lnCalculatedFileSize >= lnFileSize) && Memo needs repair
lnNextBlockPointer = Max(lnNextBlockPointer, lnFirstBlock)
lnFileSize = lnNextBlockPointer * lnBlockSize
WriteBytes(handle, 0,4,lnNextBlockPointer,.T.) && Fix next block pointer
=Fchsize(handle, lnFileSize) && Fix filesize
Endif
* Endwith
=Fclose(handle)
Function WriteBytes
Lparameters tnHandle, tnPos, tnSize, tnNumber, tlLR
Local lcString, lnLowDword, lnHighDword,ix
lcString=''
If tlLR
For ix=tnSize-1 To 0 Step -1
lcString=lcString+Chr(tnNumber/256^ix%256)
Endfor
Else
For ix=0 To tnSize-1
lcString=lcString+Chr(tnNumber/256^ix%256)
Endfor
Endif
=Fseek(tnHandle, tnPos,0) && Go to pos
Return Fwrite(tnHandle,lcString)
Function ReadBytes
Lparameters tnHandle, tnPos, tnSize, tlLR
Local lcString, lnRetValue,ix
=Fseek(tnHandle, tnPos,0) && Go to pos
lcString = Fread(tnHandle, tnSize) && Read tnSize bytes
lnRetValue = 0
For ix=0 To tnSize-1 && Convert to a number
lnRetValue = lnRetValue + Asc(Substr(lcString,ix+1)) * ;
iif(tlLR,256^(tnSize-1-ix),256^ix)
Endfor
Return Int(lnRetValue)

{ End code }