Delphi8

IDE İÇİN İPUÇLARI
· Panel üzerindeki bileşenleri fare ile tıklayıp sürükleyerek seçmek için Ctrl tuşuna basılı tutun.
· Nesnelerin iki tür özelliği olabilir:design-time ve run-time. Tasarım anında değiştirilebilen tüm özellikler çalışma anında da değiştirilebilir.
· Bileşenleri View->Alignment Palette veya sağ tuş->Alignment veya Edit->Align ile hizalayabiliriz.
· Compile menüsünden Syntax Check ile çok hızlı bir şekilde (programı derlemeye göre) yazmış olduğunuz kodda imla kontrolü yapar.
· Bileşen paletinde çok fazla sayfanız olduğunda bir bileşene ulaşmak için bunları kaydırmanız gerekir. Bu durumda sayfaları daha kısa adlarla isimlendirin, böylece tüm sayfalar ekrana sığar.
· Delphi projenin tüm kod dosyalarını, son derlemeden bu yana değişip değişmediğini kontrol eder ve sadece değişen dosyaları derler. Projedeki tüm dosyaları değişikliğe uğrayıp uğramadığına bakmadan derlemek için Project->Build All.
· Project->Information ile yapmış olduğunuz en son derleme hakkında bazı bilgileri görebilirsiniz.
· Delphi'de hemen hemen her bileşende SpeedMenu ismi verilen menüler vardır. Bu menüyü görmek için bileşene sağ tıklayın. Bazı işlemleri çok kolay bir şekilde yapabilirsiniz. Bence buna alışın ve her bileşenin SpeedMenu'sünü kontrol edin. Mesela QuickReport gibi bir bileşen ile çalışırken SpeedMenu çok işinize yarayacaktır.
· Bir form üzerindeki birden fazla bileşeni seçmek için Shift tuşunu kullanabilirsiniz. Seçmek istediğiniz bileşenlerden birine tıklayın, sonra Shift tuşuna basarak seçmek istediğiniz diğer bileşenlere tıklayın. Shift tuşuna basarken seçili bir bileşene tıklarsanız seçim iptal edilir. Bu arada Object Inspector seçtiğiniz bileşenlerin ortak özelliklerini gösterecek şekilde değişir. Bu seçme işlemini fare ile de yapabilirsiniz. Fareyi tıklayın ve fareyi sürükleyerek seçmek istediğiniz bileşenleri içine alın ve bırakın. Bu işlem bazen çok faydalı olur. Mesela bir form üzerindeki tüm Edit kontrollerinin rengini değiştirmek gibi. Hepsiyle tek tek uğraşmazsınız.
· Bir bileşeni seçtikten sonra Ctrl tuşuna basarak yerini ayarlayabilirsiniz. Ctrl tuşuna basarak sağ oka basarsanız bileşen sağa doğru kayar. Aynı şekilde Ctrl tuşu basılı iken sol ok tuşuna basarsanız sola, üst ok tuşuna basarsanız üste ve alt ok tuşuna basarsanız alta doğru kayar. Böylece bileşenlerin form üzerindeki yerini ince ayarlarla yapabilirsiniz. Shift + Ctrl + Ok tuşlarına basarsanız bileşen grid aralıkları boyunca ilerler. Grid form üzerinde görünen noktalardır.
· Koda yorum veya açıklama eklemek için //, { }, (* *) kullanabilirsiniz. // tek satır için kullanılır. { } ve (* *) arasına yazdığınız her şey yorum olarak kabul edilir.
· Bileşenlerin form üzerindeki yerini yanlışlıkla değiştirilmesini engellemek için Edit menüsü altından Lock Controls komutunu kullanabilirsiniz. Bu form tasarımını bitirdiğiniz zaman örneğin bir bileşeni çift tıklayıp kod yazmak isterken yerini değişitrmenizi önleyecektir.
· İki dosyayı karşılaştırmak için View menüsünden New Edit Windows komutunu verin. Yeni bir editör penceresi açılacaktır.
· Proje içindeki tüm dosyalarda arama yapmak için Search menüsü altından Find in Files komutunu kullanabilirsiniz.
· Menü çubuğuna direk olarak bir komut eklemeyin. Kullanıcılar buna pek alışık değildir. Ancak herhangi bir nedenle bir komutu menü çubuğuna koymak istiyorsanız bu durumda kullanılan standart ünlem işaretini de komut sonuna ekleyin. Mesela Çıkış! gibi.
· Bir bileşeni seçtikten sonra klavyeden ESC tuşuna basarsanız, seçili bileşenin ebeveyni (parent) olan bileşen seçilir. Bunu üzerine panel vb. bileşenler olduğu için seçemediğiniz formları seçmek için kullanabilirsiniz. Formun üzerindeki panele tıklayın ve ESC tuşuna basın. Form seçilecektir.
· Kodunuzu düzenlerken bir kod parçasını blok halinde sağa kaydırmak için kodu seçin ve CTRL+SHIFT+I tuşlarına basın. Sola kaydırmak için CTRL+SHIFT+U tuşlarına basın.
· Klavyede olmayan bazı özel karaktereri programınızda kullanmak isteyebilirsiniz. Mesela © gibi. Bu karakteri yazmak için klavyeden ALT tuşuna basarak 0169'u tuşlayın. Yalnız 0169'u harflerin üstünde olan rakamlardan değil, klavyenin sağ tarafında yer alan rakamlardan yazmalısınız. Diğer karakterlerin karşılıklarını öğrenmek için Windows'un Character Map programını kullanabilirsiniz.
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:DownLoaddeneme.html';
SHAddToRecentDocs(SHARD_PATH, pChar(s));
end;
Belgeler menüsünü temizleme
uses kısmına ShlOBJ unitini ekleyin;
SHAddToRecentDocs(SHARD_PATH, nil);
Duvar kağıdını değiştirmek
var
s: string;
begin
s := 'c:windowsathena.bmp';
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, PChar(s),0);
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;
Bir programın çalıştırılması
WinExec('c:windowscalc.exe',sw_show);
WinExec('C:WINDOWSNOTEPAD.EXE C:WINDOWSWIN.INI', SW_SHOWNORMAL);
WinExec('COMMAND.COM', SW_SHOWNORMAL);
WinExec('COMMAND.COM /C DIR *.*', SW_SHOWNORMAL);
WinExec('C:WINDOWSNOTEPAD.EXE C:WINDOWSWIN.INI', SW_SHOWNORMAL);
WinExec('COMMAND.COM', SW_SHOWNORMAL);
WinExec('COMMAND.COM /C DIR *.*', SW_SHOWNORMAL);
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;
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;
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('SOFTWAREMICROSOFTMS 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;
Speakerdan Beep sesi çıkartma
MessageBeep(word(-1));
Bir Denetim Masası uygulamasını çalıştırmak
Control Panel uygulamaları WindowsSystem klasörü altında bulunur. *.CPL uzantılı dosyalardır. Bu uygulamaları Control.Exe programı ile çalıştırabilirsiniz. Bazı Control Panel uygulamaları WindowsSystem klasöründe bulunmaz. Bunların ismini vererek çalıştırabilirsiniz.
WinExec('C:WINDOWSCONTROL.EXE TIMEDATE.CPL', sw_ShowNormal);
WinExec('C:WINDOWSCONTROL.EXE MOUSE', sw_ShowNormal);
WinExec('C:WINDOWSCONTROL.EXE PRINTERS', sw_ShowNormal);
Windows'u kapatmak veya yeniden başlatmak(reboot)
ExitWindowsEx(EWX_SHUTDOWN,0); //yeniden başlatmak için EWX_REBOOT
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);
Ekran kartınızın kaç rengi desteklediğini aşağıdaki kodla bulabilirsiniz.
(1 shl (GetDeviceCaps(Form1.Canvas.Handle, BITSPIXEL) *
GetDeviceCaps(Form1.Canvas.Handle, PLANES)));
GetDeviceCaps(Form1.Canvas.Handle, PLANES)));
uses kısmına ShellApi unitini ekleyin.
ShellExecute(0,
'explore',
'C:WINDOWS', //buraya açmak istediğiniz klasörü yazın.
nil,
nil,
SW_SHOWNORMAL);
Windows'ta Başlat->Bul->Dosyalar ve Klasörler ile açtığınız Bul diyalog penceresini Delphi içerisinden hem de istediğiniz yolu vererek çalıştırabilirsiniz.
uses kısmına ddeman unitini ekleyin.
procedure TForm1.Button1Click(Sender: TObject);
begin
with TDDEClientConv.Create(Self) do begin
ConnectMode := ddeManual;
ServiceApplication := 'explorer.exe';
SetLink( 'Folders', 'AppProperties');
OpenLink;
ExecuteMacro('[FindFolder(, C:DOWNLOAD)]', False); //diyalog açıldığında konum kısmında
CloseLink; //olmasını istediğiniz klasör.
Free;
end;
end;
begin
with TDDEClientConv.Create(Self) do begin
ConnectMode := ddeManual;
ServiceApplication := 'explorer.exe';
SetLink( 'Folders', 'AppProperties');
OpenLink;
ExecuteMacro('[FindFolder(, C:DOWNLOAD)]', False); //diyalog açıldığında konum kısmında
CloseLink; //olmasını istediğiniz klasör.
Free;
end;
end;
Pencerenin başlık çubuğunda bulunan kapatma düğmesini (X) etkisiz hale getirebilirsiniz. Aynı zamanda sistem menüsündeki Kapat(Close) seçeneğide kaybolur. Bunun için aşağıdaki gibi bir kod yazmalısınız.
procedure TForm1.Button1Click(Sender: TObject);
var
hwndHandle : THANDLE;
hMenuHandle : HMENU;
begin
hwndHandle := FindWindow(nil, 'Form1'); //Form1 pencerenin başlığını göstermektedir.
if (hwndHandle <> 0) then begin //Burayı uygulamanıza göre değiştirin
hMenuHandle := GetSystemMenu(hwndHandle, FALSE);
if (hMenuHandle <> 0) then
DeleteMenu(hMenuHandle, SC_CLOSE, MF_BYCOMMAND);
end;
end;
var
hwndHandle : THANDLE;
hMenuHandle : HMENU;
begin
hwndHandle := FindWindow(nil, 'Form1'); //Form1 pencerenin başlığını göstermektedir.
if (hwndHandle <> 0) then begin //Burayı uygulamanıza göre değiştirin
hMenuHandle := GetSystemMenu(hwndHandle, FALSE);
if (hMenuHandle <> 0) then
DeleteMenu(hMenuHandle, SC_CLOSE, MF_BYCOMMAND);
end;
end;
uses kısmına Registry unitini ekleyin.
{$IFNDEF WIN32}
const MAX_PATH = 144;
{$ENDIF}
procedure TForm1.Button1Click(Sender: TObject);
var
reg: TRegistry;
begin
reg := TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.LazyWrite := false;
reg.OpenKey('SoftwareMicrosoftWindowsCurrentVersionRun',false);
reg.WriteString('Uygulamam', uygulamanızın_yolu_ve_adı);
reg.CloseKey;
reg.free;
end;
uses kısmına ShellAPI ve ShlObj unitlerini ekleyin.
procedure TForm1.Button1Click(Sender: TObject);
var
TitleName : string;
lpItemID : PItemIDList;
BrowseInfo : TBrowseInfo;
DisplayName : array[0..MAX_PATH] of char;
TempPath : array[0..MAX_PATH] of char;
begin
FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
BrowseInfo.hwndOwner := Form1.Handle;
BrowseInfo.pszDisplayName := @DisplayName;
TitleName := 'Lütfen bir klasör seçin';
BrowseInfo.lpszTitle := PChar(TitleName);
BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS;
lpItemID := SHBrowseForFolder(BrowseInfo);
if lpItemId <> nil then begin
SHGetPathFromIDList(lpItemID, TempPath);
ShowMessage(TempPath);
GlobalFreePtr(lpItemID);
end;
end;
var
TitleName : string;
lpItemID : PItemIDList;
BrowseInfo : TBrowseInfo;
DisplayName : array[0..MAX_PATH] of char;
TempPath : array[0..MAX_PATH] of char;
begin
FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
BrowseInfo.hwndOwner := Form1.Handle;
BrowseInfo.pszDisplayName := @DisplayName;
TitleName := 'Lütfen bir klasör seçin';
BrowseInfo.lpszTitle := PChar(TitleName);
BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS;
lpItemID := SHBrowseForFolder(BrowseInfo);
if lpItemId <> nil then begin
SHGetPathFromIDList(lpItemID, TempPath);
ShowMessage(TempPath);
GlobalFreePtr(lpItemID);
end;
end;
uses kısmına Shellapi unitini ekleyin;
ShellExecute(Handle,
'open',
'http://www.geocities.com/siliconvalley/campus/4958/',
nil,
nil,
sw_ShowMaximized);
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. *)
var
OldVal : LongInt;
begin
SystemParametersInfo (97, Word (True), @OldVal, 0)
(* Word(False) ile kullanırsanız tuşları tekrar kullanabilirsiniz. *)
procedure TForm1.FormCreate(Sender: TObject);
var
Bmp1 : TPicture;
begin
Bmp1 := TPicture.Create;
Bmp1.LoadFromFile('c:denemeturkey.bmp');
SetMenuItemBitmaps( deneme1.Handle,
0,
MF_BYPOSITION,
Bmp1.Bitmap.Handle,
Bmp1.Bitmap.Handle);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Makine_ismi:array[0..255] of char;
BufferSize:DWORD;
begin
BufferSize:=SizeOf(Makine_ismi);
GetComputerName(@Makine_ismi,BufferSize);
Showmessage(Makine_ismi);
end;
var
Makine_ismi:array[0..255] of char;
BufferSize:DWORD;
begin
BufferSize:=SizeOf(Makine_ismi);
GetComputerName(@Makine_ismi,BufferSize);
Showmessage(Makine_ismi);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Kullanici_ismi:array[0..255] of char;
BufferSize:DWORD;
begin
BufferSize:=SizeOf(Kullanici_ismi);
GetUserName(@Kullanici_ismi,BufferSize);
Showmessage(Kullanici_ismi);
end;
var
Kullanici_ismi:array[0..255] of char;
BufferSize:DWORD;
begin
BufferSize:=SizeOf(Kullanici_ismi);
GetUserName(@Kullanici_ismi,BufferSize);
Showmessage(Kullanici_ismi);
end;
Screen.Width //yatay çözünürlük
Screen.Height //dikey çözünürlük
Screen.Height //dikey çözünürlük
MessageDlg('Şu anda ' + IntToStr( Screen.Width ) +' x '+
IntToStr( Screen.Height )+' çözünürlükte çalışıyorsunuz',
mtInformation, [mbOk], 0 );
uses kısmına ShellAPI unitini ekleyin.
procedure TForm1.Button1Click(Sender: TObject);
var
ABData : TAppBarData;
begin
ABData.cbSize := sizeof(ABData);
if (SHAppBarMessage(ABM_GETSTATE, ABData) and ABS_AUTOHIDE) > 0 then
Showmessage('Autohide özelliği açık');
end;
var
ABData : TAppBarData;
begin
ABData.cbSize := sizeof(ABData);
if (SHAppBarMessage(ABM_GETSTATE, ABData) and ABS_AUTOHIDE) > 0 then
Showmessage('Autohide özelliği açık');
end;
Bazı işlemlerden sonra diğer bir işlemi çalıştırmadan önce bir süre beklemek istersiniz. Bu gibi durumlarda Sleep komutunu kullanabilirsiniz. Burada verilen değer milisaniye cinsindendir. (1 saniye=1000 milisaniye)
Sleep(10000) //10 saniye bekler
if (GetKeyState(VK_CAPITAL) and $01)<>0 then
Showmessage ('caps lock açık');
Showmessage ('caps lock açık');
ShowCursor(False) //imleci gizler
ShowCursor(True) //imleci tekrardan gösterir.
ShowCursor(True) //imleci tekrardan gösterir.
procedure TForm1.Button1Click(Sender: TObject);
var
DCDesk: HDC;
begin
DCDesk:=GetWindowDC(GetDesktopWindow);
BitBlt(Form1.Canvas.Handle, 0, 0, Screen.Width, Screen.Height,DCDesk, 0, 0,SRCCOPY);
ReleaseDC(GetDesktopWindow, DCDesk);
end;
var
DCDesk: HDC;
begin
DCDesk:=GetWindowDC(GetDesktopWindow);
BitBlt(Form1.Canvas.Handle, 0, 0, Screen.Width, Screen.Height,DCDesk, 0, 0,SRCCOPY);
ReleaseDC(GetDesktopWindow, DCDesk);
end;
Not: Yukarıdaki kod ekran görünütüsünü form üstüne alır. Image bileşeni içine ekran görüntüsünü almak için form üzerine bir image bileşeni yerleştirin ve Form1.Canvas.Handle yerine Image1.Canvas.Handle yazın.
WNetConnectionDialog ( 0, RESOURCETYPE_DISK );
uses kısmına shellapi unitini ekleyin.
shellexecute(0,'open', 'c:test2.avi','','',SW_NORMAL);
procedure TForm1.Button1Click(Sender: TObject);
var
temp_klasor: array[0..MAX_PATH] of char;
begin
GetTempPath(SizeOf(temp_klasor), @temp_klasor);
ShowMessage(temp_klasor);
end;
var
temp_klasor: array[0..MAX_PATH] of char;
begin
GetTempPath(SizeOf(temp_klasor), @temp_klasor);
ShowMessage(temp_klasor);
end;
PostMessage(GetDesktopWindow, WM_SYSCOMMAND, SC_SCREENSAVE, 0);
Monitörü kapatmak için :
SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 0);
Monitörü açmak için :
SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, -1);
Winexec('Control.exe Date/Time',sw_shownormal);