Object Pascal İpuçları

 

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

Formun KeyPreview özelliğini True yapın, daha sonra formun OnKeyDown olayına aşağıdaki kodu yazın. 

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

II. Yol : Mustafa Kılınç tarafından gönderilmiştir.

procedure TForm1.Button1Click(Sender: TObject);
var
 gelen : TStringList;
begin
 gelen := TStringList.Create;
 gelen.sorted := True;
 gelen.Duplicates := dupIgnore;
 gelen.Add('evli');
 gelen.Add('bekar');
 gelen.Add('Dul');
 ComboBox1.Items.Assign(gelen);
 gelen.free;
end;


Memo içinde imlecin hangi satır ve kolonda olduğunu bulma

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


ListBox veya ComboBox'ta seçili bir veya birden fazla öğeyi seçilmemiş hale getirme

ListBox1.ItemIndex := -1;

Combobox1.ItemIndex := -1;


Bir menü öğesini kullanılamaz hale getirmek

MainMenu1.Items[0].Items[1].Enabled:= False;  //ilk menünün, ikinci elemanı


Edit'e 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 ile gösterme

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


  Edit'e girilen metnin ilk 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; 

 Ç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:\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;

 Hareketli İmleç(animated cursor)leri kullanma

procedure TForm1.Button1Click(Sender:TObject);
var
  h : THandle;
begin
  h := LoadImage(0,
                 'C:\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;

 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\notepad.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;

II.Yol : Mustafa Kılınç tarafından gönderilmiştir.

procedure TForm1.Button1Click(Sender: TObject);
begin
  MessageDlg('Programınız ' +ExtractFilePath( Application.ExeName ) + 'klasöründe çalışıyor. ',
                   mtInformation, [mbOk], 0 );
end;


Bir dosyayı 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:\test\2.avi');
      fFlags:=FOF_ALLOWUNDO;
    end;
  SHFileOperation(T);
end;


Bir dosyanın boyutunu bulmak

procedure TForm1.Button1Click(Sender: TObject);
var
  srFileSR: TSearchRec;
  sFileName, sFileSize: string;
begin
  sFileName := 'c:\test\2.avi';
  FindFirst(sFileName,faAnyFile,srFileSR);
  sFileSize := IntToStr(srFileSR.Size);
  Showmessage(sFileSize);
end;


Bmp dosyasını JPEG'e dönüştürme

uses kısmına jpeg unitini ekleyin. 

procedure TForm1.Button1Click(Sender: TObject);
var
  MyJPEG : TJPEGImage;
  MyBMP : TBitmap;
begin
  MyBMP := TBitmap.Create;
  with MyBMP do
    try
      LoadFromFile('c:\winnt\cars.bmp');
      MyJPEG := TJPEGImage.Create;
      with MyJPEG do begin
        Assign(MyBMP);
        SaveToFile('c:\winnt\cars.JPEG');
        Free;
      end;
  finally
    Free;
  end;
end;


Sayı Yuvarlama

24.499999 gibi bir sayıyı 24.5'e aşağıdaki kodla yuvarlayabilirsiniz.

procedure TForm1.Button1Click(Sender: TObject);
var
  getal : real ;
  AfgerondGetal :real;
begin
  Getal:=24.499999;
  AfgerondGetal:=round(Getal*100)/100;
  Edit1.Text:=floattostr(AfgerondGetal);
end;

{Bu kod Mustafa Kılınç tarafından gönderilmiştir}


Bir dosya yolunun (path) sonundaki  \  karakterini silme

Bunun için ExcludeTrailingPathDelimiter fonksiyonunu kullanabilirsiniz. Örneğin:

ShowMessage(ExcludeTrailingPathDelimiter(DirPath));


Dosya yolunun sonunda mutlaka  \  karakteri bulunsun

Bunun için IncludeTrailingPathDelimiter fonksiyonunu kullanabilirsiniz. Örneğin:

ShowMessage(IncludeTrailingPathDelimiter(DirPath));


İçinde bulunduğumuz ayın son gününü nasıl bulurum

function LastDayCurrMon: TDate;
var
  y, m, d: word;
begin
  decodedate(now, y, m, d);
  m := m + 1;
  if m > 12 then
  begin
    y := y + 1;
    m := 1;
  end;
  result := encodedate(y, m, 1) - 1;
end;


Escape tuşuna bastığımda form kapansın

Formun KeyPreview özelliğini True yapın. Daha sonra OnKeyPress olayına aşağıdaki kodu yazın.

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
   if key = #27 then
    Close;
end;


Internetten dosya indirme (download)

uses kısmına ShellApi ve UrlMon unitlerini ekleyin.

function DownLoadInternetFile(Source, Dest : String): Boolean;
begin
  try
    Result := URLDownloadToFile(nil,PChar(Source),PChar(Dest),0,nil) = 0
  except
    Result := False;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  SourceString, DestinationString: string;
begin
SourceString := 'http://www.tcmb.gov.tr/kurlar/today.html';
DestinationString := 'c:\bugun.html';

if DownLoadInternetFile(SourceString, DestinationString) then
  ShellExecute(Application.Handle, PChar('Open'), PChar(DestinationString), PChar(''), nil, SW_NORMAL)
else
  MessageDlg('Dosya indirilemedi!', mtError, [mbOK], 0);
end;


Environment Variable'ları bulma

Environment variable bilgisayardan bilgisayara değişen bazı klasör ve değişkenlere verilen isim. Mesela Belgelerim klasörü gibi. Bu klasörü bir bilgisayarda c:\Belgelerim iken diğerinde c:\Mustafa\Belgelerim olabilir. Bunların tam listesini komut satırından SET komutunu vererek öğrenebilirsiniz. Bu değişkenlerden bazıları : Windows klasörü, Bilgisayar ismi, Domain ismi, Kullanıcı ismi, işlemci bilgileri...

ShowMessage(GetEnvironmentVariable('Temp'));


Satır ekledikçe RichEdit aşağı doğru kaysın

  RichEdit1.Lines.Add('New text');
  RichEdit1.Perform(EM_SCROLL, SB_LINEDOWN, 0);


Integer'dan binary string'e çevirme

function IntToBinStr(num: integer): string;
var
  i: integer;
begin
  for i := 0 to 31 do
    Result := IntToStr((num shr i) and 1) + Result;
end;


Kullanılan fare'nin ortasında döndürme tekerleği var mı?

Bunu öğrenmek için mouse global nesnesini kullanabilirsiniz.

if Mouse.WheelPresent then
  ShowMessage('tekerlek var');


Delphi'nin çalışıp, çalışmadığını test etme

Bu daha çok shareware tarzı componentlerde çok kullanılıyor. Delphi açıkken component çalışıyor, ancak kapanınca exe dosyadan çalışmıyor. Kullanıcı componenti rahatça deniyor, ama dağıtamıyor. Aşağıdaki kodla Delphi'nin çalışıp, çalışmadığını anlayabilirsiniz :

if FindWindow('TAppBuilder', Nil) <> 0 then
  ShowMessage('Delphi çalışıyor');


Radio Grup'taki bir öğeyi kullanılamaz yapma

TRadioButton(RadioGroup1.Controls[1]). Enabled := False;


Programınızı Windows açılışında otomatik olarak çalışacak şekilde ayarlama

uses kısmına Registry unitini ekleyin.

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', Application.ExeName);
  reg.CloseKey;
  reg.free;
end;


Listbox'a aralıklı (tab) öğeler ekleyin

Listbox'ın TabWidth özelliğini 100 olarak girin. Bu aradaki boşluğu belirtir. Daha Sonra eklemek istediğiniz öğeler arasına ^I (Tab karakteri) koyarak öğeleri ekleyin.

Listbox1.Items.Add ('Bir'^I'İki'^I'Üç');


HTML Help (.chm) yardım dosyasını Delphi ile kullanma

Delphi içerisinde herhangi bir HTML Help bileşeni gelmiyor ancak, EHS isimli bedava bileşen sayesinde HTML Help (.chm) dosyalarını Delphi ile kullanabilirsiniz. Bileşeni sitesinden indirebilirsiniz : www.ec-software.com


StringGrid'in her zaman ilk hücresi seçili oluyor, bunu istemiyorum

Aşağıdaki kodu projenize eklerseniz, stringGrid üzerinde seçili alan gözükmeyecektir.

procedure TForm1.FormCreate(Sender: TObject);
var
  grRect: TGridRect;
begin
  grRect.Left := -1;
  grRect.Top := -1;
  grRect.Right := -1;
  grRect.Bottom := -1;

  StringGrid1.Selection := grRect;
end;


Çalışma anında (runtime) StringGrid oluşturamıyorum

TWinControl sınıfından bileşenleri runtime oluştururken, mutlaka parent vermelisiniz. Hata büyük ihtimal bundan kaynaklanıyor. Örnek kod :

procedure TForm1.Button1Click(Sender: TObject);
var
  TmpStrGrid : TStringGrid;
begin
  TmpStrGrid := TStringGrid.Create(Self);
  TmpStrGrid.Parent := Form1;
  TmpStrGrid.Left := 30;
  TmpStrGrid.Top := 30;
end;


Edit'te yazarken binlik ayıracının gözükmesini istiyorum

Bu iş için bedava olan şu iki bileşeni kullanabilirsiniz : birincisi Rx Library/JVCL içindeki bir bileşen ( www.delphi-jedi.org ), ikincisi TAdvEdit ( www.tmssoftware.com ).


Animated gif kullanma

Bu iş için Rx Library / JVCL içindeki TRxGifAnimator isimli bileşeni kullanabilirsiniz. Bu paket bedava dağıtılmaktadır, www.delphi-jedi.org


Formun başlık çubuğunu (title bar) gizleme

Formun OnCreate olayına aşağıdaki kodu yazın :

procedure TForm1.FormCreate(Sender: TObject);
begin
  SetWindowLong( Handle,
    GWL_STYLE,
    GetWindowLong( Handle, GWL_STYLE )
    and not WS_CAPTION );
  ClientHeight := Height;
end;


Başka bir uygulamaya karakter gönderme

aşağıdaki örnek notepad uygulamasına A karakterini gönderir.

procedure TForm1.Button1Click(Sender: TObject);
var
  g,d:integer;
begin
 {uygulamanın ana penceresini bul}
 g:=FindWindow('Notepad',nil);
 {uygulama penceresindeki text box'ı bul}
 d:=ChildWindowFromPoint(g,point(50,50));
 {karakteri gönder}
 SendMessage(d,WM_CHAR,Ord('A'),0);
end;


Formları ve Nesneleri Taşımak

Formları başlık çubuğundan tutmadan taşımak için veya form üzerindeki herhangi bir nesneyi taşımak için, OnMouseDown olayına aşağıdaki kodu yazın.

procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
const
  SC_DragMove = $F012;
begin
  ReleaseCapture;
  Form1.Perform(WM_SysCommand, SC_DragMove, 0);
end;


F1, F2, F3 gibi Fonksiyon Kısayol Tuşlarını Kullanmak

Formun KeyPreview özelliğini True yapın ve OnKeyDown olayına aşağıdaki kodu yazın :

if Key = VK_F2 then
  begin
  {F2'ye basılırsa burdaki kod çalışır}
end;


Image'deki Resmi Boşaltma

image1.picture.bitmap := nil;


Bir Formu Runtime'da Oluşturup, Yok Etmek

Project menüsünden Options komutunu verin ve formu Avaible Forms kısmına taşıyın. Daha sonra aşağıdaki kodla formu gerektiği zaman oluşturup kullanabilir ve işi bitince yok edebilirsiniz. Böylece form boş yere hafızada yer işgal etmemiş olur.

try
  Form2 := TForm2.Create(Application);
  Form2.ShowModal;
finally
  Form2.Free;
end;


WebBrowser'da Bir Kelimeyi Bulma

Aşağıdaki fonksiyon istediğiniz kelimeyi webbrowser'da bulup aydınlatır.

{....}

  private
    procedure SearchAndHighlightText(aText: string);
     
{....}

procedure TForm1.SearchAndHighlightText(aText: string);
var
  i: Integer;
begin
  for i := 0 to WebBrowser1.OleObject.Document.All.Length - 1 do
  begin
    if Pos(aText, WebBrowser1.OleObject.Document.All.Item(i).InnerText) <> 0 then
    begin
      WebBrowser1.OleObject.Document.All.Item(i).Style.Color := '#FFFF00';
      WebBrowser1.OleObject.Document.All.Item(i).ScrollIntoView(True);
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  SearchAndHighlightText('Aranan_Kelime');
end;


Internet Bağlantısını Kontrol Etmek

Bunun için bir kaç yöntem var :

1.
www.google.com gibi bir siteye ping atıp atamadığını test edebilirsiniz.

2. TCP bileşenini kullanarak bu bileşenin LocalIP özelliğini kontrol edebilirsiniz. Eğer 0.0.0.0 ise internete bağlı değildir.

if TCP1.LocalIp = '0.0.0.0' then
  ShowMessage('Internete bağlı değilsiniz!');

3. Aşağıdaki Kod :

procedure TForm1.Button1Click(Sender: TObject);
function FuncAvail(_dllname, _funcname: string;
                    var _p: pointer): boolean;
{return True if _funcname exists in _dllname}
var _lib: tHandle;
begin
  Result := false;
  if LoadLibrary(PChar(_dllname)) = 0 then exit;
  _lib := GetModuleHandle(PChar(_dllname));
  if _lib <> 0 then begin
   _p := GetProcAddress(_lib, PChar(_funcname));
   if _p <> NIL then Result := true;
  end;
end;

{Win > Win98 de SHELL32.DLL i çağırın diğer işletim sistemlerinde URL.dll i çağırın }
{buton code:}
var
  InetIsOffline : function(dwFlags: DWORD):
                  BOOL; stdcall;
begin
  if FuncAvail('URL.DLL', 'InetIsOffline',
               @InetIsOffline) then
   if InetIsOffLine(0) = true
    then ShowMessage('Bağlı değil!')
    else ShowMessage('Internete Bağlı.');
 


Form Başlık Çubuğundan(title bar) Taşınamasın

Formun OnCreate olayına aşağıdaki kodu yazın :

procedure TForm1.FormCreate(Sender: TObject);
var
  hMenuHandle : HMENU;
begin
  hMenuHandle := GetSystemMenu(Form1.Handle, FALSE); //Get the handle of the Form
  if (hMenuHandle <> 0) then
    DeleteMenu(hMenuHandle, SC_MOVE, MF_BYCOMMAND); //disable moving
end;


Kısayol Oluşturmak

Bedava olarak dağıtılan TurboPower ShellShock içindeki Shortcut bileşeni ile kolayca kısayol oluşturabilirsiniz.


Access Violation Hatası

Bu hata oluşturulmayan/olmayan bir nesneye ulaşmaya çalıştığınzda meydana gelir. Mesela henüz oluşturulmamış bir formu göstermek istediğinizde.

Genelde karşılaşılan durumlardan biri de DataModule kullananların, datamodule henüz oluşturulmadan burdaki nesneleri kullanmak istemeleridir. Eğer datamodule kullanıyorsanız, Project menüsünden Options komutunu verin. Forms sekmesinde, Auto-create forms kısmında datamodule'ü ilk sıraya taşıyın.


Jpeg'i bmp'ye çevirme

procedure TForm1.ConvertJpgToBitmap(Jpeg: TJpegImage);
var
   bmp: TBitmap;
   dir: String;
begin
   dir := GetWindowsDir;
   bmp := TBitmap.Create;
   try
     Jpeg := TJpegImage.Create;
     Jpeg.LoadFromFile('somejpeg.jpg');
     with bmp do
     begin
       Width := Jpeg.Width;
       Height := Jpeg.Height;
       Canvas.Draw(0, 0, Jpeg);
       SaveToFile('somebmp.bmp');
       Free;
     end;
   finally
     Jpeg.Free;
   end;
end;


Rastgele Sayı Üretme

RandomRange fonksiyonunu kullanabilirsiniz. Bu fonksiyon, verdiğiniz aralıkta rastgele(random) sayı üretir. Math unitini uses kısmına ekleyin.

RandomRange(0,4) // 0 ile 4 arasında rastgele sayı üretir.


Dosya Kopyalama

CopyFile fonksiyonu ile dosya kopyalayabilirsiniz. Sondaki parametre False ise aynı isimde dosya varsa üzerine yazar, True ise yazmaz.

CopyFile('c:\1.txt', 'c:\Mustafa\1.txt', False);


Çalışan Programların Listesini Alma

function EnumWindowsProc(Wnd: HWND; List: TStrings): Boolean; stdcall;
var
  ParentWnd: HWND;
  ExStyle: DWORD;
  Caption: array [0..255] of Char;
begin
  if IsWindowVisible(Wnd) then
  begin
    ParentWnd:=GetWindowLong(Wnd,GWL_HWNDPARENT);
    ExStyle:=GetWindowLong(Wnd,GWL_EXSTYLE);
    if ((ParentWnd=0) or (ParentWnd=GetDesktopWindow)) and
       ((ExStyle and WS_EX_TOOLWINDOW=0) or (ExStyle and WS_EX_APPWINDOW<>0)) and
        (GetWindowText(Wnd,Caption,SizeOf(Caption))>0) then
      List.AddObject(Caption,Pointer(Wnd));
  end;
  Result:=True;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  EnumWindows(@EnumWindowsProc,Integer(ListBox1.Items));
end;


Fareyi Kod ile Tıklatma

Bazı işlemleri yaparken fareyi bir konuma taşıyıp, otomatik tıklama yapmasını isteyebilirsiniz. Bu durumda SetCursorPos ile kursörü istediğiniz konuma taşıyıp, aşağıdaki kodu yazın :

mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);


Harddisk'in Fabrika Seri Numarasını Bulma

Ide Diskler için : ide_sn.zip (4 KB), SCSI Diskler için : scsi_sn.zip (4 KB).

NOT : Windows 9x'te SMARTVSD.VXD isimli dosyayı "windows\system" klasöründen "windows\system\iosubsys" klasörüne kopyalayıp restart etmek gerekiyor.


TImage'deki Resmi Başka Bir TImage'a Atamak

ArkaPlan.Picture.Bitmap.Assign(image1.picture.bitmap); //image1'deki resim ArkaPlan'a atanır.


StringGrid'te Enter Tuşuna Basınca Yan Hücreye Geçsin

StringGrid'in OnKeyDown olayına aşağıdaki kodu yazın :

if (key = vk_return) and (StringGrid1.Col < StringGrid1.ColCount-1) then
  StringGrid1.Col:=StringGrid1.Col+1;

bimeks borland component database delphi delphi.net delphi dersleri firebird help interbase makale oracle seminer software sybase veritabanı web