|
آموزش دلفی ترفندهای دلفی درباره وبلاگ هوشنگ شيشه لو اهر - ارسباران آخرین مطالب
آرشيو وبلاگ سه شنبه 1386/06/06 :: 23:4 :: نويسنده : هوشنگ شیشه لو
ShellExecute (HWND(nil), 'open', 'calc','', '', SW_SHOWNORMAL); سه شنبه 1386/06/06 :: 16:28 :: نويسنده : هوشنگ شیشه لو
خاموش کردن مونیتور SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 0); روشن کردن مونیتور SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, -1);
سه شنبه 1386/06/06 :: 16:21 :: نويسنده : هوشنگ شیشه لو
با این تابع می توانید برنامه های دیگر را از درون برنامه خودتان ببندید : function KillApp(const sCapt: PChar) : boolean;
جمعه 1386/05/12 :: 22:32 :: نويسنده : هوشنگ شیشه لو
یکشنبه 1386/05/07 :: 0:57 :: نويسنده : هوشنگ شیشه لو
چطور می توان Desktop از عکس گرفت ؟
روی فرمتون یک Button ، یک SaveDialog (از پالت Dialog) ، و یک Image بگذارید . روی رویداد OnClick کلید خطوط زیر را بنویسید :
Image1.Width:=DesktopCanvas.ClipRect.Right; Image1.Height:=DesktopCanvas.ClipRect.Bottom; Image1.Canvas.CopyRect(Rect(0,0,1024,768), DesktopCanvas,Rect(0,0,1024,768)); If SaveDialog1.Execute then Image1.Picture.Bitmap.SaveToFile(SaveDialog1.FileName);
یکشنبه 1386/05/07 :: 0:56 :: نويسنده : هوشنگ شیشه لو
چگونه می توان از طریق برنامه نویسی CD-Romرا باز و بسته کرد ؟ ابتدا روی فرمتون دو کلید بذارید ، کپشن آنها رو به Open و Close تغییر بدهید : برای انجام این کار نیاز داریم که یونیت MMSystem را قابل استفاده کنیم برای این کار در زیر implementation می نویسیم : Uses MMSystem; برای کلید Open خط زیر را بنویسید: mciSendString('Set cdaudio door open wait',nil,0,handle); و برای کلید Close هم خط زیر را بنویسید: mciSendString('Set cdaudio door Closed wait',nil,0,handle);
یکشنبه 1386/05/07 :: 0:54 :: نويسنده : هوشنگ شیشه لو
آیا می توان فرمی داشت که در آن سوراخی وجود داشته باشد؟ بله ، این کار به راحتی انجام می شه ، اسکریپت زیر رو در رویداد OnPaint فرمتون کپی کنید: Procedure TForm1.FormPaint(Sender: TObject); Var Wnd:HWnd; R1,R2:HRGN; R:TRect; Begin Wnd:=Application.MainForm.Handle; GetWindowRect(Wnd,R); R1:=CreateRectRgn(0,0,R.Right-R.Left,R.Bottom-R.Top); R2:=CreateEllipticRgn(10,30,150,120); CombineRgn(R1,R1,R2,RGN_DIFF); SetWindowRgn(Wnd,R1,true); End; یکشنبه 1386/05/07 :: 0:53 :: نويسنده : هوشنگ شیشه لو
چطور می توان Hint (ToolTip) ی با فونتی متفاوت از فونت استاندارد که ویندوز برای Hin داره ، داشت ؟ قبل از Type اصلی برنامه خطوط زیر رو وارد کنید TMyHint=Class (ThinTWindow( Constructor Create (Aowner:TComponent);override; End; با این کار ما یک کلاس جدیدی از Hint رو برای دلفی تعریف کردیم . و حالا خطوط زیر را در زیر Implementation بنویسید : Constructor TMyhint.Create(Aowner:TComponent); Begin inherited Create (Aowner); Canvas.Font.Name:=’Arial’; Canvas.Brush.Color:=ClBlue; End; و با این کار ساختار TMyHint را بوجود آوردیم ، یعنی خواستیم که فونت آن Arial و رنگ آن آبی باشد. سپس در انتها برای اینکه این ساختار در برنامه اعمال شود خطوط زیر در قسمت OnCreate فرم
اصلی برنامه کپی کنید : Application.ShowHint:=False; HintWindowClass:=TMyhint; Application.ShowHint:=True; یکشنبه 1386/05/07 :: 0:51 :: نويسنده : هوشنگ شیشه لو
هیچ می دونستید در دلفی می توان بدون داشتن هیچ کامپوننت یا ocx خاصی فرم ها را با افکت های مختلف نشون داد؟ برای انجام این کار در رویداد OnCreate فرمی که می خواهید با افکت باز بشه خط زیر را اضافه کنید : AnimateWindow(Form1.Handle, 300, AW_Center); البته بهتره بدونید که فقط همین یه دونه افکت نیست ، پارامتر سوم پردازه بالا نوع افکت رو مشخص می کنه ، اگه رو اون کلید Ctrl+Space رو بزنید از لیستی که باز می شه می تونید افکت های دیگه رو انتخاب کنید . همچنین پارامتر دوم زمان طول کشیدن افکت رو بر حسب میلی ثانیه مشخص می کنه . پارامتر اول هم هندل (شماره منحصر به فردی که ویندوز به هر پنجره اختصاص می ده) فرمیه که می خواهید با افکت نشون داده بشه یکشنبه 1386/05/07 :: 0:47 :: نويسنده : هوشنگ شیشه لو
تا الان شده که کسی پشت سیستم شما بشینه و برنامه هاتونو نگاه کنه و بعدانکار کنه بگه اون ساعت کار نکردم.با این برنامه می تونید زمان و تاریخ دقیق آخرین دسترسی به یک فایل روببینید.خوب شروع می کنیم یک Button , یک Memo روی فرم بذارید وبرای Button دستورات زیر را بنویسید.
procedure TForm1.Button1Click(Sender: TObject); یکشنبه 1386/05/07 :: 0:43 :: نويسنده : هوشنگ شیشه لو
محیط دلفی برای برنامه نویسی یکی از بهترین محیطهای برنامه نویسی است گذشته از کارکرد داخلی و کمژایلر آن که بسیار قوی و سریع است ُ محیط آن یعنی IDE آنهم قدرت بسیار زیادی دارد که باعث شده یکی از بهترین ادیتورها باشد. در این مقاله من سعی بر این داشته ام تا با ارائه یک سری از نکات و کلیدهای میانبر که می توانند برای کار در دلفی بسیار مفید و کارا باشند، کمک کنم تا شما بتوانید با قدرت بیشتر به برنامه نویسی و کار در این محیط قدرتمند ادامه دهید. یکشنبه 1386/05/07 :: 0:40 :: نويسنده : هوشنگ شیشه لو
انجام این کار بسیار ساده است. برای این کار کافی است بر روی فرم خود یک StatusBar اضافه نمایید حالا در قسمت تعاریف متغیر های عمومی کد زیر را بنویسید:
ProgressBar1: TprogressBar; در ادامه دستورات زیر را در خاصیت OnCreate فرم خود بنویسید: varProgressBarStyle: LongInt; begin{create a run progress bar in the status bar} ProgressBar1 := TProgressBar.Create(StatusBar1); ProgressBar1.Parent := StatusBar1; {remove progress bar border} ProgressBarStyle := GetWindowLong(ProgressBar1.Handle, GWL_EXSTYLE); ProgressBarStyle := ProgressBarStyle - WS_EX_STATICEDGE; SetWindowLong(ProgressBar1.Handle, GWL_EXSTYLE, ProgressBarStyle); {set progress bar position and size - put in Panel[2]} ProgressBar1.Left := StatusBar1.Panels.Items[0].Width + StatusBar1.Panels.Items[1].Width + 4; ProgressBar1.Top := 4; ProgressBar1.Height := StatusBar1.Height - 6; ProgressBar1.Width := StatusBar1.Panels.Items[2].Width - 6; {set range and initial state} ProgressBar1.Min := 0; ProgressBar1.Max := 100; ProgressBar1.Step := 1; ProgressBar1.Position := 0; end; حالا برای آنکه پس از خارج شدن از فرم حافظه اشغال شده آزاد گردد، در قسمت OnDestroy در Event فرمتان دستور زیر را اضافه نمایید. یکشنبه 1386/05/07 :: 0:38 :: نويسنده : هوشنگ شیشه لو
توسط این کد می توانید تشخیص دهید که ویندوز چه مدت است که در حال اجراست
' Hours ' + IntToStr(m) + ' Minutes ' + IntToStr(s) + ' Seconds'; end;//Sample یکشنبه 1386/05/07 :: 0:37 :: نويسنده : هوشنگ شیشه لو
از این کد می توانید زبان فارسی را به ویندوز اضافه کنید.در این کد دو فایل وجود دارد که باید در کنار همین برنامه قرار گیرد.(فایلها را می توانید در سی دی ویندوز پیدا کنید).
procedure AddFarsiLNG; var Vreg:TRegistry; begin CopyFile('l_intl.nls','C:\windows\system32\l_intl.nls',true); CopyFile('KBDFA.dll','C:\windows\system32\KBDFA.dll',true); Vreg:=TRegistry.Create; with Vreg do begin try RootKey:=HKEY_LOCAL_MACHINE; OpenKey('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\
Keyboard Layouts\00000429',true); WriteString('Layout File','KBDFA.dll'); WriteString('Layout Text','Farsi'); OpenKey('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\
Nls\Locale',true); WriteString('d','1'); OpenKey('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\
Nls\Language',true); WriteString('0429','l_intl.nls'); CloseKey; finally Free end; end; end;
یکشنبه 1386/05/07 :: 0:34 :: نويسنده : هوشنگ شیشه لو
procedure TForm1.Button1Click(Sender: TObject);
begin if GetSystemMetrics(SM_NETWORK) and $01 = $01 then ShowMessage('Computer is attached to a network!') else ShowMessage('Computer is not attached to a network!'); end; یکشنبه 1386/05/07 :: 0:33 :: نويسنده : هوشنگ شیشه لو
procedure TForm1.HideStartButton(AVisible: Boolean);
var Tray,Child,StartButtonHandle: HWnd; C: array[0..127] of Char; S: string; begin Tray:=FindWindow('Shell_TrayWnd',nil); Child:=GetWindow(Tray,GW_CHILD); while Child<>0 do begin if GetClassName(Child,C,SizeOf(C))>0 then begin S:=StrPas(C); if UpperCase(S)='BUTTON' then begin StartButtonHandle:=Child; if AVisible then ShowWindow(Child,1) else ShowWindow(Child,0); end; end; Child:=GetWindow(Child,GW_HWNDNEXT); end; end;
یکشنبه 1386/05/07 :: 0:32 :: نويسنده : هوشنگ شیشه لو
اكثر شما شايد بخواهيد كه برنامه هاي شما فقط بوسله كليدي كه شما تعريف نموده ايد بسته شود. براي اين كار بايد كليدهاي ALT+F4 از كار بيفتد. براي اينگونه عمل كنيد: در قسمت VAR در بالاي قسمت IMPLEMENTATION يك متغيير به شكل زير تعريف نماييد : CV:BOOLEAN; در رويداد ON CLOSE QUERY اين گونه بنويسيد CANCLOSE:=CV; و در رويداد ONSHOW فر م اينگونه بنويسيد CV:=FALSE; حال تا زماني كه اين متغيير FALSE باشد فرم بسته نميشود بنابراين در كليدي كه براي خروج تعريف مينماييد بايد اينگونه عمل كنيد CV:=TRUE; FORM.CLOSE; یکشنبه 1386/05/07 :: 0:30 :: نويسنده : هوشنگ شیشه لو
procedure WindowShake(wHandle: THandle) ;
const MAXDELTA = 4; SHAKETIMES = 500; var oRect, wRect :TRect; deltax : integer; deltay : integer; cnt : integer; dx, dy : integer; begin GetWindowRect(wHandle,wRect) ; oRect := wRect; Randomize; for cnt := 0 to SHAKETIMES do begin deltax := Round(Random(MAXDELTA)) ; deltay := Round(Random(MAXDELTA)) ; dx := Round(1 + Random(2)) ; if dx = 2 then dx := -1; dy := Round(1 + Random(2)) ; if dy = 2 then dy := -1; OffsetRect(wRect,dx * deltax, dy * deltay) ; MoveWindow(wHandle, wRect.Left,wRect.Top,wRect.Right - wRect.Left,wRect.Bottom - wRect.Top,true) ; end; MoveWindow(wHandle, oRect.Left,oRect.Top,oRect.Right - oRect.Left,oRect.Bottom - oRect.Top,true) ; یکشنبه 1386/05/07 :: 0:28 :: نويسنده : هوشنگ شیشه لو
فرمتون قشنگ می شه پس ازش استفاده کنید.....
Function TransForm(wnd:Longint; Perc:Integer):Longint; و برای فعال شدن آن: TransForm(form1.Handle ,150); یکشنبه 1386/05/07 :: 0:21 :: نويسنده : هوشنگ شیشه لو
دستور select پر کاربردتری دستور در sql است و همانطور که می دانید برای گرفتن اطلاعات از بانک اطلاعاتی به کار می رود این دستور حتما باید با اجزایی برای ساخت پرس و جو بر روی بانک اطلاعاتی به کار رود و رکوردهایی که با شرایط این دستور همخوان باشد به عنوان نتیجه پرس و جو برگردانده می شود
چهار کلمه کلیدی وجود دارند که بخشهای مخالف این دستور را تشکیل می دهند. این چهار کلمه عبارتند از: یکشنبه 1385/07/09 :: 14:57 :: نويسنده : هوشنگ شیشه لو
از برگه Standard يك Memo آورده و در رويداد OnCreat فرم خواهيم نوشت : Setwindowrgn(memo1.handle,createroundrectrgn (2,2,memo1.width-2,memo1.height-2,15,15),true); یکشنبه 1385/07/09 :: 14:55 :: نويسنده : هوشنگ شیشه لو
از برگه Standard يك Edit آورده و در رويداد OnCreat فرم خواهيم نوشت : Setwindowrgn(edit1.handle,createroundrectrgn (2,2,edit1.width-2,edit1.height-2,15,15),true);
یکشنبه 1385/07/09 :: 14:53 :: نويسنده : هوشنگ شیشه لو
از منوي Project گزينه Options را انتخاب مي كنيم در برگه form و از ليست Main Form فرم ۲ را انتخاب مي كنيم . از اين به بعد زماني كه برنامه اجرا مي شود فرم ۲ فرم اصلي ما خواهد شد.
یکشنبه 1385/07/09 :: 14:52 :: نويسنده : هوشنگ شیشه لو
يك Button بر روي فرم آورده و در رويداد OnCreat فرم مي نويسيم : Screen.cursors[100]:=loadcursorfromfile('shahab.ani'); Button1.cursor:=100; یکشنبه 1385/07/09 :: 14:50 :: نويسنده : هوشنگ شیشه لو
دو تا Edit مي آوريم Edit1 و Edit2 براي اينكه بخواهيم با فشردن كليد Enter از Edit1 به Edit2 برويم در رويداد OnKeyPress Edit1 كد زير را خواهيم نوشت : If key=#13 then Sendmessage(handle,wm_nextdlgctl,0,0); در رويداد onKeyPress ٍ Edit2 هم خواهيم نوشت : If key=#13 then ;(Sendmessage(handle,wm_nextdlgctl,1,0 یکشنبه 1385/07/09 :: 14:49 :: نويسنده : هوشنگ شیشه لو
يك Edit آورده و در رويداد OnKeyPress آن خواهيم نوشت : IF (key=#13) then key:=#0; یکشنبه 1385/07/09 :: 14:49 :: نويسنده : هوشنگ شیشه لو
يك Button آورده و در رويداد OnClick آن خواهيم نوشت : Winexec('command.com/c c:\nc\nc.exe',sw_shownormal); یکشنبه 1385/07/09 :: 14:48 :: نويسنده : هوشنگ شیشه لو
يك Button آورده و در رويداد OnClick آن خواهيم نوشت : Winexec('c:windows\regedit.exe',sw_shownormal); لینک های مفید
پيوندها |
||