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
|