Delphi Öğrenme – Kısa Kodlar ve Bazı İpuçları

Delphi öğrenme ve kodlama yapmak isteyenler için kısa ama faydalı kodlardan oluşan bir yazı hazırladık, Bu delphi ipuçları ile kendi uygulamalarınıza daha fonksiyonellik katabilirsiniz.
Delphi’de programlamayı öğrenmenin yanı sıra, uygulamayı kullanarak gelişmekte olan uygulamaları kolaylaştıracaktır.
Delphi’nin mükemmel bileşen yapısı, dünyadaki en hızlı derleyicilerden birine sahip olması, mükemmel veritabanı desteği ve nesne tabanlı programlamayı desteklemesi sayesinde çok hızlı uygulamalar geliştirebilirsiniz. Embarcadero Delphi ya da kısaca Delphi bir programlama dili ve konsol, web, masaüstü ve mobil uygulamalar için tümleşik geliştirme ortamı (IDE) dir.
DELPHİ İLE Alt+F4 Tuş Kombinasyonuyla Programın Kapanmaması İçin;
Delphi Tuş Kontrolü, Delphi Programlama Kontrolü;.
Bunun için kullanmanız gereken delphi kodları;
//Formun OnCreate olayına;
KeyPreview := true;
//Formun OnKeyDown olayına;
if ((ssAlt in Shift) and (Key = VK_F4)) then
Key := 0;
// 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
// Listbox'a, Memo'ya ve Combobox'a bir seferde birden çok eleman eklemek
Listbox1.items.SetText('Ali'#13'Veli'#13'kırkdokuzelli');
Memo1.Lines.SetText('Ali'#13'Veli'#13'kırkdokuzelli');
Combobox1.items.SetText('Ali'#13'Veli'#13'kırkdokuzelli');
DELPHİ İLE Memo İçİnde İmlecİn Hangİ Satır ve Kolonda Olduğunu Bulma;
Delphi ile bu şekilde Memo içindeki veriyi alabilirsiniz.
Memo içindeki bir veriyi öğrenmek için kullanışlıdır.
var
LineNum:logint; CharsBeforeLine:logint;
begin
LineNum:=SendMessage(Memo1.Handle,EM_LINEFROMCHAR,Memo1.SelStart,0);
CharsBeforeLine:=SendMessage(Memo1.Handle,EM_LINEINDEX,LineNum,0);
Label1.Caption:='Satır'+IntToStr(LineNum+1);
Label2.Caption:='Kolon'+IntToStr((Memo1.SelStart-CharsBeforeLine)+1);
end;
DELPHİ İLE ListBox veya ComboBox’ta seçİlİ bİr veya bİrden fazla öğeyİ seçİlmemİş hale getİrme;
Delphi İle Listbox ve ComboBox Seçili alanın kontrolü kolaydır.
BListBox veya ComboBox’ta seçili bir veya birden fazla öğeyi seçilmemiş hale getirme;
ListBox1.ItemIndex:=-1;
Combobox1.ItemIndex:=-1;
Bir Menü Öğesini Etkisiz Hale Getirme:
MainMenu1.Items[0].Items[1].Enabled:=False; //ilk menünün, ikinci elemanı
Edit Alanına Sadece Sayı Girilsin:
//Bir edit'e sadece istediğiniz karakterlerin girilmesini sağlayabilirsiniz. Bunun için Edit'in OnKeyPress olayına aşağıdaki kodu yazın.
if not (key in ['0'..'9',#8]) then
begin
Key:=#0; //girilen karakter rakam veya backspace değilse null(#0)'a dönüştür
Beep; //bip sesi ile kullanıcıyı uyar.
end;
NOT: Kullanıcı Edit’e rakamların dışında karakter giremez, ancak Paste ile Edit’e bir metni kopyalayabilir. Bunuda Edit’in OnExit olayında kontrol edip, girilen değerin istediğiniz şekilde olup olmadığını kontrol edebilirsiniz.
Bir POPUP MENÜYÜ KOD İLE GÖSTERME;
Delphi Tuş Kontrolü, Delphi Programlama Kontrolü;.
PopupMenu1.Popup(Form1.Left+60,Form1.Top+140);
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;
Sayıları Virgüllerle Yazmak;
//Bu iş için FormatFloat fonksiyonunu kullanabilirsiniz. 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));
end;
Edit’e Girilen Metnin İlk Harfini Büyük Harf Yapma;
//Bunun için Edit'in 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);
Fareyi Meşgul Şekilde Göstermek;
//Bir işlem yaparken makinenin meşgul olduğunu göstermek için fareyi kum saati şeklinde gösterip sonra eski haline getirmek için aşağıdaki gibi bir kod kullanabilirsiniz.
try
Screen.Cursor := crHourGlass;
{buraya kodunuzu yazın...}
finally
Screen.Cursor := crDefault;
end;
Application.ProcessMessages;
Ç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;
Form’un arka kısmına bir resmi döşemek;
Bitmap: TBitmap;
procedure TForm1.FormCreate(Sender: TObject);
begin
Bitmap := TBitmap.Create;
Bitmap.LoadFromFile('C:WINDOWScars.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;
Hareketli İmleç(animated cursor)leri Kullanma;
procedure TForm1.Button1Click(Sender:TObject);
var
h : THandle;
begin
h := LoadImage(0,
'C:TheWallMagic.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;
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 Form Üzerindeki Tüm Bileşenleri Read Only (Salt Okunur) Yapma;
//uses kısmına typinfo unitini ekleyin.
procedure TForm1.SetReadOnly( Value : boolean ) ;
var
PropInfo : PPropInfo ;
Component : TComponent ;
i : integer ;
begin
for i := 0 to ComponentCount - 1 do begin
Component := Components[ i ] ;
if Component is TControl then begin
PropInfo := GetPropInfo( Component.ClassInfo, 'ReadOnly' ) ;
if Assigned( PropInfo ) and
( PropInfo^.PropType^.Kind = tkEnumeration ) then
SetOrdProp( Component, PropInfo, integer( Value ) ) ;
end ;
end ;
end ;
procedure TForm1.Button1Click(Sender: TObject);
begin
SetReadOnly( true ) ;
end;
Dikdörtgen Olmayan Edit’ler;
//Değişik şekilde bir edit elde etmek için formun OnCreate olayına aşağıdaki kodu yazın.
SetWindowRgn(Edit1.handle,
CreateRoundRectRgn(2,2,Edit1.Width-2,Edit1.Height-2,15,15),
True);
Bir Klasörün Boyutunu Öğrenmek;
//Bir klasördeki dosyaların kaç byte yer kapladığını öğrenmek için
function TForm1.GetDirectorySize(const ADirectory: string): Integer;
var
Dir: TSearchRec;
Ret: integer;
Path: string;
begin
Result := 0;
Path := ExtractFilePath(ADirectory);
Ret := Sysutils.FindFirst(ADirectory, faAnyFile, Dir);
if Ret <> NO_ERROR then
exit;
try
while ret=NO_ERROR do
begin
inc(Result, Dir.Size);
if (Dir.Attr in [faDirectory]) and (Dir.Name[1] <> '.') then
Inc(Result, GetDirectorySize(Path + Dir.Name + '*.*'));
Ret := Sysutils.FindNext(Dir);
end;
finally
Sysutils.FindClose(Dir);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Showmessage(intToStr(getdirectorysize('C:windows')));
end;
Bir Dosyanın Özelliklerini Gösterme;
procedure TForm1.Button1Click(Sender: TObject);
var
sei : TShellExecuteInfo;
begin
FillChar(sei,SizeOf(sei),#0);
sei.cbSize:=SizeOf(sei);
sei.lpFile:=PChar('c:windows
otepad.exe');
sei.lpVerb:='properties';
sei.fMask:=SEE_MASK_INVOKEIDLIST;
ShellExecuteEx(@sei);
end;
Programım hangi klasörde çalışıyor;
procedure TForm1.Button1Click(Sender: TObject);
var
path: string;
begin
Path := ExtractFilePath(ParamStr(0));
Showmessage (path);
end;
Bir doyayı geri dönüşüm kutusuna (recyle bin) atmak;
//uses kısmına shellapi unitini ekleyin.
procedure TForm1.Button1Click(Sender: TObject);
var
T : TSHFileOpStruct;
begin
FillChar(T,SizeOf(TSHFileOpStruct),#0);
with T do
begin
Wnd:=0;
wFunc:=FO_DELETE;
pFrom:=Pchar('c: est2.avi');
fFlags:=FOF_ALLOWUNDO;
end;
SHFileOperation(T);
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/incesirt',
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ı İçin;
//Formun OnCreate olayına;
KeyPreview := true;
//Formun OnKeyDown olayına;
if ((ssAlt in Shift) and (Key = VK_F4)) then
Key := 0;
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 İstediğ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);
Bir Denetim Masası Uygulamasını Çalıştırmak;
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);
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:=2010;
t.wMonth:=11;
t.wDay:=23;
t.wHour:=12;
t.wMinute:=34;
SetLocalTime(t);
end;
Ekran Görüntüsünü Aktarma;
//Belirttiğiniz sınırlar dahilinde ekranın belli bir alanını formunuzun üzerine koymak isterseniz. Formunuza image1 adlı bir resim objesi ekleyin ve daha sonra formunuzun create olayına şu kodu yazın.
procedure TForm1.FormCreate(Sender: TObject);
var
DCDesk: HDC;
begin
DCDesk:=GetWindowDC(GetDesktopWindow);
BitBlt(Image1.Canvas.Handle, 0, 0, Screen.Width, Screen.Height,DCDesk, 0, 0,SRCCOPY);
ReleaseDC(GetDesktopWindow, DCDesk);
end;
Enter Tuşuna Basılmış gibi Gösterme;
procedure TAdresformu.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then begin
Key := #0;
if (Sender is TDBGrid) then
TDBGrid(Sender).Perform(WM_KeyDown,VK_Tab,0)
else
Perform(Wm_NextDlgCtl,0,0);
end;
Geometrik Formlar Oluşturma;
//Formumuzun OnShow Eventine aşşağıdaki kodu yazıyoruz.
procedure TForm1.FormShow(Sender: TObject);
var
regionhandle:integer;
area:array[0..2] of tpoint;
begin
area[0].x := 0; area[0].y := 0;
area[1].x := 400; area[1].y := 0;
area[2].x := 200; area[2].y := 200;
regionhandle:=CreatePolygonRgn(area,3,ALTERNATE); // 3 polygonda kaç tane nokta olduğunu belirtir
// area ise polygon koordinatlarının bulunduğu dizi.
setwindowrgn(form1.handle,RegionHandle,true);
end;
/Area dizisinde verilen x,y koordinatlarına göre polgon hesaplanır. Hesaplanan Handle ile herhangi bir form’a bu polyon şekli verilebilir. //Poligon dışında kalan grafikler yarım veya hiç gözükmez.
//İmlecin o anda ekranın neresinde olduğunu bulan ufak bir kod parçası.
procedure TForm1.Button1Click(Sender: TObject);
var Yer:TPoint;
begin
if Assigned(ActiveControl) then
begin
Yer:=Point(0,0); { burda 0,0 imleç'in ekrandaki yeri oluyor }
ActiveControl.ClientToScreen(Yer);
SetCursorPos(Yer.X,Yer.Y);
end;
end;
Beğendiğiniz ve almak istediğiniz temanın satın alma aşamasından kurulumu ve genel ayarları, güvenlik ayarları, Türkçeleştirme işlemleri gibi her türlü işlemleri müşteri memnuniyeti önceliğimiz olmak üzere tamamlayıp teslim ediyoruz.
Delphi örnek projeler ve kaynak kodlara buradan erişebilirsiniz.
İlginizi Çekebilir: Delphi'de Word Belgesi İle Çalışmak
İlginizi Çekebilir: Delphi Kodlama – Formları Otomatik Yeniden Boyutlandırma ve Merkezleme