Ana Sayfa | Eğitim Cd'leri | Eğitim Kitapları |  212 428 23 21-23 39


 

 

 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:\DownLoad\deneme.html';

  SHAddToRecentDocs(SHARD_PATH, pChar(s));

end;


images/belge1.gif (157 bytes) Belgeler menüsünü temizleme

uses kısmına ShlOBJ unitini ekleyin;

SHAddToRecentDocs(SHARD_PATH, nil);


images/belge1.gif (157 bytes) Duvar kağıdını değiştirmek

var

  s: string;

begin

  s := 'c:\windows\athena.bmp';

  SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, PChar(s),0);


images/belge1.gif (157 bytes) 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;


images/belge1.gif (157 bytes) 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);


images/belge1.gif (157 bytes) 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;


images/belge1.gif (157 bytes) 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;


images/belge1.gif (157 bytes) 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;


images/belge1.gif (157 bytes) Speakerdan Beep sesi çıkartma

MessageBeep(word(-1));


images/belge1.gif (157 bytes) 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ırabilirsiniz. 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);


images/belge1.gif (157 bytes) Windows'u kapatmak veya yeniden başlatmak(reboot)


  ExitWindowsEx(EWX_SHUTDOWN,0);     //yeniden başlatmak için EWX_REBOOT


images/belge1.gif (157 bytes) 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);


images/belge1.gif (157 bytes)Ekran kartım kaç rengi destekliyor

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)));


images/images/belge1.gif (157 bytes) Windows Gezginini istediğiniz bir klasörle açma

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);


images/belge1.gif (157 bytes)Windows'un Bul (Find File) diyalog penceresini istediğiniz bir klasörle açma

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;


images/belge1.gif (157 bytes)Pencerenin kapatma düğmesini etkisiz hale getirme

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;


images/belge1.gif (157 bytes) Uygulamam Windows her açıldığında otomatik çalışsın

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('Software\Microsoft\Windows\CurrentVersion\Run',false);

  reg.WriteString('Uygulamam', uygulamanızın_yolu_ve_adı);

  reg.CloseKey;

  reg.free;

end;


images/belge1.gif (157 bytes)Klasöre Gözat diyalogunu kullanarak bir klasörü seçme

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;


images/belge1.gif (157 bytes)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);


images/belge1.gif (157 bytes) 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. *)


images/belge1.gif (157 bytes) 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. *)


images/belge1.gif (157 bytes) Bir menü öğesine 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;


images/belge1.gif (157 bytes)Ağ ortamında makinenin ismini bulma

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;


images/belge1.gif (157 bytes)Ağ ortamında login olmuş kullanıcı ismini bulma

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;


images/belge1.gif (157 bytes)Ekran çözünürlüğünü nasıl öğrenirim

Screen.Width   //yatay çö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 );


images/belge1.gif (157 bytes)Taskbar'ın (Görev çubuğu) AutoHide özelliği açık mı, kapalı mı?

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;


images/belge1.gif (157 bytes)Programım biraz beklesin

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


images/belge1.gif (157 bytes)Caps lock tuşu açık mı, kapalı mı?

if (GetKeyState(VK_CAPITAL) and $01)<>0 then
    Showmessage ('caps lock açık');


images/belge1.gif (157 bytes)İmleci (cursor) gizleyip, tekrar gösterme

ShowCursor(False) //imleci gizler
ShowCursor(True)  //imleci tekrardan gösterir.


images/belge1.gif (157 bytes)Ekran görüntüsünü alın

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;

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.


images/belge1.gif (157 bytes)Map Network Drive diyalogunu açma

WNetConnectionDialog ( 0, RESOURCETYPE_DISK );


images/belge1.gif (157 bytes)Bir dosyayı bağlantılı olduğu uygulama ile açma

uses kısmına shellapi unitini ekleyin.

shellexecute(0,'open', 'c:\test\2.avi','','',SW_NORMAL);


images/belge1.gif (157 bytes)Temp klasörünü bulma

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;


images/belge1.gif (157 bytes)Ekran koruyucuyu çalıştırmak

PostMessage(GetDesktopWindow, WM_SYSCOMMAND, SC_SCREENSAVE, 0);


images/belge1.gif (157 bytes)Güç koruma modunda (Power Safe Mode) çalışan monitörü kapatıp açma

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);


images/belge1.gif (157 bytes)Windows Tarih/Saat Özellikleri (Date/Time Properties) iletişim kutusunu açma

Winexec('Control.exe Date/Time',sw_shownormal);

 

Murat KUZU