Google
 

Tuesday, August 26, 2008

ganti atribut file

The following code reads a file's attributes into a set variable, sets the check boxes in a file-attribute dialog box to represent the current attributes, then executes the dialog box. If the user changes and accepts any dialog box settings, the code sets the file attributes to match the changed settings:

procedure TFMForm.Properties1Click(Sender: TObject);
var
Attributes, NewAttributes: Word;
begin
with FileAttrForm do
begin
FileDirName.Caption := FileList.Items[FileList.ItemIndex];
{ set box caption }
PathName.Caption := FileList.Directory;
{ show directory name }
ChangeDate.Caption :=
DateTimeToStr(FileDateToDateTime(FileAge(FileList.FileName)));
Attributes := FileGetAttr(FileDirName.Caption);
{ read file attributes }
ReadOnly.Checked := (Attributes and SysUtils.faReadOnly) = faReadOnly;
Archive.Checked := (Attributes and faArchive) = faArchive;
System.Checked := (Attributes and faSysFile) = faSysFile;
Hidden.Checked := (Attributes and faHidden) = faHidden;
if ShowModal <> id_Cancel then { execute dialog box }
begin
NewAttributes := Attributes;
{ start with original attributes }
if ReadOnly.Checked then
NewAttributes := NewAttributes or SysUtils.faReadOnly
else
NewAttributes := NewAttributes and not SysUtils.faReadOnly;
if Archive.Checked then
NewAttributes := NewAttributes or faArchive
else
NewAttributes := NewAttributes and not faArchive;
if System.Checked then
NewAttributes := NewAttributes or faSysFile
else
NewAttributes := NewAttributes and not faSysFile;
if Hidden.Checked then
NewAttributes := NewAttributes or faHidden
else
NewAttributes := NewAttributes and not faHidden;
if NewAttributes <> Attributes then { if anything changed... }
FileSetAttr(FileDirName.Caption, NewAttributes);
{ ...write the new values }
end;
end;
end;

Delphi - membuka control panel

Membuka Control Panel

Gunakan kode di bawah ini untuk membuka Control Panel dari program Delphi Anda. Jangan lupa tampahkan ShellApi pada bagian uses :

procedure TForm1.Buton1Click(Sender : TObject);
begin
ShellExecute(Handle,\'Open\',\'control\',
nil,nil,SW_SHOWNORMAL);
end;

Monday, August 25, 2008

How to minimize to System Tray



unit Unit1;

interface

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

const
WM_NOTIFYICON = WM_USER+333;

type
TForm1 = class(TForm)

procedure FormCreate(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
tnid: TNotifyIconData;
HMainIcon: HICON;

procedure CMClickIcon(var msg: TMessage); message WM_NOTIFYICON;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}


procedure TForm1.CMClickIcon(var msg: TMessage);
begin
case msg.lparam of
WM_LBUTTONDBLCLK : Show;
end;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
HMainIcon := LoadIcon(MainInstance, \'MAINICON\');

Shell_NotifyIcon(NIM_DELETE, @tnid);

tnid.cbSize := sizeof(TNotifyIconData);
tnid.Wnd := handle;
tnid.uID := 123;
tnid.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
tnid.uCallbackMessage := WM_NOTIFYICON;
tnid.hIcon := HMainIcon;
tnid.szTip := \'POP3 Server\';

Shell_NotifyIcon(NIM_ADD, @tnid);
end;


procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caNone;
Hide;
end;



end.

Sunday, August 24, 2008

shutdown komputer

Men-shutdown komputer

Untuk melakukan restart, shutdown atau log off komputer, gunakan fungsi ExitWindowsEx. Ada pun deklarasi dari fungsi ExitWindowsEx adalah sebagai berikut :

function ExitWindowsEx (uFlags : word ; dwReserved : DWORD): BOOL;

Parameter pertama menerangkan \"apa yang harus dilakukan\" oleh komputer. Parameter ini dapat bernilai :
Konstanta

Keterangan
EWX_RESTART Melakukan restart dengan menampilkan peringatan.
EWX_SHUTDOWN Melakukan shutdown dengan menampilkan peringatan.
EWX_LOGOFF Melakukan log off dengan menampilkan peringatan.
EWX_FORCE Melakukan shutdown tanpa menampilkan peringatan. Sehingga ada kemungkinan Anda akan kehilangan data yang belum disimpan (belum di-save).

Sedangkan parameter kedua bernilai 0.

Sehingga bila ingin melakukan shutdown cukup tulis kode berikut ini :

ExitWindowsEx (EWX_SHUTDOWN, 0);

Saturday, August 23, 2008

Blog Delphi **** hendr13.blogspot.com ] ... [

Beberapa hari tidak memberikan tips dan trik rasanya koq aneh dalam hidup ini. btw, nggak papa lah...hidup ini kan tidak bisa stabil, kadang merasa diatas dan kadang merasa dibawah. Baiklah, kali ini akan diberikan tips kepada temen-temen yang ingin belajar database pemrograman terutama yang ada hubungannya dengan ADO Connection.

Kemudian untuk database engine yang dijadikan sebagai acuan disini adalah database engine MS SQL Server.

Disini anda akan diajarkan gimana aplikasi secara otomatis akan melakukan proses koneksi ulang k server tanpa kita harus melakukan secara manual. Dengan demikian, program kita tidak akan terkesan murahan ketika koneksi gagal dilakukan langsung muncul error.

langsung saja kita kembali ke pokok permasalahan yaitu gimana kita akan membuat connection string secara dinamis dengan menggunakan bantuan database registry. Untuk mengakses database regsitry dengan mudah dan cepat, disini dibantu dengan menggunakan object TRzRegIniFile yang diambil dari component pallete Raize Widgets.

Sekarang silahkan anda lakukan langkah-langkah seperti dibawah ini:

1. Apabila anda belum membuat program Delphi, silahkan anda buka terlebih dahulu.
2. Kemudian buat program aplikasi baru dan berikan nama project \"Project1\"
3. Simpan program aplikasi tersebut didalam folder yang aman.
4. Setelah itu, silahkan anda tambahkan beberapa object seperti dibawah ini kedalam form:
- ADOConnection1
- RzRegIniFile1
5. Lanjutkan dengan mengatur settingan object-object tersebut. Silahkan anda atur dengan settingan seperti ditunjukkan dibawah ini.

Untuk ADOConnection1 :
- LoginPrompt = False
- untuk properties yang lain sifatnya adalah default

Untuk RzRegIniFile1
- Path = \'Software\'
- PathType = ptRegistry
- untuk properties yang lain sifatnya adalah default

6. Jangan lupa untuk menambahkan library \"ComObj\" kedalam \"uses\". Untuk lebih jelas mengenai hal ini silahkan baca artikel ini
7. Sekarang silahkan pilih object \"Form1\"
8. Klik 2x object tersebut hingga dibuat procedure \"FormCreate\"
9. Kemudian silahkan anda isikan kode program didalam event tersebut seperti terlihat pada potongan kode program dibawah ini.

....
....
var
TeksKoneksi : String;
Password : String;
User : String;
Server : String;
Database : String;
TempStatus : String;
label
KoneksiUlang;
begin

// proses inisialisasi data variabel dari database registry
with RzRegIniFile1 do
begin
Password := ReadString(\'Config\',\'Password\',\'ekoindri\');
User := ReadString(\'Config\',\'User\',\'sa\');
Server := ReadString(\'Config\',\'Server\',\'(local)\');
Database := ReadString(\'Config\',\'Database\',\'Aurecosoft - Business Small Accounting\');
end;

// Memberikan inisialisasi data pada variabel TeksKoneksi
TeksKoneksi := \'Provider=SQLOLEDB.1;\' +
\'Password=%s;\' +
\'Persist Security Info=True;\' +
\'User ID=%s;\' +
\'Initial Catalog=%s;\' +
\'Data Source=%s\';

// Proses pembuatan ConnectionString
KoneksiUlang:

// proses koneksi ke database server

try
TempStatus := \'Sukses\';
Connected := True;
except
on EOleException do
begin
TempStatus := \'Gagal\';
end;
end;

// Apabila proses keneksi gagal, maka sistem akan melakukan koneksi ulang ke server hingga berhasil
// jika anda ingin membatasi hingga 5 kali koneksi gagal atau n koneksi gagal akan menutup aplikasi,
// maka, anda bisa gunakan parameter tambahan yang gunanya untuk meng-counter. Apabila parameter
// tersebut jumlahnya sesuai dengan jumlah batas koneksinya, maka applikasi langsung di terminate.
// Silahkan hal tersebut anda coba sendiri dan jadikan latihan untuk mengembangkan kemampuan anda

if TempStatus = \'Gagal\' then
goto KoneksiUlang;
end;
end;
....
....

10. Kemudian anda dapat meng-compile dan menjalankan program aplikasi tersebut dengan cara menekan tombol F9.
11. Tunggu beberapa saat hingga aplikasi benar2 siap jalan
12. Apabila Form1 muncul, itu artinya proses keneksi database telah berhasil dilakukan.
13. Sekali lagi, jangan lupa untuk menentukan data-data koneksinya didalam database registry.
14. Akan lebih baik, jika anda membuat aplikasi khusus yang tujuannya untuk memasukkan data konfigurasi database kedalam database registry, sehingga anda tidak perlu melakukan konfigurasi secara manual dengan membuka database registry.
15. Dari contoh diatas apabila sistem tidak menjumpai data konfigurasi database didalam databse registry, maka dia akan menggunakan data defaultnya. Untuk lebih jelasnya silahkan anda lihat potongan kode program dibawah ini.

....
....
with RzRegIniFile1 do
begin
Password := ReadString(\'Config\',\'Password\',\'ekoindri\');
User := ReadString(\'Config\',\'User\',\'sa\');
Server := ReadString(\'Config\',\'Server\',\'(local)\');
Database := ReadString(\'Config\',\'Database\',\'Aurecosoft - Business Small Accounting\');
end;
....
....

16. Semoga tips ini bisa berguna.

Silahkan anda berikan info ini kepada teman-teman anda yang lain agar mereka tidak kehilangan informasi yang mungkin sangat mereka butuhkan.

Friday, August 22, 2008

Delphi: Reading and writing a file to and from a string

Reading a file to a string

Perhaps the easiest way to read a file into a string is using the LoadFromFile method of a TStringList object and then accessing its Text property:

uses SysUtils, Classes;

function LoadFile(const FileName: TFileName): string;
begin
with TStringList.Create do
try
LoadFromFile(FileName);
Result := Text;
finally
Free;
end;
end;

Tips N Trik Delphi 7.0

Memberi Warna Pada Text Dalam Message Dialog ::::




Secara default warna teks pada kotak dialog akan mengikuti warna sesuai setting pada display properties. Dengan Sedikit tips di bawah ini anda dapat menampilkan kotak dialog dengan warna yang dapat anda tentukan sendiri.

Procedure TForm1.Button1Click(Sender:TObject);

var
MsgForm : TForm;
i : integer;

Begin
//Membuat Message Dialog
MsgForm := CreatedMessageDialog(\'Tulisan ini berwarna
Merah !!\',mtinformation,[mbOK]);

with MsgForm do
begin
for i := 0 to ComponentCount -1 do
if Components[i] is TLabel then
(components[i] as TLabel).Font.color :=clred;
ShowModal ;
end;
MsgForm.free;
end;