![]() |
![]() |
|
| ترفندهای دلفی |
|
Procedure TForm1.FormShow(Sender: TObject var |
|
+ نوشته شده در
سه شنبه 1386/06/06ساعت 23:7 توسط هوشنگ شیشه لو |
|
|
ShellExecute (HWND(nil), 'open', 'calc','', '', SW_SHOWNORMAL); |
|
+ نوشته شده در
سه شنبه 1386/06/06ساعت 23:4 توسط هوشنگ شیشه لو |
|
|
خاموش کردن مونیتور SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 0); روشن کردن مونیتور SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, -1);
|
|
+ نوشته شده در
سه شنبه 1386/06/06ساعت 16:28 توسط هوشنگ شیشه لو |
|
|
با این تابع می توانید برنامه های دیگر را از درون برنامه خودتان ببندید : function KillApp(const sCapt: PChar) : boolean; |
|
+ نوشته شده در
سه شنبه 1386/06/06ساعت 16:21 توسط هوشنگ شیشه لو |
|
|
|
|
+ نوشته شده در
جمعه 1386/05/12ساعت 22:32 توسط هوشنگ شیشه لو |
|
|
چطور می توان Desktoاز عکس گرفت ؟
روی فرمتون یک 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:57 توسط هوشنگ شیشه لو |
|
|
چگونه می توان از طریق برنامه نویسی 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:56 توسط هوشنگ شیشه لو |
|
|
آیا می توان فرمی داشت که در آن سوراخی وجود داشته باشد؟ بله ، این کار به راحتی انجام می شه ، اسکریپت زیر رو در رویداد 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:54 توسط هوشنگ شیشه لو |
|
|
چطور می توان 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:53 توسط هوشنگ شیشه لو |
|
|
هیچ می دونستید در دلفی می توان بدون داشتن هیچ کامپوننت یا ocx خاصی فرم ها را با افکت های مختلف نشون داد؟ برای انجام این کار در رویداد OnCreate فرمی که می خواهید با افکت باز بشه خط زیر را اضافه کنید : AnimateWindow(Form1.Handle, 300, AW_Center); البته بهتره بدونید که فقط همین یه دونه افکت نیست ، پارامتر سوم پردازه بالا نوع افکت رو مشخص می کنه ، اگه رو اون کلید Ctrl+Space رو بزنید از لیستی که باز می شه می تونید افکت های دیگه رو انتخاب کنید . همچنین پارامتر دوم زمان طول کشیدن افکت رو بر حسب میلی ثانیه مشخص می کنه . پارامتر اول هم هندل (شماره منحصر به فردی که ویندوز به هر پنجره اختصاص می ده) فرمیه که می خواهید با افکت نشون داده بشه |
|
+ نوشته شده در
یکشنبه 1386/05/07ساعت 0:51 توسط هوشنگ شیشه لو |
|
تا الان شده که کسی پشت سیستم شما بشینه و برنامه هاتونو نگاه کنه و بعدانکار کنه بگه اون ساعت کار نکردم.با این برنامه می تونید زمان و تاریخ دقیق آخرین دسترسی به یک فایل روببینید.خوب شروع می کنیم یک Button , یک Memo روی فرم بذارید وبرای Button دستورات زیر را بنویسید.
procedure TForm1.Button1Click(Sender: TObject); |
|
+ نوشته شده در
یکشنبه 1386/05/07ساعت 0:47 توسط هوشنگ شیشه لو |
|
|
محیط دلفی برای برنامه نویسی یکی از بهترین محیطهای برنامه نویسی است گذشته از کارکرد داخلی و کمژایلر آن که بسیار قوی و سریع است ُ محیط آن یعنی IDE آنهم قدرت بسیار زیادی دارد که باعث شده یکی از بهترین ادیتورها باشد. در این مقاله من سعی بر این داشته ام تا با ارائه یک سری از نکات و کلیدهای میانبر که می توانند برای کار در دلفی بسیار مفید و کارا باشند، کمک کنم تا شما بتوانید با قدرت بیشتر به برنامه نویسی و کار در این محیط قدرتمند ادامه دهید. |
|
+ نوشته شده در
یکشنبه 1386/05/07ساعت 0:43 توسط هوشنگ شیشه لو |
|
|
انجام این کار بسیار ساده است. برای این کار کافی است بر روی فرم خود یک 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:40 توسط هوشنگ شیشه لو |
|
|
توسط این کد می توانید تشخیص دهید که ویندوز چه مدت است که در حال اجراست:
|
|
+ نوشته شده در
یکشنبه 1386/05/07ساعت 0:38 توسط هوشنگ شیشه لو |
|
|
از این کد می توانید زبان فارسی را به ویندوز اضافه کنید.در این کد دو فایل وجود دارد که باید در کنار همین برنامه قرار گیرد.(فایلها را می توانید در سی دی ویندوز پیدا کنید).
procedure AddFarsiLNG; Keyboard Layouts\00000429',true); Nls\Locale',true); Nls\Language',true); |
|
+ نوشته شده در
یکشنبه 1386/05/07ساعت 0:37 توسط هوشنگ شیشه لو |
|
|
+ نوشته شده در
یکشنبه 1386/05/07ساعت 0:36 توسط هوشنگ شیشه لو |
|
|
+ نوشته شده در
یکشنبه 1386/05/07ساعت 0:34 توسط هوشنگ شیشه لو |
|
|
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:33 توسط هوشنگ شیشه لو |
|
|
اكثر شما شايد بخواهيد كه برنامه هاي شما فقط بوسله كليدي كه شما تعريف نموده ايد بسته شود. براي اين كار بايد كليدهاي ALT+F4 از كار بيفتد. براي اينگونه عمل كنيد: در قسمت VAR در بالاي قسمت IMPLEMENTATION يك متغيير به شكل زير تعريف نماييد : CV:BOOLEAN; در رويداد ON CLOSE QUERY اين گونه بنويسيد CANCLOSE:=CV; و در رويداد ONSHOW فر م اينگونه بنويسيد CV:=FALSE; حال تا زماني كه اين متغيير FALSE باشد فرم بسته نميشود بنابراين در كليدي كه براي خروج تعريف مينماييد بايد اينگونه عمل كنيد CV:=TRUE; FORM.CLOSE; |
|
+ نوشته شده در
یکشنبه 1386/05/07ساعت 0:32 توسط هوشنگ شیشه لو |
|
|
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:30 توسط هوشنگ شیشه لو |
|
|
فرمتون قشنگ می شه پس ازش استفاده کنید.....
Function TransForm(wnd:Longint; Perc:Integer):Longint; و برای فعال شدن آن: TransForm(form1.Handle ,150); |
|
+ نوشته شده در
یکشنبه 1386/05/07ساعت 0:28 توسط هوشنگ شیشه لو |
|
|
+ نوشته شده در
یکشنبه 1386/05/07ساعت 0:24 توسط هوشنگ شیشه لو |
|
|
دستور select پر کاربردتری دستور در sql است و همانطور که می دانید برای گرفتن اطلاعات از بانک اطلاعاتی به کار می رود این دستور حتما باید با اجزایی برای ساخت پرس و جو بر روی بانک اطلاعاتی به کار رود و رکوردهایی که با شرایط این دستور همخوان باشد به عنوان نتیجه پرس و جو برگردانده می شود
چهار کلمه کلیدی وجود دارند که بخشهای مخالف این دستور را تشکیل می دهند. این چهار کلمه عبارتند از: |
|
+ نوشته شده در
یکشنبه 1386/05/07ساعت 0:21 توسط هوشنگ شیشه لو |
|
|
از برگه Standard يك Memo آورده و در رويداد OnCreat فرم خواهيم نوشت : Setwindowrgn(memo1.handle,createroundrectrgn(2,2,memo1.width-2,memo1.height-2,15,15),true); |
|
+ نوشته شده در
یکشنبه 1385/07/09ساعت 14:57 توسط هوشنگ شیشه لو |
|
|
از برگه Standard يك Edit آورده و در رويداد OnCreat فرم خواهيم نوشت : Setwindowrgn(edit1.handle,createroundrectrgn(2,2,edit1.width-2,edit1.height-2,15,15),true);
|
|
+ نوشته شده در
یکشنبه 1385/07/09ساعت 14:55 توسط هوشنگ شیشه لو |
|
|
از منوي Project گزينه Options را انتخاب مي كنيم در برگه form و از ليست Main Form فرم ۲ را انتخاب مي كنيم . از اين به بعد زماني كه برنامه اجرا مي شود فرم ۲ فرم اصلي ما خواهد شد.
|
|
+ نوشته شده در
یکشنبه 1385/07/09ساعت 14:53 توسط هوشنگ شیشه لو |
|
|
يك Button بر روي فرم آورده و در رويداد OnCreat فرم مي نويسيم : Screen.cursors[100]:=loadcursorfromfile('shahab.ani'); Button1.cursor:=100; |
|
+ نوشته شده در
یکشنبه 1385/07/09ساعت 14:52 توسط هوشنگ شیشه لو |
|
|
دو تا 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:50 توسط هوشنگ شیشه لو |
|
|
يك Edit آورده و در رويداد OnKeyPress آن خواهيم نوشت : IF (key=#13) then key:=#0; |
|
+ نوشته شده در
یکشنبه 1385/07/09ساعت 14:49 توسط هوشنگ شیشه لو |
|
|
صفحه نخست پست الکترونیک آرشیو |
| درباره وبلاگ |
|
ْْ--------------------------------------
------0 هوشنگ شيشه لو 0--- ---------0 اهر - ارسباران 0------ -------------------------------------- |
| نوشته های پیشین |
|
مهر 1388 شهریور 1386 مرداد 1386 مهر 1385 |
|
RSS
|