PDA

View Full Version : ساده ترین کد که می توان برای این برنامه نوشت چیست؟



drahmadtaraffoo
دوشنبه 24 خرداد 1389, 19:43 عصر
بسم الله الرحمن الرحیم
دوستان سلام
ساده ترین کدی که می توان برای این برنامه نوشت چیست؟
متشکرم

Felony
دوشنبه 24 خرداد 1389, 20:33 عصر
برنامه چی کار میکنه ؟

مثل اینکه در برنامه از تایمر استفاده شده ، با اجرای برنامه در ویندوز 7 نسخه 64 بیت بعد از 2 ثانیه برنامه فریز و بسته میشه .

SAASTN
سه شنبه 25 خرداد 1389, 00:09 صبح
دقیقا نفهمیدم برنامه چیکار می کنه، ولی اگه منظور Caption متحرک و بقیه مسائل ظاهریه:

drahmadtaraffoo
چهارشنبه 26 خرداد 1389, 15:39 عصر
بسم الله الرحمن الرحیم
دوست عزیز سلام
همانطور که مشاهده می کنید لیستی از درایوهای کامپیوتر شما شناسایی شده و با کلیک روی نام هر درایو بلافاصله درایو مورد نظر باز می شود.
من ساده ترین کد را برای این کار می خواستم
متشکرم

SAASTN
چهارشنبه 26 خرداد 1389, 23:26 عصر
همانطور که مشاهده می کنید لیستی از درایوهای کامپیوتر شما شناسایی شده و با کلیک روی نام هر درایو بلافاصله درایو مورد نظر باز می شود.
روی سیستم من بعد از کلیک روی موارد لیست هیچ اتفاقی نمی افته، ولی تو شرکت چک کردم همونطور که گفتید explorer باز می شه! هر دو تا سیستم هم xp.
به هر صورت تغییر مد نظر رو دادم:

majidbestgame
پنج شنبه 27 خرداد 1389, 00:09 صبح
سلام....
میشه گفت یکی از ساده ترین برنامه هایی که میتوان نوشت اینه چون سر هم 4..5 خط کد بیشتر لازم نداره...
ابتدا در بخش uses .... shellapi رو اضافه کنید سپس یک کامپونت Drivecombobox از تب Win 3.1 به فرم اضافه کنید و در رویداد Onkeypress کد زیر رو بنویسید


procedure TForm1.DriveComboBox1KeyPress(Sender: TObject; var Key: Char);
var s:string;
begin
if getasynckeystate(vk_Return)<> 0 then begin
s:=drivecombobox1.Drive+':\';
shellexecute(handle,'Open',pchar(s),nil,nil,SW_nor mal);
keybd_event(ord(VK_return),0,0,0);
form1.Show;
end;
end;


این از فایل ها که ضمیمه کردم...امیدوارم بتونه کمک کنه

holyspirit
پنج شنبه 27 خرداد 1389, 12:28 عصر
به هر صورت تغییر مد نظر رو دادم:
سلام ! ممنون میشم اگه در مورد کار این کدها مختصری توضیح بدین !:لبخندساده:
procedure TForm1.WMNCHitTest(var Msg: TWMNCHitTest);
begin
inherited;
if Msg.Result = htClient then Msg.Result := htCaption;
end;

procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
SendMessage(Form1.Handle, WM_SYSCOMMAND, 61458, 0) ;
end;

SAASTN
جمعه 28 خرداد 1389, 23:29 عصر
سلام ! ممنون میشم اگه در مورد کار این کدها مختصری توضیح بدین !
سلام. ببخشید که کمی دیر ...
procedure TForm1.WMNCHitTest(var Msg: TWMNCHitTest);
begin
inherited;
if Msg.Result = htClient then Msg.Result := htCaption;
end;

اگه توجه کرده باشین BorderStyle فرم به bsNone تغییر کرده که با عث می شه TitleBar فرم حذف بشه (تا خودمون بصورت متحرک شبیه سازیش کنیم). توی این بخش می خواهیم کاری کنیم با Drag کردن روی فرم عمل Move یا جابجایی انجام بشه. روال WMNCHitTest بعد از همه رویداد های mouse اجرا میشه و ما با بازنویسی این روال کاری می کنیم که ویندوز تصور کند که موس بجای محیط Client فرم روی TitleBar آن Drag (یا رویداد های دیگر) شده.
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
SendMessage(Form1.Handle, WM_SYSCOMMAND, 61458, 0) ;
end;
توی اینجا هم مسئله اینه که ما توی فرممون یه Panel به عنوان TitleBar قرار دادیم و باید کاری کنیم که Messageی که برای Panel اومده متوقف بشه و بجاش پیغامی برای فرم ارسال بشه.

منبع: http://delphi.about.com/od/windowsshellapi/a/dragnocaption.htm

موفق باشید

پ . ن: این دو بخش ربطی به موضوع اصلی مد نظر شما در برنامه ای که گذاشتید ندارند. همونطور که قبلا هم گفتم من اول مثال شما رو روی سیستم خونه چک کردم که اینجا بعد از انتخاب درایو ها هیچ اتفاقی نمی افته! و چون توضیح بیشتری هم توی متن سوال نبود من تصور کردم که شما قصد شبیه سازی فرم برنامه مثال رو دارید و برای همین برنامه اول رو نوشتم. توی برنامه دوم هم که همون قضیه باز شدن explorer رو درست مثل majidbestgame با ShellExecute پیاده کردم، اما مثل برنامه مثال توی OnChange .