Ferry Setiawan

Saturday, June 28, 2008

Delphi Code - Close Others Application

procedure TForm1.Button1Click(Sender: TObject);
var
MyHandle: THandle;
begin
MyHandle:=FindWindow(nil, 'Delphi Help');
SendMessage(MyHandle, WM_CLOSE, 0, 0);

end;

Delphi Code - Create DBGrid that shows images

procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
var
Bmp: TBitmap;

begin
if Field is TGraphicField then
begin
try
Bmp:=TBitmap.Create;
Bmp.Assign(Field);
DBGrid1.Canvas.StretchDraw(Rect, Bmp);
finally

Bmp.Free;
end
end
else
DBGrid1.DefaultDrawDataCell(Rect, Field, State);
end;

Delphi Code - Load Dynamic Dll

function LoadAndRunDLLProcedure(sDLL,sFunc : string):boolean;
type
TFunc_Start = procedure;
var
Func_Start : TFunc_Start;
hDll : THandle;
FuncPtr : TFarProc;
sMsg : string;
begin
Result := False;
hDll := LoadLibrary(PChar(sDLL));
if(hDll > 32)then
begin
FuncPtr := GetProcAddress(hDll,PChar(sFunc));
@Func_Start := FuncPtr;
if(nil <> @Func_Start)then
begin
Func_Start;
Result := True;
end
else
begin
sMsg := 'DLL entry point ' + sFunc + ' not found';
MessageBox(0, PChar( sMsg ), 'Error',MB_OK );
end;
FreeLibrary( hDll );
end
else
begin
sMsg := 'File ' + sDLL + ' not found';
MessageBox(0, PChar( sMsg ), 'Error',MB_OK );
end;
end;

example :
LoadAndRunDLLProcedure('MyStuff.DLL','HelloWorld');

Delphi Code - Calling Control Panel Applets

function RunControlPanelApplet(sAppletFileName : string): integer;
begin
Result := WinExec(PChar('rundll32.exe shell32.dll,'+
'Control_RunDLL '+sAppletFileName),SW_SHOWNORMAL);
end;

access.cpl: Accessibility Properties
appwiz.cpl: Add/Remove Programs Properties
desk.cpl: Display Properties
intl.cpl: Regional Settings Properties
joy.cpl: Joystick Properties
main.cpl: Mouse Properties
mmsys.cpl: Multimedia Properties
modem.cpl: Modems Properties
sysdm.cpl: System Properties
timedate.cpl: Time/Date Properties

Delphi Code - Fungsi Terbilang

unit Konversi;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

function Convert(vString : String):String;
function ReadNumber(vString : String):string;
function GetNumber(vNum : Integer):String;

var
FValue : String;
FResult : String;
FCurrency : String;

implementation

function GetNumber(vNum : Integer):String;
begin
case vNum of
1 : Result := 'satu ';
2 : Result := 'dua ';
3 : Result := 'tiga ';
4 : Result := 'empat ';
5 : Result := 'lima ';
6 : Result := 'enam ';
7 : Result := 'tujuh ';
8 : Result := 'delapan ';
9 : Result := 'sembilan ';
0 : Result := '';
end;
end;

function ReadNumber(vString : String):string;
var level,len,j,i,vawal,awal,akhir,dgt : Integer;
str,bil,digit,lvl,temp2 : String;
begin
len := length(vString);
str := vString;
//cari level
level := len div 3;
if len mod 3 <> 0 then
level := level + 1;
//baca per 3 digit
for i := 1 to level do
begin
vawal := 0;
akhir := len - ((i-1)*3);
awal := akhir - 3 + 1;
if awal <= 0 then
awal := 1;
vString := copy(str,awal,akhir-awal+1);
if length(vString) < 3 then
akhir := length(vString)
else
akhir := 3;
awal := 1;
while akhir >= awal do
begin
dgt := akhir - awal + 1;
bil := GetNumber(StrToInt(vString[awal]));
case dgt of
1 : digit := '';
2 : digit := 'puluh ';
3 : digit := 'ratus ';
end;
//pengujian angka 10 dan 11
if dgt in [1,2] then
begin
if (StrToInt(vString[awal]+vString[awal+1]) >= 10) and
(StrToInt(vString[awal]+vString[awal+1]) < 20) then
begin
if (akhir - awal + 1 > 1) then
begin
if (StrToInt(vString[awal]) = 1) and
(StrToInt(vString[awal+1]) in [0,1]) then
bil := 'se'
else if (StrToInt(vString[awal]) = 1) and
(StrToInt(vString[awal+1]) > 1) then
bil := GetNumber(StrToInt(vString[awal+1]));
end;

if StrToInt(vString[akhir]) <> 0 then
begin
bil := bil + 'belas ';
digit := '';
vawal := awal + 1;
end
else
begin
vawal := awal + 1;
end;
end;
end;
if (((i = 2) and (awal=1) and (akhir = 1)) or
((akhir > 1) and (StrToInt(vString[1]) = 1) and
(dgt = 3))) and (StrToInt(vString[awal]) = 1) then
bil := 'se';

if (StrToInt(vString[awal]) = 0) then
digit := '';

Temp2 := Temp2 + bil + digit;
awal := awal + 1 + vawal;
vawal := 0;
end;
case i of
1 : lvl := '';
2 : lvl := 'ribu ';
3 : lvl := 'juta ';
4 : lvl := 'milliar ';
5 : lvl := 'trilliun ';
6 : lvl := 'billiun ';
end;

if StrToInt(vString) <> 0 then
begin
if (StrToInt(vString) = 1) and (i = 2) then
Temp2 := 'seribu '
else
Temp2 := Temp2 + lvl;
end;
Result := Temp2 + Result;
Temp2 := '';
end;
if (length(vString) = 1) and (vString = '0') then
Result := 'nol ';
end;

function Convert(vString : String):String;
var i,koma : Integer;
temp : string;
begin
koma := pos('.',vString);
if koma <> 0 then
begin
for i := 1 to 2 do
begin
if i = 1 then
begin
temp := copy(vString,1,koma-1);
Result := ReadNumber(temp);
Result := FResult + 'koma ';
end
else
begin
temp := copy(vString,koma+1,length(vString));
FResult := FResult + ReadNumber(temp);
end;
end;
end
else
Result := ReadNumber(vString);
Result := Result + 'rupiah';
end;

end.

Delphi Code - Set Header Caption With IniFile

Uses
... IniFiles;


procedure SetHeader(Grid: TDBGrid; Table: String);
var vIniFile : TIniFile;
i : integer;
Str : String;
DSource : TDataSource;
begin
vIniFile := TIniFile.Create('C:\Coba.Ini');
Str := vIniFile.ReadString(UPPERCASE(Table)+
'-JUMLAH','JMLKOLOM','0');
DSource := Grid.DataSource;
for i := 0 to StrToInt(Str)-1 do
begin
Grid.Columns.Add;
Grid.Columns[i].FieldName :=
DSource.DataSet.Fields[i].FieldName;
Grid.Columns[i].Title.Caption :=
vIniFile.ReadString(UPPERCASE(Table)+
'-HEADER',Grid.Columns[i].FieldName,'');
end;
end;
Penggunaan
SetHeader(DBGrid1,'Biodata');

Contoh Isi IniFile

[BIODATA-JUMLAH]
JMLKOLOM=2

[BIODATA-HEADER]
NO_=No
___NIK____=NIK



Keterangan :
BIODATA adalah nama table
BIODATA-JUMLAH adalah jumlah kolom yang ingin ditampilkan
BIODATA-HEADER adalah nama kolom dan caption yang akan ditampilkan

Delphi Code - Bmp To Jpg and Jpg To Bmp

uses Jpeg;

procedure Bmp2Jpeg(const BmpFileName, JpgFileName: string);
var
Bmp: TBitmap;
Jpg: TJPEGImage;
begin
Bmp := TBitmap.Create;
Jpg := TJPEGImage.Create;
try
Bmp.LoadFromFile(BmpFileName);
Jpg.Assign(Bmp);
Jpg.SaveToFile(JpgFileName);
finally
Jpg.Free;
Bmp.Free;
end;
end;

procedure Jpeg2Bmp(const BmpFileName, JpgFileName: string);
var
Bmp: TBitmap;
Jpg: TJPEGImage;
begin
Bmp := TBitmap.Create;
Jpg := TJPEGImage.Create;
try
Jpg.LoadFromFile(JpgFileName);
Bmp.Assign(Jpg);
Bmp.SaveToFile(BmpFileName);
finally
Jpg.Free;
Bmp.Free;
end;
end;

Delphi Code - Clear "Documents" menu

uses
Shlobj;
...
procedure TForm1.Button1Click(Sender: TObject);
begin
SHAddToRecentDocs(SHARD_PATH, nil);
end;