![]() |
#1 |
Object Pascal Ipuç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ırkdokuz elli'); Memo1.Lines.SetText('Ali'#13'Veli'#13'kırkdokuzell i'); Combobox1.items.SetText('Ali'#13'Veli'#13'kırkdoku zelli'); 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_LINEI NDEX,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ı ![]() 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; ![]() 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; ![]() 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)) ; ![]() 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'); ![]() 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\CurrentVer sion\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).InnerTe xt) <> 0 then begin WebBrowser1.OleObject.Document.All.Item(i).Style.C olor := '#FFFF00'; WebBrowser1.OleObject.Document.All.Item(i).ScrollI ntoView(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; ![]() 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.Item s)); 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.bitm ap); //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; |
|
![]() |
![]() |
![]() |
Etiketler |
ipuclari, object, pascal |
|
|