معلم دلفی

چهارشنبه، دی ۰۲، ۱۳۸۳

چگونه می توان یک سایت وب را با برنامه دلفی در یک فایل ذخیره کرد
نمونه سورس کد دلفی
Here's how to save a web page as raw HTML using Delphi code:

uses ActiveX;
...
procedure WB_SaveAs_HTML
(WB:TWebBrowser; const FileName : string);
var
PersistStream: IPersistStreamInit;
Stream: IStream;
FileStream: TFileStream;
begin
if not Assigned(WB.Document) then
begin
ShowMessage('Document not loaded!');
Exit;
end;

PersistStream := WB.Document as IPersistStreamInit;
FileStream := TFileStream.Create(FileName, fmCreate);
try
Stream := TStreamAdapter.Create(FileStream, soReference)
as IStream;
if Failed(PersistStream.Save(Stream, True)) then
ShowMessage('SaveAs HTML fail!');
finally
FileStream.Free;
end;
end; (* WB_SaveAs_HTML *)

Usage sample:

//first navigate
WebBrowser1.Navigate('http://delphi.about.com');

//then save
WB_SaveAs_HTML(WebBrowser1,'c:\WebBrowser1.html');



پنجشنبه، آذر ۱۲، ۱۳۸۳

جستجو در بانک اطلاعاتی

آقای وکیلی در سایت زیر توضیحات مناسبی را بهمراه عکس در مورد روشهای جستجو در بانک اطلاعاتی منتظر کرده اند . اگر نمی دانید روشهای محتلف جستجو چیه حتما این مطلب را بخوانید.
روشهای جستجو در بانک اطلاعاتی

برنامه هائي براي برطرف کردن مشکل بانک اطلاعاتي پارادکس

همانطور که در مطلب قبلي مطرح کردم بانک اطلاعاتي پارادکس در مواردي که برنامه شما ناگهاني بسته شود ( بدليل قطع برق يا مشکل ويندوز يا هر دليل ديگري) مشکل پيدا مي کند. براي حل اين مشکل رعايت موارد زير در برنامه نويسي مي تواند اختمال بروز آنرا کمک کند
اول اينکه تا زمانيکه نياز نداريد بانکهاي خودتان را بصورت فقط خواندني باز کنيد. براي اينکه بتوانيد بانک خودتان را فقط خواندني کنيد بايد ميژگي مربوطه به کامپوننت را تنظيم کنيد.
Table1.Readonly:=True;
دوم اينکه اگر مي خواهيد اطلاعاتي را در بانک خود ويرايش کنيد يا اضافه کنيد بهتر ايت بحاي اينکه قبل از وارد کردن اطلاعات آنرا باز کيند ، ابتدا اطلاعات را از کاربر گرفته و سپس در يک تابع مشخص اين اطلاعات را همراه همديگر در بان اضافه کنيد.
اگر شما اول بانک را در مد اضافه قرار دهيد و بعد شروع کنيد به گرفتن اطلاعات از کاربر احتمال بروز خطا در سيستم را افزايش داده ايد. روش پيشنهادي مي توانيد در بسياري از موارد از بروز خطا جلوگيري کند.
اما اگر با همه اين موارد بازهم بانک شما مشکل پيدا کرد بايد با استفاد از برنامه هاي موجود در اينترنت يا برنامه اي که خودتان مي نويسيد بانکتان را درست کنيد
در ليست زير لينک دانلود يا سايت اين برنامه را ذکر کرده ام.

Index Rebuilder

chimneysweep
علاوه بر اين شما خودتان هم مي توانيد اين برنامه ها را بنويسيد. کاري که بايد انجام دهيد حذف ايندکس هاي جدول خودتان و بازسازي مجدد آنها بر دقيقا مانند همان که قبلا بوده ااست.

سه‌شنبه، آبان ۱۹، ۱۳۸۳

Reading and Writing port in Delphi

سوال :
چگونه می توان در دلفی پورتهای کامپیوتر را خواند یا بر روی آنها نوشت؟
جواب :
در این زمینه من آدرس سایتهائی را می دهم که می توانید سورس کد های رایگان در این زمینه در آنجا پیدا کنید.
http://users.pandora.be/dirk.claessens2/downloads/tcomport.zip
این یکی از بهترینهائی است که من می شناسم. برنامه را دانلود کنید و با استفاده از مثالی آن کار خودتان را انجام دهید.
اینهم یک لینک قدیمی اما مفید
http://www.programmersheaven.com/zone2/cat55/14573.htm
در این سایت می توانید برنامه را دانلود کنید و استفاده کنید.
در این آدرس هم به زبان انگلیسی توضیحاتی در این زمینه ارائه شده که مفید هستند
http://www.wideman-one.com/gw/tech/Delphi/iopm/

یکشنبه، آبان ۱۰، ۱۳۸۳

How to call the View Source dialog in WebBrowser

برداشتي از سايت http://delphi.about.com
اگر مي خواهيد تابع ViewSource از مرورگر اينترنت خودتان را صدا بزنيد با برنامه نمونه زير مي توانيد اينکار را انجام دهيد
براي اينکار کافيست يک فرم و يک Buttom و يک TWebBrowser داشته باشيد
و برنامه زير را استفاده کنيد.



~~~~~~~~~~~~~~~~~~~~~~~~~
uses ActiveX;

procedure WBViewSourceDialog(AWebBrowser: TWebbrowser) ;
const
CGID_WebBrowser: TGUID = '{ED016940-BD5B-11cf-BA4E-00C04FD70816}';
HTMLID_VIEWSOURCE = 2;

var
CmdTarget : IOleCommandTarget;
vaIn, vaOut: OleVariant;
PtrGUID: PGUID;
begin
New(PtrGUID) ;
PtrGUID^ := CGID_WebBrowser;
if AWebBrowser.Document <> nil then
try
AWebBrowser.Document.QueryInterface(IOleCommandTarget, CmdTarget) ;
if CmdTarget <> nil then
try
CmdTarget.Exec(PtrGUID, HTMLID_VIEWSOURCE, 0, vaIn, vaOut) ;
finally
CmdTarget._Release;
end;
except
end;
Dispose(PtrGUID) ;
end;

procedure TForm1.FormCreate(Sender: TObject) ;
begin
WebBrowser1.Navigate('http://www.delphi.about.com') ;
end;

procedure TForm1.Button1Click(Sender: TObject) ;
begin
WBViewSourceDialog(WebBrowser1) ;
end;

چهارشنبه، آبان ۰۶، ۱۳۸۳

Simulating keystrokes from code


procedure PostKeyEx32(key: Word; const shift: TShiftState; specialkey: Boolean) ;

پارامترها:
Key
کد انسی مروبط به کلیدی که می خواهید فشرده شدن آنرا شبیه سازی کنید
Shift
مشخص کننده وضعیت کلید شیفت
SpecialKey
معمولا باید مقدار نادرست را برای این پارمتر در نظر گرفت مگر اینکه بخواهید بخش کی پد را شبیه سازی کنید.


type
TShiftKeyInfo = record
shift: Byte ;
vkey: Byte ;
end;
ByteSet = set of 0..7 ;
const
shiftkeys: array [1..3] of TShiftKeyInfo =
((shift: Ord(ssCtrl) ; vkey: VK_CONTROL),
(shift: Ord(ssShift) ; vkey: VK_SHIFT),
(shift: Ord(ssAlt) ; vkey: VK_MENU)) ;
var
flag: DWORD;
bShift: ByteSet absolute shift;
j: Integer;
begin
for j := 1 to 3 do
begin
if shiftkeys[j].shift in bShift then
keybd_event(shiftkeys[j].vkey, MapVirtualKey(shiftkeys[j].vkey, 0), 0, 0) ;
end;
if specialkey then
flag := KEYEVENTF_EXTENDEDKEY
else
flag := 0;

keybd_event(key, MapvirtualKey(key, 0), flag, 0) ;
flag := flag or KEYEVENTF_KEYUP;
keybd_event(key, MapvirtualKey(key, 0), flag, 0) ;

for j := 3 downto 1 do
begin
if shiftkeys[j].shift in bShift then
keybd_event(shiftkeys[j].vkey, MapVirtualKey(shiftkeys[j].vkey, 0), KEYEVENTF_KEYUP, 0) ;
end;
end;


برای استفاده از تابع بالا می توانید از مثال زیر استفاده کنید


~~~~~~~~~~~~~~~~~~~~~~~~~
Example of usage:
~~~~~~~~~~~~~~~~~~~~~~~~~
procedure TForm1.SpeedButton1Click(Sender: TObject) ;
begin
// Simulate PRINTSCREEN - snapshot of the full screen
PostKeyEx32(VK_SNAPSHOT, [], False) ;

// Simulate PRINTSCREEN - snapshot of the active window
PostKeyEx32(VK_SNAPSHOT, [ssAlt], False) ;

// Simulate left Windows key
PostKeyEx32(VK_LWIN, [], False) ;

// Simulate Alt+F4 - close active window
PostKeyEx32(VK_F4, [ssAlt], False) ;
end;



Delphi Teacher

شنبه، آبان ۰۲، ۱۳۸۳

Getting Serial Number of a disk

برای خواندن سریال یک درایو می توانید از نمونه های زیر استفاده کنید :
نمونه اول


var
VolSerNum: DWORD;
Dummy1, Dummy2: DWORD;
begin
if GetVolumeInformation('c:\', NIL, 0, @VolSerNum, Dummy1, Dummy2, NIL, 0) then
ShowMessage(Format('%.4x:%.4x', [HiWord(VolSerNum), LoWord(VolSerNum)]));
end;


نمونه دوم

function GetSerialNumber(Const ADrive: Char): Integer;
var
SerialNum : pdword;
a, b : dword;
Buffer : array[0..255] of char;
begin
Result:=0;
if GetVolumeInformation(PChar(ADrive+':\'),
Buffer,
SizeOf(Buffer),
SerialNum,
a,
b,
nil,
0) then
Result:=SerialNum^;
end;

پنجشنبه، مهر ۲۳، ۱۳۸۳

تاريخچه زبان دلفي


در يان مقاله شما با تاريحچه زبان دلفي از دلفي ١ تا دلفي ٦ آشنا مي شويد.

"
تاريخچه دلفي

در قلب دلفي ،يك كامپايلر (همگردان) پاسكال است . دلفي 6 مرحله ديگري از تكامل همان كامپايلر پاسكالي است كه شركت بورلند از هنگامي كه (17 سال پيش) Anders Hejlberg ، اولين كامپايلر توربو پاسكال را نوشت مشغول توسعه آن بوده است . طي سالها ، برنامه نويسان پاسكال از پايايي و موزون بودن و نيز سرعت كامپايل كه توربو پاسكال ارائه مي دهد ، لذت برده اند . دلفي 6 نيز از اين صفات مستثني نيست ، كامپايلر آن تركيبي از يك دهه تجربه كامپايلر و پيشرفته ترين كامپايلر بهينه ساز 32 بيتي است . با وجود رشد قابل توجه قابليت هاي كامپايلر در طي چندين سال ، سرعت كامپايل به طرز جالب توجهي تنها اندكي كم شده است . علاوه بر اين ، پايداري كامپايلر دلفي مي رود تا معيار و نمونه اي براي سايرين باشد .

"

شنبه، مهر ۱۸، ۱۳۸۳

Delphi Printing Info and Links

حعمولا بیشتر کامپوننتهای دلفی تابع پرینتر را ارائه می کنند . اما در حالتی این امکان وجود ندارد یا اینکه برنامه نویس می خواهد مدیریت چاپگر را در برنامه انجام دهد توابع موجود در کتابخانه زیر می تواند کمک زیادی بکند.
Printer.pas
برای استفاده از این کتابخانه بایستی آنرا در بالای برنامه Uses کنید
علاوه بر این در آدرس زیر لینکهای زیادی در مورد انواع و اقسام کارکردهای چاپگر ارائه شده است که مطالعه آنها برای برنامه نویسی مناسب و مفید است.
efg's Computer Lab -- Delphi Printing Info and Links

پنجشنبه، مهر ۱۶، ۱۳۸۳

Farsi Components . ShDate Solutions

بيشتر دوستاني کخ با بانکهاي اطلاعاتي کار ميکنند و مي خواهند تاريخ را بصورت شمسي وارد بانک خود کنند با مشکل تبديل تاريخ ميلادي به شمسي مواجه هستند.
در اين سايت شما مي توانيد کامپوننتي را دانلود کنيد که اينکار را براي شما انجام مي دهد.
سورس کد برنامه به زبان دلفي هم موجود است.
Farsi Components . ShDate Solutions
البته نسخه آزمايشي برنامه قابل دانلود است . براي استفاده از بنامه اصلي بايد هزنيه اي را داد.

یکشنبه، مهر ۱۲، ۱۳۸۳

Farsi in Delphi

سوال :
آیا می توان در دلفی برنامه ای نوشت که به فارسی باشد و در تمام ویندوزهای غیر فارسی هم کار کند؟
جواب :
بله
روش کار :
برای اینکه بتوانید برنامه ای بنویسید که در تمام سیستمهای ویندوز کار کند باید از فارسی شبیه به ایران سیستم قدیمی استفاده کنید.
ایران سیستم ( که در سیستم عامل داس زیاد استفاده می شد) مانند یک فونت انگلیسی در برنامه شما استفاده می شود. شما بایستی تمام کامپوننتهای برنامه را طوری تغییر دهید که مثلا راست به چپ آن در ورود اطلاعات یا نمایش اطلاعات درست کار کند. اینکار زحمت زیادی دارد.
اما اگر فارسی نویسی را به ویندوزهای جدید محدود کنید می توانید از همان کامپوننتهای معروف تی ان تی استفاده کنید.
برای اطلاعات بیشتر مراجعه کنید به مطلبی که قبلا با همین عنوان نوشته بودم.
http://www.webrah.com/delphi/2004/06/delphi-unicode-farsi.html

پنجشنبه، مهر ۰۹، ۱۳۸۳

Image Processing in Delphi - JEDI Component

در اين سايت مطلبي در اين زمينه با نمونه سورس کد ارائه شده است.

براي دوستاني که علاقه مند به پردازش تصاوير هستند اين نمونه برنامه مناسبي است.
اما اگر بدنبال امکانات بيشتر هستيد مي توانيد از مجموعه کامپوننتهاي JEDI استفاده کنيد.
براي اطلاعات بيشتر در مورد اين کامپوننتهاي مي توانيد به آدرس زير مراجعه کنيد:
http://www.delphi-jedi.org/
البته مجموعه کامپوننتهائي که معرفي کردم خيلي بيشتر از کار پردازش تصوير را انجام ميدهندو در حقيقت در تمام بخشهاي برنامه نويسي با دلفي کامپوننتهاي زيابئي را ارائه مي کند.
نکته جالب اينکه اين کامپوننتها همگي رايگان و اپن سورس هستند. يعني شما مي توانيد آنها را تغيير داده و کامپوننتهاي جديد را براي خودتان درست کنيد.

یکشنبه، مهر ۰۵، ۱۳۸۳

Shamsi date in Delphi

تبدیل تاریخ میلادی به خورشیدی (شمسی)

نویسنده : کامبیز خجسته
سایت : http://www.delphiarea.com
میل : kambiz@delphiarea.com
Download
با این تابع میتوانید تاریخ میلادی را به خورشیدی و همچنین خورشیدی به میلادی تبدیل کنید و مزیت این یونیت (Unit) در محاسبه دقیق تاریخ است. یک مثال در فایل موجود است.

Search in Table in Delphi

راهنماي برنامه نويسان - روشهاي جستجو (قسمت 1)
در هر سيستم بانك اطلاعاتي پس از حل مسائل مربوط ورود اطلاعات اولين مسئله مهمي كه برنامه نويس بايد به حل آن فكر كند مسئله جستجو در اطلاعات وارد شده مي باشد . در برخي ازبرنامه ها فقط قدرت جستجوي اطلاعات يك پارامتر بسيار اساسي در محبوبيت برنامه مي باشد

Paradox : Index out of date

در بعضي از مواردي که با جدولهاي پارادکس کار ميکنيد با اين پيام خطا مواجه مي شويد.
اول از همه بايستي برنامه خودتان را بررسي کنيد. احتمالا در برنامه شرايطي داريد که بدون بستن جدول پارادکس برناه بصورت غير عادي به پايان مي رسد. استفاده از دستوراتي مانند دستورات زير براي پايان دادن به برنامه مي تواند باعث بوجود آمدن اين ايراد شود.
Application.Treminate
Halt
و يا رخ دادن خطاهاي اساسي در برنامه و بسته شدن خودکار برنامه مي تواند اين خطا را در بانک ايجاد کند.
براي جلوگيري از بروز اين خطا در جدول بايستي در بخشي از برنامه که با جداول کار مي کنيد بيشترين دقت را بکار ببريد. رعايت کردن موارد زير مي تواند به شما در اين زمينه کمک زيادي بکند
١- عدم استفاده از دستوراتي که در بالا ذکر شد تا حد امکان
٢- مديريت خطاهاي سيستم توسط برنامه
٣- تا حد امکان از باز نگه داشتن بانکهاي اطلاعاتي خود در طول برنامه جلوگيري کنيد. زمانيکه با بانک اطلاعاتي کاري نداريد آنرا ببنديد.
٤- زمانيکه فقط مي خواهيد از بانک اطلاعاتي خودتان بخوانيد و نيازي به نوشتن يا ويرايش بانک نداريد، بانک را در حالت فقط خواندني باز کنيد. با تنشيم يک مشخصه کامپوننت مي توانيد به اين مهم دست پيدا کنيد.

در انتها اگر به هر دليلي به اين ايراد برخورد کرديد بايستي ايندکسهاي جدول را حذف کرده و مجددا بسازيد. اينکار مي تواند دستي و با برنامه موجود در دلفي انجام شود يا اينکه در برنامه بخشي براي دوباره سازي ايندکس هاي خراب شده درست کنيد که کاربر بتواند در مواقع شرور از آن استفاده کند.

چهارشنبه، شهریور ۲۵، ۱۳۸۳

Delphi 9: unofficial pre-release "review"

Delphi 9: unofficial pre-release "review"
شرکت بولند در دلفي ٩ سنگ تمام گذاشته.
علاوه بر پشتيباني دلفي قديمي و دلفي دات نت ، زبان سي شارپ را هم پشتيباني مي کند.
در ضمن يک دستور حلقه مربوط به سي شارپ را هم اضافه کرده است..
در يک فرصت مناسب امکانات جديد اين نگارش دلفي را به شما معرفي خواهم کرد.

چهارشنبه، شهریور ۱۸، ۱۳۸۳

Essential Delphi

Essential Delphi
اگر علاقه مند به یادگرفتن دلفی هستید و مشکل زبان انگلیسی هم ندارید می توانید این کتاب را دانلود کنید و از آن لذت ببرید.
نویسنده این کتاب بهترین کتابها را در زمینه دلفی نوشته و کتابهایش فروش زیادی داشته است.

Essential Delphi 8 for .NET

Essential Delphi 8 for .NET
یکی از کتابهائی است که در مورد نگارش جدید دلفی نوشته شده است.
دلفی در نگارش جدید کلیه امکانات برناه را تغییر داده است و برنامه نویسانی که قبلا با دلفی 7 به پائین کار کرده اند بایستی مطالب زیادی را یاد بگیرند.
در ضمن در دلفی 8 محیط برنامه نویسی هم عوض شده و به نظر من بیشتر شبیه محیط وی بی است.

یکشنبه، شهریور ۱۵، ۱۳۸۳

تشخیص سی دی درایو کامپیوتر

با برنامه زیر می توانید اسم سی دی درایو را پیدا کنید. کار این تابع در زمانی است که می خواهید بر روی سی دی کار کنید و مثلا وجود فایل خاصی را بررسی کنید.

Function GetCDDriveName:String;
var s:String; Found:Boolean;
begin
s:='d:\';
Found:=False;
While (Not Found) and Not (s[1] In ['z','Z']) Do
begin
If getdrivetype(PChar(s)) = DRIVE_CDROM then
Found:=True
Else
s[1]:=Chr(Ord(s[1])+1);
end;
If Found then
GetCDDriveName:=s
Else
GetCDDriveName:='';
end;

این تابع نام سی دی درایو را در خروجی بر می گرداند. در صورتیکه سی دی درایوی نباشد مقدار آن خالی است.

پنجشنبه، شهریور ۰۵، ۱۳۸۳

Unified Modeling Language Guide

برای اینکه بتوانید با ModelMaker کار کنید
آشنائی با مفاهیم UML ضروری است.
به همین دلیل سایتی را معرفی می کنم که به زبان انگلیسی به معرفی این مفاهیم و آموزش آنها با استفاده از مثالهای متنوع را دارد.
Unified Modeling Language Guide

شنبه، مرداد ۳۱، ۱۳۸۳

Delphi - UML - ModelMaker

UML یکی از استفاندارهای طراحینرم افزار است که مدتیست در ایران هم مورد توجه قرار گرفته است.
شرکت بورلند هم از دلفی هفت به بعد امکان طراحی نرم افزار با متودولوژی یو ام ال را فراهم کرده است.
این مهم با کمک یک برنامه جانبی به نام Model Maker امکانپذیر شده است.
برای آشنائی بیشتر با این برنامه و همچنین یادگیری استفاده از این برنامه می توانید به آدرس زیر مراجعه کنید.
ModelMaker Tutorials

در این سایت می توانید با بخشهای مختلف مدلساز آشنا شوید . بعنوان شروع می توانید برنامه های قبلی را که با دلفی نوشته اید را در این برنامه وارد کرده و با استافده از تکنیک مهندسی معکوس از یک برنامه آماده طرح یو ام ال و مستندات آنرا تولیبد کنید.

سه‌شنبه، مرداد ۲۰، ۱۳۸۳

یک سایت خوب در زمینه ترقندهای دلفی

در این وبلاگ می توانید با تعدادی از ترفندهای برنامه نویسی دلفی آشنا بشوید.

دوشنبه، مرداد ۱۹، ۱۳۸۳

Saving a website as html file

چگونه می توان محتوای یک سایت را بصورت HTM ذخیره کرد
شاید تا بحال با این مشکل برخورد کرده باششید که بخواهید محتوای یک سایت را با دادن آدرس آن در یک فایل ذخیره کنید. همانطور که می دانید در مرورگر اینترنت اینکار با انتخاب منوی فایل امکانپذیر است.
در زبان دلفی با استفاده از کامپوننت زیر می توانید یک آدرس را داده و محتوای آن صفحه را ببینید.
TWebBrowser
اما برای اینکه بتوانید محتوای خوانده شده را ذخیره کنید باید برنامه آنرا بصورت زیر بنویسید:


uses ActiveX;
...
procedure WB_SaveAs_HTML(WB:TWebBrowser; const FileName : string);
var
PersistStream: IPersistStreamInit;
Stream: IStream;
FileStream: TFileStream;
begin
if not Assigned(WB.Document) then
begin
ShowMessage('Document not loaded!');
Exit;
end;
PersistStream := WB.Document as IPersistStreamInit;
FileStream := TFileStream.Create(FileName, fmCreate);
try
Stream := TStreamAdapter.Create(FileStream, soReference) as IStream;
if Failed(PersistStream.Save(Stream, True)) then
ShowMessage('SaveAs HTML fail!');
finally
FileStream.Free;
end;
end; (* WB_SaveAs_HTML *)




چهارشنبه، مرداد ۰۷، ۱۳۸۳

یک سایت خوب در مورد ترفندهای دلفی

http://Keyvan10.tripod.com/Delphi/index.htm
شما در این سایت می توانید ترفندهای زیادی را مشاهده کنید که همگی با زبان دلفی نوشته شده اند:
به دست آوردن مختصات ماوس در صفحه نمایش:
تغییر دادن مختصات ماوس:

جابجا کردن یک جسم با ماوس:

چگونه برنامه در حال اجرایی را ببندیم؟ :

جلوگیری از بستن برنامه توسط کاربر :

ترفندهای دیگر:

چگونه شکل یک Cursor را در یک TImage رسم کنیم؟

چگونه Resulotion مانیتور را تغییر دهیم؟

چگونه ماوس را پنهان و یا آشکار کنیم؟

تبدیل فرمت BMP به JPEG و فشرده سازی و ذخیره آن

چگونه کد HTML یک رنگ را از RGB به دست آوریم ؟

چگونه یک Canvas برای Desktop نسبت بدهیم و روی دسکتلپ کار کنیم؟

چگونه یک فایل را کپی کنیم؟

چگونه یک جسم در زمان اجرای برنامه بسازیم؟

چگونه از نشان دادن دکمه برنامه در TaskBar جلوگیری کنیم؟

چگونه نام کاربر را بیابیم؟

ساختن ShortCut از برنامه در زمان اجرا

چگونه از داخل برنامه منوی Start را باز کنیم؟

چگونه پنجره یک برنامه در حال اجرا را پنهان کنیم؟

چگونه پنجره یک برنامه در حال اجرا را جابجا کنیم؟

چگونه از داخل برنامه CD ROM را باز و بسته کنیم؟

چگونه عمل کلیک ماوس را شبیه سازی کنیم؟

چگونه فشار دادن و رها کردن کلیدهای کیبورد را شبیه سازی کنیم؟

چگونه کلیدهای Caps Lock,Num Lock, Scroll Lock را روشن یا خاموش کنیم؟

چگونه مانیتور را به حالت Stand By کنیم؟

چگونه از داخل برنامه EMail بفرستیم؟

و .........






شنبه، تیر ۲۷، ۱۳۸۳

یک سوال برنامه نویسی و جواب معلم دلفی

سوال :
من اخيرا شروع به برنامه نويسي در محيط دلفي 7 کرده ام (البته با کمي پيش زمينه در زبان سي پلاس پلاس که داشته ام)  سئوال من اين است:
بطور مثال سه تا Edit ايجاد کرده ام و ميخواهم بعداز زدن کليد Enter از Edit اول به Edit دوم و الي آخر بروم البته اينکار خودتان مستحضريد با کليد Tab شدني است ولي من نتوانستم با کليد Enter اينکار را بکنم. لطفا راهنمائي ام فرمائيد.
 
جواب : (معلم دلفی)
برای اینکار باید بر روی رخداد زیر برنامه بنویسید :
onKeyPress
برای هر کامپوننت می توانید اینکار را انجام دهید. کد زیر را در این رحداد برای هر کدام بنویسید :
این کد را برای اولین کامپوننت بنویسید :
If key=#13 then
Edit2.Setfocus
در خط اول تشحیص می دهید که آیا کلید Enter زده شده یا نه. در خط دوم با دستور SetFocus می توانید وضعیت فعال را به کامپوننت دیگر انتفال دهید.
برای هر کامپوننت اسم کامپوننت بعدی را برای رفتن بدهید.
در آخر هم همان کاری را که می خواهید انجام دهید برنامه اش را بنویسید.
سوالات خودتان در برنامه نویسی دلفی برای من بفرستید و من جواب آنرا برای شما می فرستم.

پنجشنبه، تیر ۱۸، ۱۳۸۳

برنامه نويسى مبتنى بر رويداد در وب

سخا روش - ASP.NET - با ارائه يک مدل برنامه نويسى مبتنى بر رويداد ، تحولات مهمى را در خصوص طراحى و پياده سازى برنامه هاى وب ، ايجاد نموده است . برنامه نويسى مبتنى بر رويداد ايده جديدى نبوده و تاکنون شاهد استفاده از آن در سيستم هاى متعددى بوده ايم. مثلا" بخش رابط کاربر( اينترفيس ) سيستم عامل ويندوز ، يک محيط مبتنى بر رويداد است که صرفا" پس از تحقق يک رويداد،عملياتى انجام خواهد شد .پس از بروز يک رويداد و تشخيص آن، برنامه مربوطه فعال و مسئوليت پاسخگوئى به رويداد را برعهده خواهد گرفت . مثلا" زمانى که بر روى يک آيکون موجود بر روى Desktop کليک نموده و يا منوى Start ، فعال مى گردد ، يک رويداد ايجاد و برنامه مرتبط با آن فعال مى گردد.ASP.NET با وضعيتى مشابه آنچه گفته شد با رويدادها برخورد مى نمايد .
در فرم هاى وب ASP.NET که مسئوليت ارائه بخش رابط کاربر برنامه هاى وب را برعهده دارند ، رويدادها داراى جايگاهى خاص بوده و به محض ايجاد يک رويداد ، کد مرتبط با آن اجراء مى گردد.با استفاده از امکانات ارائه شده در HTML ، امکان اجراى حجم اندکى از کدهاى نوشته شده سمت سرويس گيرنده نيز وجود خواهد داشت . ASP.NET با ارائه مفهوم جديدى با نام Postback ، اطلاعاتى اضافه را به منظور انجام پردازش هاى لازم براى سرويس دهنده ارسال مى نمايد . بدين ترتيب، پس از ايجاد يک رويداد ، اطلاعات مورد نياز به منظور پردازش رويداد مربوطه، براى سرويس دهنده ارسال مى گردد. ويژگى فوق ،پتانسيل هاى متعددى را در اختيار برنامه نويسان وب ، قرار مى دهد . مثلا" در موارديکه کاربران اقدام به درج داده در يک TextBox نموده و يا يکى از اقلام اطلاعاتى موجود در يک ليست را انتخاب مى نمايند ، امکان نگهدارى و بخاطر سپردن اطلاعات موجود در يک فرم وب در زمان حرکت بين صفحات متعدد ، وجود خواهد داشت.مدل برنامه نويسى مبتنى بر رويداد ارائه شده در ASP.NET ، صرفا" محدود به اين امکانات نبوده و مى توان کدهاى مورد نياز را در توابع و يا برنامه هاى جانبى مستقر و در زمان بروز يک رويداد، آنان را اجراء نمود.
در اين مقاله به بررسى موارد زير خواهيم پرداخت :

رويداد چيست ؟
مدل مبتنى بر رويداد چيست ؟
بررسى رويدادهاى عمومى ASP.NET
رويدادهاى HTML
رويدادهاى کنترل هاى سرويس دهنده ASP.NET
بررسى کنترل Button در ASP.NET
نحوه پردازش يک رويداد از طريق کدهاى نوشته شده سمت سرويس گيرنده
تاثير مدل برنامه نويسى مبتنى بر رويداد در ايجاد برنامه هاى وب
رويداد چيست ؟
به منظور آشنائى با مفهوم يک رويداد در دنياى برنامه نويسى ، اجازه دهيد با يک مثال در دنياى واقعى کار خود را آغاز نمائيم :
فرض کنيد، کارمند بخش فروش يک شرکت به منظور دريافت اطلاعات از دو روش تلفن و نامه الکترونيکى ، استفاده مى نمايد.به صدا در آمدن زنگ تلفن نشاندهنده تحقق يک رويداد بوده که مى بايست به آن پاسخ داده شود. کارمند مورد نظر ، بروز رويداد را تشخيص و با برداشتن گوشى تلفن و پس از آگاهى از نوع درخواست ، عکس العمل لازم را انجام مى دهد.( آگاهى از درخواست متقاضى ، ثبت سفارش ، ارسال کالاى مورد نياز ) .
کارمند مورد نطر، مى تواند از طريق Email نيز اخبارى را نظير سياست هاى فروش از مدير خود، دريافت نمايد. مثلا" مدير بخش مربوطه مى تواند با ارسال يک Email به وى اعلام نمايد که قيمت يک کالاى خاص افزايش يافته است. پس از ايجاد رويداد فوق ، کارمند مورد نظر مى تواند واکنش لازم به منظور برخورد با رويداد را با هر روشى که خود مى داند ، انجام دهد . مثلا" مى تواند با مشترى مورد نظر تماس گرفته و به وى بگويد : " متاسفيم ، شما مى بايست يک مبلغ اضافه ديگر بابت خريد اين کالا را پرداخت نمائيد " و يا مى تواند در پاسخ به مدير خود بگويد : " ما هم اينک نيز بابت فروش اين کالا پول زيادى را از مشترى گرفته و نيازى به افزايش قيمت کالا نمى باشد " . (نحوه برخورد با يک رويداد ، به نوع آن بستگى خواهد داشت ).

ادامه اين مقاله را در سايت سخا روش بخوانيد

پنجشنبه، تیر ۱۱، ۱۳۸۳

SQL Tutorial

SQL
Tutorial

کلیه افرادی که می خواهند با بانکهای اطلاعاتی برنامه نویسی کنند بایستی با زبان SQL آشنائی کامل داشته باشند.
سایت معرفی شده دارای رانهمای آموزشی مناسبی برای علاقه مندان این زبان است.
این آموزش بهمراه تعداد زیادی مثال ارائه شده که می تواند در کمترین زمان این زبان را به شما یاد بدهد.

چهارشنبه، تیر ۰۳، ۱۳۸۳

چگونه می توان فهمید که آیا یک ارتباط فعال اینترنتی بر روی کامپیوتر وجود دارد یا نه؟

determine if there is an active connection to the internet (2)?


اگر برنامه ای دارید که از طریق اینترنت بروز می شود با کمک این برنامه می توانید از وجود یک ارتباط اینترنتی در سیستم مطلع شوید.

یکشنبه، خرداد ۳۱، ۱۳۸۳

Barcode in Delphi

قرار دادن بارکد در برنامه دلفی
دوستی در مورد استفاده از کامپوننتهای تولید بارکد در دلفی پرسیده بودند . در این زمینه تعدادی از سایتهای مفید را معرفی می کنم

Barcode Vcl Component free download. Include Barcode and DBBarcode, Create, view and print barcodes for your applications as easy as typing the code. Simply enter the desired characters ...


در این سایت می توانید آدرس دانلود برنامه های مختلف را پیدا کنید
http://softsia.com/se.php?kw=barcode

لیست تعدادی کامپوننت بصورت VBX برای تولید بارکد در برنامه
http://www.adams1.com/pub/russadam/plugins.html


برای جستجو در این مورد می توانید از لینک زیر در گوگل استفاده کنید
لینک گوگل

دوشنبه، خرداد ۱۸، ۱۳۸۳

Delphi - Unicode - Farsi

فارسی نویسی در دلفی
با استفاده از مجموعه کامپوننتهای تی ان تی می توانید در تمام برنامه های خود از یونی کد استفاده کنید. این مجموعه با سورس کامل و بصورت رایگان ارائه شده است.
برای اجرای برنامه در رایانه های دیگر هم نیازی به نصب هیچ برنامه اضافه ای نیست

Tnt Delphi Unicode Controls

سه‌شنبه، اردیبهشت ۰۱، ۱۳۸۳

استفاده از برنامه های دلفی بر روی یک کامپیوتر دیگر

بیشتر برنامه های نوشته شده به دلفی باید به همراه تعدادی از فایلهای دلفی به کامپیوتر مقصد برده شوند تا برنامه درست کار کند. برای این منظور
همراه با برنامه دلفی یک برنامه جنبی هم ارائه شده است به نام
InstallShield
با استفاده از این برنامه شما می توانید یک برنامه قابل نصب را برای برنامه اصلی خودتان بسازید. کاری که این برنامه می کند این است که از شما اطلاعاتی درباره برنامه خوتان و همچنین اطلاعات مربوط به رجیستر کردن برنامه در ویندوز را می گیرد و با اطلاعاتی که ز برنامه ها و کامپوننتهای دلفی دارد، فایلهای لازم برای قابل اجرا شدن برنامه شما را به همراه برنامه شما و اطلاعات دیگر بصورت یک برنامه قابل نصب به شما ارائه می دهد.

متاسفانه درباره این برنامه چیز زیادی در کتابهای راهنمای دلفی وجود ندارد. در صورتیکه سوالی در این زمینه داشتید می توانید آنها را از من سوال کنید.
بهتر است با آدرس پست الکترونیک اعلام شده در سمت چپ صفحه تماس بگیرید

دوشنبه، فروردین ۲۴، ۱۳۸۳

اجرای یک برنامه اجرائی از درون برنامه دلفی

برای اجرای یک فایل اجرائی از درون برنامه ( دلفی ) می توانید از تابع زیر استفاده کنید. این تابع به مجموعه توابع سیستمی تعلق دارد

ShellExecute


با پارامترهای زیر می توان از این تابع استفاده کرد

ShellExecute(Hwnd,Operation,FileName,Parameter,Directory,ShowCommand);


قبل از اینکه پارامترهای این تابع را توضیح بدهم ابتدا یک مثال برای اجرای یک فایل اجرائی ارائه می دهم:

ShellExecute(nil,'Open', 'test.exe',nil,nil,0);


با دستور بالا می توانید فایل داده شده را اجرا کنید. این تابع در مسیر جاری برنامه به دبنال آن فایل می گردد.
اما پارمترهای این تابع که در راهنمای دلفی هم توصیح داده شده

HWND :


آین پارمتر را در دلفی می توانید به دو شکل مقدار دهی کنید. راه اول استفاده از شماره اختصاص داده شده به پنجره برنامه است
استهاده کنیدnil برای سادگی کار می توانید از مقدار

Operation:


این پارامتر همانگونه که نامش پیداست نوع عملیات را مشخص می کند. این پارامتر می تواند یکی از مقادیر زیر را داشته باشد
Open, Print, Explore
می توانید یک فایل را باز کنید یا آنرا اجرا کنیدOpen با دستور اول
می توانید یک فایل را پرینت بگیریدPrint با دستور دوم
با دستور سوم می توان یک شاخه یا فولدر را بر روی کامپیوتر باز کرد.

FileName


شما بایستی نام فایلی را که می خواهید اجرا شود بصورت یک رشته کاراکتری در اینجا قرار دهید. البته اگر می خواهید محتوای یک فولدر را ببینید هم می توانید نام آنرا در اینجا قرار دهید.

Parsmeter


اگر قابل اجرائی شما برای اجرا نیاز به پارمتر ورودی دارد می توانید در اینجا آنرا به تابع بدهید

Directory


مسیر اجرای فایل را هم می توانید در اینجا بدهید. اگر فایل شما در مسیر جاری برنامه قرار دارد نیازی نیست مقدار دهید و همان مقدار نشان داده شده در مثال بالا کافیست.

ShowCommand


در حالت عادی مقدار آنرا صفر قرار دهید تا برنامه پس از اجرا شدن نمایش اده شود. اما می توانید بین جالتهای زیر یکی را انتخاب کنید

SW_HIDE
SW_MAXIMIZE
SW_MINIMIZE
SW_RESTORE
SW_SHOW
SW_SHOWDEFAULT
SW_SHOWMAXIMIZED
SW_SHOWMINIMIZED
SW_SHOWMINNOACTIVE
SW_SHOWNA
SW_SHOWNOACTIVATE
SW_SHOWNORMAL

یکشنبه، فروردین ۱۶، ۱۳۸۳

مشکل بانک اطلاعاتی پارادکس

در دلفی یکی از راحت ترین ابزار برای ایجار بانکهای اطلاعاتی تک کاربره، پارادکس است. موتور این بانک اطلاعاتی همراه با نصب دلفی نصب می شود.
این ابزار بسیار مناسب و ساده است اما مشکلاتی هم دارد.
یکی از این مشکلات به هم ریختن فایلهای ایندکس می باشد.
اگر در حالتی باشد که بانک را ویرایش کنید یا به بانک چیزی اضافه کنید و در انتهای برنامه بانک خود را نبندید، احتمال زیاد دارد که ایندکس بانک شما به هم بریزد و یا اینکه سرفصل فایلهای شما دچار مشکل شود.
یک راه سریع برای درست کردن این مشکل ساختن مجدد ایندکسها است. البته ابزارهائی هم برای درست کردن مشکل بانکهای اطلاعاتی ارائه شده است اما برای بانکهائی که مطالب فارسی در آنها می باشد ، مشکل ساز است.
توصیه اول من به شما این است که تا می توانید از بانک اطلاعاتی پارادکی برای برنامه های خود استفاده نکنید.
بانکهای اکسس بهتر عمل می کنند.

سه‌شنبه، اسفند ۲۶، ۱۳۸۲

نوشتن در این وبلاگ

این وبلاگ با هدف آموزش دلفی و رفع اشکال برنامه نیسان راه اندازی شد.
اگر علاقه مند به نوشیتن در این سایت هستید می توانید به آدرس معلم دلفی درخواست خود را بفرستید.
شما هر قدر هم که از برنامه نویسی اطلاع داشته باشید می توانید در این سایت بنویسید.

سال 1382 سال قعالیت جدیتر این سایت خواهد بود.



سه‌شنبه، اسفند ۰۵، ۱۳۸۲

اصول برنامه نویسی تجت وب

http://www.srco.ir/tutorial/default1.asp
امروزه بیشتر برنامه های رایانه ای تحت وب نوشته می شوند . به این معنی که این برنامه ها با مرورگرهای مب کار می کنند. برای نوشتن چنین برنامه های بایستی علاوه بر مهارت برنامه نویسی مهارتهای دیگری را هم داشته باشیم.

جمعه، اسفند ۰۱، ۱۳۸۲

چند لینک درباره منابع مفید دلفی به زبان فارسی

DLL نحوه نوشتن در دلفي
http://www.javan-soft.com/PDF/DLL.pdf

SQLراهنماي سريع
http://www.javan-soft.com/PDF/SQL.pdf

آموزش پاسكال
http://www.javan-soft.com/PDF/pascalLearnin.pdf

و پاسكال براي يادگيريC مقايسه
http://www.javan-soft.com/PDF/Pascan&C.pdf

راهنماي برنامه نويسان
http://www.javan-soft.com/PDF/ProgrammersGuid.pdf

کامپوننت تاریخ برای زبان دلفیhttp://www.javan-soft.com/Download/MyCalendar.pas


نمونه برنامه های کوچک به زبان دلفیhttp://www.javan-soft.com/LilProj.htm

جمعه، بهمن ۲۴، ۱۳۸۲

what is xml?

اگر قصد دارید در اینترنت با استفاده از زبان دلفی برنامه نویسی کنید بایستی با
xml
آشنائی داشته باشید. این زبان یکی از ابزارهای قوی است که از چند سال پیش در اینترنت توسعه پیدا کرده است. شما می توانید اطلاعات خود را به راحتی با این زبان پیاده کرده و امکان استفاده از آنرا در برنامه های دیگر به دیگران بدهید.
ویژگی این زبا ن امکان استفاده از آن در تمام زبانهای برنامه نویسی است.
برای یادگیری مقدماتی آن می توانید از سیات زیر که به زبان فارسی است استفاده کنید.
http://www.persianlearn.com/class.asp?classid=38

دوشنبه، بهمن ۰۶، ۱۳۸۲

نکات مفید در استفاده از محیط برنامه نویسی دلفی

در این آدرس می توانید اطلاعات مفیدی در این زمینه پیدا کنید.
مثلا اینکه چطور یک خط را بوک مارک کرده تا بتوانیم هر لحظه به آن دسترسی داشته باشیم.
یا اینکه نوشتن مکرو ها در محیط دلفی به چه صورت است.
http://www.delphishop.com/bforum/viewtopic.php?t=1625

"
ايجاد فرورفتگي در كد:
بعضي اوقات - كه خيلي هم پيش مي‌آيد - لازم است كه يك مقداري از متن را بصورت بلوك شده به جلو و يا عقب ببريم. منظور دندانه دار كردن متن است كه به خوانايي برنامه كمك مي كند. براي اينكار مي تونيد از كليد Ctrl +Shift+I براي جلو بردن و Ctrl+Shift+U براي عقب برگرداندن متن بلوك شده استفاده كنيد.

درست كردن ماكرو متني:
اين امكان بسيار مفيد است و مي توانيد بسياري از كارهاي نوشتاري را كاهش دهد با اينكار شما ميتوانيد يك سري از كارهاي تكراري كه روي متون انجام مي دهيد را بصورت ماكرو در آورده و از آنها به راحتي استفاده كنيد. براي شروع به ضبط ماكرو كليدهاي ctrl+shift+r را بفشاريد و آن سري كارهايي را كه مي خواهيد را انجام دهيد و سپس براي اينكه به كار ضبط ماكرو پايان دهيد كليدهاي ctrl+shift+r را دوباره بزنيد. حال براي استفاده از ماكرو كافيست در هر جا كه لازم بود كليدهاي Ctrl+Shift+P را بفشاريد.

انتخاب متن بصورت مربعي:
اگر شما از كهنه كارهاي كامپيوتر باشيد حتما از زمان داس يادتون هست كه برنامه اي بود به نام PE2 كه يكي از امكانات بسيار جالبش اين بود كه يك مربع از متن رو ميتوانستين انتخاب
كنيد و آنرا كپي يا حذف كنيد. بله درست متوجه شديد در محيط دلفي هم شما اينكار را ميتوانيد انجام دهيد اما نه به مشكلي PE2 بلكه اينكار را ميتوانيد فقط با گرفتن كليد Alt و كشيدن
موس روي متن انجام دهيد.

گذاشتن علامت روي متن:
اين كار كه به BookMark معروف است بسيار مفيد و كارا مي باشد. در هنگامي كه شما روي قسمتي از متن برنامه كار ميكنيد و مي خواهيد به يك قسمت ديگر برويد ممكن است براي برگشتن به مكان اول خود كمي مشكل پيدا كنيد. ولي شما ميتوانيد با زدن چند دكمه به محل مورد نظرتون باز گرديد. براي اينكار در خطي كه قصد داريد علامت بگذاريد كليدهاي Ctrl+Shift+0..9 را بفشاريد. منظور اينست كه كليدهاي ctrl+Shift را نگه داريد و يكي از اعداد 0 تا 9 را وارد كنيد تا آن خط به همان شماره علامت گذاري شود و سپس هر جا كه خواستيد برويد و سپس هر بار كه كليد Ctrl را نگه داريد و شماره مورد نظر را وارد كنيد به همان خط باز خواهيد گشت. البته توجه داشته باشيد كه فقط مي توانيد 10 خط را با اين روش علامت گذاري بكنيد و براي برداشتن علامت ها كافيست روي همان خط دوباره كليد Ctrl+shift و شماره‌اي كه براي آن خط وارد كرده ايد را بفشاريد با اينكار علامت آن خط برداشته مي شود.

"

دوشنبه، دی ۲۲، ۱۳۸۲

خواندن و نوشتن سکتور

برای خواندن و نوشتن سکتورهای فلاپی دیسک بایستی برنامه به زبان اسمبلی نوشت. البته این حالت ساده این مسئله است. در اینترنت کامپوننتهائی وجود دارند که اینکار را برای شما انجام می دهند.
در آدرس زیر می توانید تعدادی از این کامپوننتها را پیدا کنید:
http://www.torry.net/diskaccess.htm
برنامه زیر برای دسترسی مستقیم به دیسک کمک زیادی به شما می کند:
ANTS TDirectDisk

Unicode in Delphi

یونی کد در دلفی
در کامپایلر دلفی بیشتر کامپوننتها یونی کد را پشتیبانی نمی کنند و برنامه نویس باید برای زبان فارسی این نکته را در نظر داشته باشد.
اما اگر شما می خواهید از یونی کد استفاده کنید من مجموعه کامپوننتهای زیر را به شما معرفی می کنم
http://home.ccci.org/wolbrink/TntBin/tntunicodecontrols.zip
با استفاده از این گروه کامپوننت می توانید از یونی کد در برنامه های خود استفاده کنید.

به یاد داشته باشید که نوع متغیر تعریف شده برای یونی کد بصورت زیر است
WideString , WideChar
UTF8و برای
UTF8String

یکشنبه، دی ۲۱، ۱۳۸۲

ارسال نامه الکترونیکی

آیا می دانید چگونه می توان یک نامه الکترونیکی از درون برنامه دلفی به آدرس فرستاد بدون اینکه کاربر متوجه شود که این نامه ارسال شده است؟

برای اینکار شما نیاز به یک آدرس پست الکترونیک بهمراه شناسه کاربر و کلمه عبور آن دارید.
علاوه بر این باید از ایندی استفاده کنید.

در صورت تمایل به دریافت فایل مربوطه به گروه معلم دلفی نامه ای بفرستید و متن آنرا دریافت کنید.

Delphi_Teacher@yahoogroups.com

گروه معلم دلفی

با عضویت در این گروه از مطالب این سایت مطلع می شوید.

برنامه من برای این سایت ارائه مطالب منتشر شده در گروههای خبری دلفی است به زبان فارسی.
این مطالب را که به زبان انگلیسی است به زبان فارسی برای شما بیان می کنم.
در این میان اگر سوال دارید از من بپرسید تا آنرا عنوان کنم .
اگر سوالی نباشد من یک مطلب را بصورت انتخابی برای شما خواهم نوشت.