Ana Sayfa

DELPHİ NOTLARI

( DAHA SONRA DÜZENLENECEKTİR.)

O anki sürücünün kapasitesini ve sürücüdeki boş yer miktarını bulmak; 

DiskFree(0) //o anki sürücüdeki boş yer miktarını byte cinsinden döndürür. 
DiskSize(0) //o anki sürücünün kapasitesini byte cinsinden döndürür. 
DiskSize(0) div 1024 //o anki sürücünün kapasitesini KB cinsinden döndürür. 

--------------------------------------------------------------------------

Bir menü öğesinin enabled özelliğini false yapmak; 

mainmenu1.items[0].items[1].enabled:=False; 

---------------------------------------------------------------------------

Bir programın çalıştırılması; 

WinExec('c:\windows\calc.exe',sw_show); 
WinExec('C:\WINDOWS\NOTEPAD.EXE C:\WINDOWS\WIN.INI', SW_SHOWNORMAL); 
WinExec('COMMAND.COM', SW_SHOWNORMAL); 
WinExec('COMMAND.COM /C DIR *.*', SW_SHOWNORMAL); 

--------------------------------------------------------------------------

Listbox veya Combobox'ta seçili bir veya birden fazla öğeyi seçilmemiş 
duruma getirmek için; 

Listbox1.itemindex:=-1; 

--------------------------------------------------------------------------

Listbox, Combobox ve Memo'ya bir seferde ekleme yapmak; 

Listbox1.items.SetText('aaa'#13'bbb'#13'ccc'); 
Memo1.Lines.SetText('aaa'#13'bbb'#13'ccc'); 

-------------------------------------------------------------------------

Harddiskin seri numarasının bulunması; 

procedure TForm1.Button1Click(Sender: TObject);
var
VolumeSerialNumber : DWORD;
MaximumComponentLength : DWORD;
FileSystemFlags : DWORD;
SerialNumber : string;
begin
GetVolumeInformation('C:\',
nil,
0,
@VolumeSerialNumber,
MaximumComponentLength,
FileSystemFlags,
nil,
0);
SerialNumber := IntToHex(HiWord(VolumeSerialNumber), 4) +
'-' +
IntToHex(LoWord(VolumeSerialNumber), 4);
Memo1.Lines.Add(SerialNumber);
end;

--------------------------------------------------------------------------

Bir string'in başındaki ve sonundaki boşlukları atmak için; 

Trim(string) 
TrimLeft (string) //stringin sadece başındaki boşlukları atmak için
TrimRight (string) //stringin sadece sonundaki boşlukları atmak için

--------------------------------------------------------------------------

Şifreli bir table için programın şifre istememesi için; 

Table'ın Active özelliğini False yapın ve Form'un OnCreate olayına aşağıdaki 
kodu ekleyin 

Session.AddPassword('şifre');
Table1.Active:=True;

--------------------------------------------------------------------------

Pencereyi minimize etmek; 

Application.Minimize; //taskbar'a minimize 
CloseWindow(handle) 
WindowState := wsMinimized; 

--------------------------------------------------------------------------

Windows'u kapatmak veya yeniden başlatmak(reboot); 

var
i:dword;
begin
ExitWindowsEx(EWX_SHUTDOWN); //yeniden başlatmak için EWX_REBOOT
end;

---------------------------------------------------------------------------

Help menüsünden About kısmına girin. Alt tuşuna basılı tutarak TEAM veya 
DEVELOPERS yazın. Delphi'yi geliştirenlerin isimlerini görebilirsiniz. 
Database Desktop'tada Help menüsünden About kısmına girin ve delphi yazın. 

---------------------------------------------------------------------------

ico'dan bmp'ye çevirme; 

var
Icon : TIcon;
Bitmap : TBitmap;
begin
Icon := TIcon.Create;
Bitmap := TBitmap.Create;
Icon.LoadFromFile('c:\picture.ico');
Bitmap.Width := Icon.Width;
Bitmap.Height := Icon.Height;
Bitmap.Canvas.Draw(0, 0, Icon );
Bitmap.SaveToFile('c:\picture.bmp');
Icon.Free;
Bitmap.Free;
end;

---------------------------------------------------------------------------

CD-Rom sürücüyü açmak ve kapamak; 

uses kısmına MMSystem unitini ekleyin. 

mciSendString('Set cdaudio door open wait', nil, 0, handle); //aç
mciSendString('Set cdaudio door closed wait', nil, 0, handle); //kapa

---------------------------------------------------------------------------

CapsLock ve Numlock tuşlarını açıp-kapama; 

procedure TMyForm.Button1Click(Sender: TObject);
Var
KeyState : TKeyboardState;
begin
GetKeyboardState(KeyState);
if (KeyState[VK_CAPITAL] = 0) then
KeyState[VK_CAPITAL] := 1
else
KeyState[VK_CAPITAL] := 0;
SetKeyboardState(KeyState);
end;
Numlock tuşu için VK_CAPITAL yerine VK_NUMLOCK yazınız. 

--------------------------------------------------------------------------

Menü'ye bitmap (resim) ekleme; 

procedure TForm1.FormCreate(Sender: TObject);
var
Bmp1 : TPicture;
begin
Bmp1 := TPicture.Create;
Bmp1.LoadFromFile('c:\deneme\turkey.bmp');
SetMenuItemBitmaps( deneme1.Handle,
0,
MF_BYPOSITION,
Bmp1.Bitmap.Handle,
Bmp1.Bitmap.Handle);
end;

--------------------------------------------------------------------------

Alt + Tab ve Ctrl + Esc tuşlarının kullanılmaz hale getirilmesi; 

var
OldVal : LongInt;
begin
SystemParametersInfo (97, Word (True), @OldVal, 0)
//Word(False) ile kullanırsanız tuşları tekrar kullanabilirsiniz.

--------------------------------------------------------------------------

Windows ve System klasörlerinin bulunması 

procedure TForm1.Button1Click(Sender: TObject);
var
a : Array[0..144] of char;
begin
GetWindowsDirectory(a, sizeof(a));
ShowMessage(StrPas(a));
GetSystemDirectory(a, sizeof(a));
ShowMessage(StrPas(a));
end;

--------------------------------------------------------------------------

Speakerdan Beep sesi çıkartma 

MessageBeep(word(-1));

---------------------------------------------------------------------------

Belgeler menüsüne bir dosya ekleme 

uses kısmına ShlOBJ unitini ekleyin; 

procedure TForm1.Button1Click(Sender: TObject);
var
s : string;
begin
s := 'C:\DownLoad\deneme.html';
SHAddToRecentDocs(SHARD_PATH, pChar(s));
end;

--------------------------------------------------------------------------

Belgeler menüsünü temizleme 

uses kısmına ShlOBJ unitini ekleyin; 

SHAddToRecentDocs(SHARD_PATH, nil);

--------------------------------------------------------------------------

Bir web adresini açma 

uses kısmına Shellapi unitini ekleyin; 

ShellExecute(Handle,
'open',
'http://www.geocities.com/siliconvalley/campus/4958/',
nil,
nil,
sw_ShowMaximized);

--------------------------------------------------------------------------

Bir DOS programını çalıştırma ve çalışması bitince penceresini kapatma 

WinExec("command.com /c progdos.exe",sw_ShowNormal); //progdos.exe çalıştı
rılıyor. 
//eğer ikinci paremetreyi sw_Hide yaparsanız kullanıcı programın çalıştığını 
görmez. 

---------------------------------------------------------------------------

Uygulamanızın Görev Çubuğundaki butonunu gizleme 

Uygulamanızın Görev Çubuğundaki butonunu gizlemek için programınızın ana 
formunun OnCreate olayına aşağıdaki kodu yazın; 

SetWindowLong(Application.Handle,GWL_EXSTYLE, WS_EX_TOOLWINDOW);

--------------------------------------------------------------------------

Ekran koruyucusunu kapatmak ve açmak 

//kapatmak için
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE,
0,
nil,
0);
//açmak için
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE,
1,
nil,
0);

--------------------------------------------------------------------------

Alt+F4 tuş kombinasyonuyla programın kapanmaması için 

Formun OnCreate olayına; 

KeyPreview := true;
Formun OnKeyDown olayına; 

if ((ssAlt in Shift) and (Key = VK_F4)) then
Key := 0;

--------------------------------------------------------------------------

Hareketli İmleç(animated cursor)leri kullanma 

procedure TForm1.Button1Click(Sender:TObject);
var
h : THandle;
begin
h := LoadImage(0,
'C:\TheWall\Magic.ani',
IMAGE_CURSOR,
0,
0,
LR_DEFAULTSIZE or
LR_LOADFROMFILE);
if h = 0 then ShowMessage('Cursor not loaded') else begin
Screen.Cursors[1] := h;
Form1.Cursor := 1;
end;
end;

--------------------------------------------------------------------------

Windows lisans bilgilerinin (isim ve şirket) bulunması 

uses kısmına Registry unitini ekleyin; 

procedure TForm1.Button1Click(Sender:TObject);
var
reg: TRegIniFile;
begin
reg := TRegIniFile.create('SOFTWARE\MICROSOFT\MS SETUP (ACME)\');
Memo1.Lines.Add(reg.ReadString('USER INFO',
'DefName',
'Mustafa ŞİMŞEK'));
Memo1.Lines.Add(reg.ReadString('USER INFO',
'DefCompany',
'Bilgisayar Bilimleri Müh.'));
reg.free;
end;

--------------------------------------------------------------------------

Çok Satırlı İpucu 

procedure TForm1.FormCreate(Sender: TObject);
begin
SpeedButton1.Hint:='Çok satırlı ipucunu '+chr(13)+
'mutlaka denemelisiniz '+chr(13)+
'çok güzel';
end;

--------------------------------------------------------------------------

Edit'e girilen metnin ilk harfini büyük harf yapma 

Form'a bir Edit componenti yerleştirin ve OnKeyPress olayına aşağıdaki kodu 
ekleyin. 

with Sender as TEdit do
if (SelStart = 0) or 
(Text[SelStart] = ' ') then
if Key in ['a'..'z'] then 
Key := UpCase(Key);

--------------------------------------------------------------------------

Bir klasörü ve onun altındaki tüm dosyaları ve klasörleri silme 

Ancak salt okunur (read only) özelliği olan ve kullanımda olan dosyalar 
silinmez. 

procedure TForm1.Button1Click(Sender: TObject);
var
DirInfo: TSearchRec;
r : Integer;
begin
r := FindFirst('C:\Download\Test\*.*', FaAnyfile, DirInfo);
while r = 0 do begin
if ((DirInfo.Attr and FaDirectory <> FaDirectory) and
(DirInfo.Attr and FaVolumeId <> FaVolumeID)) then
if DeleteFile(pChar('C:\Download\test\' + DirInfo.Name))
= false then
ShowMessage('C:\Download\test\'+DirInfo.Name+' silinemiyor!!!');
r := FindNext(DirInfo);
end;
SysUtils.FindClose(DirInfo);
if RemoveDirectory('C:\Download\Test') = false then
ShowMessage('C:\Download\test klasörü silinemiyor!!!');
end;

---------------------------------------------------------------------------

Başlat butonunu gizlemek veya kullanılmaz hale getirmek 

procedure TForm1.Button1Click(Sender: TObject);
var
Rgn : hRgn;
begin
// Başlat butonunu gizle
Rgn := CreateRectRgn(0, 0, 0, 0);
SetWindowRgn(FindWindowEx(FindWindow('Shell_TrayWnd', nil),
0,
'Button',
nil),
Rgn,
true);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
//Gizlenen Başlat butonunu eski haline döndürmek için
SetWindowRgn(FindWindowEx(FindWindow('Shell_TrayWnd', nil),
0,
'Button',
nil),
0,
true);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
//Başlat butonunu kullanılmaz yap
EnableWindow(FindWindowEx(FindWindow('Shell_TrayWnd', nil),
0,
'Button',
nil),
false);
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
//Kullanılmaz yapılan Başlat butonunu eski haline getirmek için
EnableWindow(FindWindowEx(FindWindow('Shell_TrayWnd', nil),
0,
'Button',
nil),
true);
end;

--------------------------------------------------------------------------

Windows Gezginini istediğiniz bir klasörle açma 

uses kısmına Shellapi unitini ekleyin. 

ShellExecute(0,
'explore',
'C:\WINDOWS', //açmak istediğiniz dizin
nil,
nil,
SW_SHOWNORMAL);

--------------------------------------------------------------------------

Duvar kağıdını değiştirmek 

var
s: string;
begin
s := 'c:\windows\athena.bmp';
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, PChar(s),0);

--------------------------------------------------------------------------

Form'un arka kısmına bir resmi döşemek 

Bitmap: TBitmap;

procedure TForm1.FormCreate(Sender: TObject);
begin
Bitmap := TBitmap.Create;
Bitmap.LoadFromFile('C:\WINDOWS\cars.BMP');
end;

procedure TForm1.FormPaint(Sender: TObject);
var
X, Y, W, H: LongInt;
begin
with Bitmap do begin
W := Width;
H := Height;
end;
Y := 0;
while Y < Height do begin
X := 0;
while X < Width do begin
Canvas.Draw(X, Y, Bitmap);
Inc(X, W);
end;
Inc(Y, H);
end;
end;

--------------------------------------------------------------------------

Bir Denetim Masası uygulamasını çalıştırmak 

Control Panel uygulamaları Windows\System klasörü altında bulunur. *.CPL 
uzantılı dosyalardır. Bu uygulamaları Control.Exe programı ile çalıştırabilir
siniz. Bazı Control Panel uygulamaları Windows\System klasöründe bulunmaz. 
Bunların ismini vererek çalıştırabilirsiniz. 

WinExec('C:\WINDOWS\CONTROL.EXE TIMEDATE.CPL', sw_ShowNormal);
WinExec('C:\WINDOWS\CONTROL.EXE MOUSE', sw_ShowNormal);
WinExec('C:\WINDOWS\CONTROL.EXE PRINTERS', sw_ShowNormal);

---------------------------------------------------------------------------

Sayıları virgüllerle yazmak 
Sayı windows'unuz ayarına göre 12.345.678 veya 12,345,678 şeklinde gösterilir. 
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
i := 12345678;
Memo1.Lines.Add(FormatFloat('#,', i));

--------------------------------------------------------------------------

Sistem Tarihini ve Saatini Değiştirmek 

Sistemin tarihini ve saatini değiştirmek için SetLocalTime fonksiyonunu 
kullanabilirsiniz.

var
t:TSystemTime;
begin
t.wYear:=1998;
t.wMonth:=5;
t.wDay:=23;
t.wHour:=12;
t.wMinute:=34;
SetLocalTime(t);
end;

---------------------------------------------------------------------------

Fareyi meşgul şekilde göstermek 

try 
Screen.Cursor := crHourGlass;
{buraya kodunuzu yazın...} 
finally 
Screen.Cursor := crDefault;
end; 
Application.ProcessMessages;

--------------------------------------------------------------------------
To pack (remove phisically all deleted records) from a Paradox table you must use this code

procedure ParadoxPack(Table : TTable); 
var 
TBDesc : CRTblDesc; 
hDb: hDbiDb; 
TablePath: array[0..dbiMaxPathLen] of char; 
begin 
FillChar(TBDesc,Sizeof(TBDesc),0); 
with TBDesc do begin 
StrPCopy(szTblName,Table.TableName); 
StrPCopy(szTblType,szParadox); 
bPack := True; 
end; 
Table.Open; 
hDb := nil; 
Check(DbiGetDirectory(Table.DBHandle, True, TablePath)); 
Table.Close; 
Check(DbiOpenDatabase(nil, 'STANDARD', dbiReadWrite, 
dbiOpenExcl,nil,0, nil, nil, hDb)); 
Check(DbiSetDirectory(hDb, TablePath)); 
Check(DBIDoRestructure(hDb,1,@TBDesc,nil,nil,nil,False)); 
Table.Open; 
end; 

--------------------------------------------------------------------------

To pack Dbase tables use this command

DBIPackTable(Table1.DBHandle,Table1.Handle,nil,nil,True); 
--------------------------------------------------------------------------
Tuş kodları

vk_LButton = $01;
vk_RButton = $02;
vk_Cancel = $03;
vk_MButton = $04; { NOT contiguous with L & RBUTTON }
vk_Back = $08;
vk_Tab = $09;
vk_Clear = $0C;
vk_Return = $0D;
vk_Shift = $10;
vk_Control = $11;
vk_Menu = $12;
vk_Pause = $13;
vk_Capital = $14;
vk_Escape = $1B;
vk_Space = $20;
vk_Prior = $21;
vk_Next = $22;
vk_End = $23;
vk_Home = $24;

vk_Left = $25;
vk_Up = $26;
vk_Right = $27;
vk_Down = $28;
vk_Select = $29;
vk_Print = $2A;
vk_Execute = $2B;
vk_SnapShot = $2C;
{ vk_Copy = $2C not used by keyboards }
vk_Insert = $2D;
vk_Delete = $2E;
vk_Help = $2F;
{ vk_A thru vk_Z are the same as their ASCII equivalents: 'A' thru 'Z' }
{ vk_0 thru vk_9 are the same as their ASCII equivalents: '0' thru '9' }
vk_NumPad0 = $60;
vk_NumPad1 = $61;
vk_NumPad2 = $62;
vk_NumPad3 = $63;
vk_NumPad4 = $64;

vk_NumPad5 = $65;
vk_NumPad6 = $66;
vk_NumPad7 = $67;
vk_NumPad8 = $68;
vk_NumPad9 = $69;
vk_Multiply = $6A;
vk_Add = $6B;
vk_Separator = $6C;
vk_Subtract = $6D;
vk_Decimal = $6E;
vk_Divide = $6F;
vk_F1 = $70;
vk_F2 = $71;
vk_F3 = $72;
vk_F4 = $73;
vk_F5 = $74;
vk_F6 = $75;
vk_F7 = $76;
vk_F8 = $77;
vk_F9 = $78;
vk_F10 = $79;
vk_F11 = $7A;

vk_F12 = $7B;
vk_F13 = $7C;
vk_F14 = $7D;
vk_F15 = $7E;
vk_F16 = $7F;
vk_F17 = $80;
vk_F18 = $81;
vk_F19 = $82;
vk_F20 = $83;
vk_F21 = $84;
vk_F22 = $85;
vk_F23 = $86;
vk_F24 = $87;
vk_NumLock = $90;
vk_Scroll = $91;