مهارات التطوير الأساسية للدلفي من أجدادنا
التجميع: مصدر المستأجرين: منتدى الاحتكار
◇[DELPHI] نسخ الملفات من جوار الشبكة
يستخدم شيلابي.
Copyfile(pchar('newfile.txt'),pchar('//اسم الكمبيوتر/direction/targer.txt'),false);
◇[DELPHI] ينتج تأثير سحب الماوس
يتم التنفيذ من خلال حدث MouseMove، وحدث DragOver، وحدث EndDrag، مثل LABEL on PANEL:
فار xpanel,ypanel,xlabel,ylabel:integer;
حدث MouseMove الخاص بـ PANEL: xpanel:=x;ypanel:=y;
حدث DragOver الخاص بـ PANEL: xpanel:=x;ypanel:=y;
حدث MouseMove الخاص بـ LABEL: xlabel:=x;ylabel:=y;
حدث EndDrag الخاص بـ LABEL: label.left:=xpanel-xlabel;label.top:=ypanel-ylabel;
◇[دلفي] الحصول على دليل WINDOWS
يستخدم شيلابي.
فار Windir:array[0..255] من char؛
getwindowsdirectory(windir,sizeof(windir));
أو اقرأ من التسجيل، الموقع:
HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion
مفتاح SystemRoot، الذي تم الحصول عليه كـ: C:/WINDOWS
◇[DELPHI] رسم خطوط على FORM أو حاويات أخرى
var x,y:array [0..50] من عدد صحيح؛
Canvas.pen.color:=clred;
Canvas.pen.style:=PSDash;
form1.canvas.moveto(trunc(x[i]),trunc(y[i]));
form1.canvas.lineto(trunc(x[j]),trunc(y[j]));
◇[DELPHI] استخدام قائمة السلاسل
نصائح فار:tstringlist؛
نصائح:=tstringlist.create;
tips.loadfromfile('filename.txt');
edit1.text:=tips[0];
tips.add('سلسلة إضافة السطر الأخير');
tips.insert(1,'insert string at NO 2 line');
tips.savetofile('newfile.txt');
نصائح مجانية؛
◇[دلفي] عملية الحافظة بسيطة
richedit1.selectall;
richedit1.copytolipboard;
richedit1.cuttoclipboard;
Edit1.pastefromclipboard;
◇[DELPHI] حول عمليات الملفات والدليل
Chdir('c:/abcdir');انتقل إلى الدليل
Mkdir('dirname');إنشاء دليل
رمدير("اسم الاسم"); حذف الدليل
GetCurrentDir;// احصل على اسم الدليل الحالي، بدون "/"
Getdir(0,s);// احصل على اسم دليل العمل s:='c:/abcdir';
Deletfile('abc.txt');//حذف الملف
Renamefile('old.txt','new.txt');// إعادة تسمية الملف
ExtractFilename(filelistbox1.filename);//احصل على اسم الملف
ExtractFileExt(filelistbox1.filename);// احصل على لاحقة الملف
◇[دلفي] معالجة سمات الملف
attr:=filegetattr(filelistbox1.filename);
إذا (attr و faReadonly)=faReadonly ثم ... // للقراءة فقط
if (attr and faSysfile)=faSysfile ثم ... //system
if (attr and faArchive)=faArchive ثم ... //Archive
if (attr and faHidden)=faHidden إذن... //Hide
◇[DELPHI]تنفيذ الملفات خارج البرنامج
WINEXEC//استدعاء الملف القابل للتنفيذ
winexec('command.com /c نسخة *.* c:/',SW_Normal);
winexec('بدء abc.txt');
ShellExecute أو ShellExecuteEx// ابدأ برنامج اقتران الملفات
وظيفة Executefile (const filename,params,defaultDir:string;showCmd:integer):THandle;
ExecuteFile('C:/abc/a.txt','x.abc','c:/abc/',0);
ExecuteFile('http://tingweb.yeah.net','','',0);
ExecuteFile('mailto:[email protected]','','',0);
◇[DELPHI] احصل على اسم العملية الجارية على النظام
فار hCurrentWindow:HWnd;szText:array[0..254] من char;
يبدأ
hCurrentWindow:=Getwindow(handle,GW_HWndFrist);
بينما hCurrentWindow <> 0 يفعل
يبدأ
إذا كان Getwindowtext(hcurrnetwindow,@sztext,255)>0 ثم listbox1.items.add(strpas(@sztext));
hCurrentWindow:=Getwindow(hCurrentwindow,GW_HWndNext);
نهاية؛
نهاية؛
◇[DELPHI]حول تضمين التجميع
نهاية عاصم؛
يمكن تعديل EAX وECX وEDX حسب الرغبة؛ ولا يمكن تعديل ESI وEDI وESP وEBP وEBX.
◇[DELPHI]حول وظيفة تحويل النوع
FloatToStr // النقطة العائمة إلى السلسلة
FloatToStrF // تنسيق النقطة العائمة إلى السلسلة
IntToHex// عدد صحيح إلى النظام الست عشري
TimeToStr
DateToStr
DateTimeToStr
FmtStr// إخراج سلسلة بالتنسيق المحدد
FormatDateTime('YYYY-MM-DD,hh-mm-ss',DATE);
◇[دلفي]إجراءات ووظائف السلسلة
Insert(obj,target,pos);// يتم إدراج هدف السلسلة في موضع pos. إذا كانت نتيجة الإدراج أكبر من الحد الأقصى لطول الهدف، فسيتم اقتطاع الأحرف الزائدة. إذا كان Pos خارج 255، فسيحدث خطأ في وقت التشغيل. على سبيل المثال، st:='Brian'، ثم Insert('OK',st,2) سيجعل st يصبح 'BrOKian'.
حذف(st,pos,Num);// احذف سلسلة فرعية من أحرف Num (عدد صحيح) بدءًا من موضع pos (عدد صحيح) في السلسلة st. على سبيل المثال، st:='Brian'، ثم الحذف(st,3,2) سيصبح Brn.
Str(value,st);// تحويل القيمة الرقمية (عدد صحيح أو نوع حقيقي) إلى سلسلة ووضعها في st. على سبيل المثال، عندما تكون a=2.5E4، فإن str(a:10,st) ستجعل قيمة st هي "25000".
Val(st,var,code);// تحويل تعبير السلسلة st إلى العدد الصحيح المقابل أو القيمة الحقيقية وتخزينه في var. يجب أن يكون St عبارة عن سلسلة تمثل قيمة رقمية وتتوافق مع قواعد الثوابت الرقمية. أثناء عملية التحويل، إذا لم يتم اكتشاف أي خطأ، فسيتم تعيين رمز المتغير على 0، وإلا فسيتم تعيينه على موضع حرف الخطأ الأول. على سبيل المثال، st:=25.4E3, x هو متغير حقيقي، ثم val(st,x,code) سيجعل قيمة X 25400 وقيمة الكود 0.
Copy(st.pos.num);// إرجاع سلسلة فرعية تبدأ من الموضع pos (عدد صحيح) في السلسلة st وتحتوي على أحرف num (عدد صحيح). إذا كان pos أكبر من طول السلسلة st، فسيتم إرجاع سلسلة فارغة إذا كان pos خارج 255، فسيحدث خطأ في وقت التشغيل. على سبيل المثال، st:='Brian'، ثم تقوم Copy(st,2,2) بإرجاع 'ri'.
Concat(st1,st2,st3...,stn);// قم بتسلسل السلاسل التي تمثلها جميع المتغيرات المستقلة بالترتيب المحدد، وإرجاع القيمة المتسلسلة. إذا كان طول النتيجة 255، سيحدث خطأ في وقت التشغيل. على سبيل المثال، st1:='Brian',st2:=' ',st3:='Wilfred'، ثم تقوم Concat(st1,st2,st3) بإرجاع 'Brian Wilfred'.
length(st);// يُرجع طول تعبير السلسلة st. على سبيل المثال، st:='Brian'، القيمة المرجعة للطول(st) هي 5.
Pos(obj,target);// يُرجع الموضع الذي تظهر فيه سلسلة obj لأول مرة في السلسلة المستهدفة. إذا لم يكن الهدف يحتوي على سلسلة مطابقة، فإن قيمة الإرجاع لوظيفة Pos هي 0. على سبيل المثال، target:='Brian Wilfred'، فإن قيمة الإرجاع Pos('Wil',target) هي 7، وقيمة الإرجاع Pos('hurbet',target) هي 0.
◇[DELPHI]حول التعامل مع التسجيل
يستخدم التسجيل.
فار ريج:Tregistry;
reg:=Tregistry.create;
reg.rootkey:='HKey_Current_User';
reg.openkey('لوحة التحكم/سطح المكتب',false);
reg.WriteString('خلفية العنوان','0');
reg.writeString('Wallpaper',filelistbox1.filename);
reg. Closereg;
reg.free;
◇[DELPHI]حول الأسماء الثابتة للوحة المفاتيح
VK_BACK/VK_TAB/VK_RETURN/VK_SHIFT/VK_CONTROL/VK_MENU/VK_PAUSE/VK_ESCAPE
/VK_SPACE/VK_LEFT/VK_RIGHT/VK_UP/VK_DOWN
F1--F12:$70(112)--$7 مليار(123)
من الألف إلى الياء: 41 دولارًا (65) - 5 دولارًا أمريكيًا (90)
0-9: 30 دولارًا (48)--39 دولارًا (57)
◇[DELPHI] تحديد اللغة الأم للبرنامج بشكل مبدئي
موجه DOS لبرنامج DELPHI: يجب تشغيل هذا البرنامج تحت Win32.
مطالبة DOS لبرنامج VC++: لا يمكن تشغيل هذا البرنامج في وضع DOS.
◇[DELPHI]تشغيل ملفات تعريف الارتباط
Response.cookies("name").domain:='http://www.086net.com';
مع Response.cookies.add افعل
يبدأ
الاسم:='اسم المستخدم';
القيمة:='اسم المستخدم';
نهاية
◇[DELPHI] تمت إضافته إلى رابط قائمة المستندات
يستخدم shellapi،shlOBJ؛
shAddToRecentDocs(shArd_path,pchar(filepath));//إضافة اتصال
shAddToRecentDocs(shArd_path,nil);//Clear
◇[متنوعة] النسخ الاحتياطي لقاموس طريقة الإدخال الذكي ABC
ويندوز/نظام/user.rem
ويندوز/نظام/tmmr.rem
◇[DELPHI] تحديد أزرار الفأرة
إذا كان GetAsyncKeyState(VK_LButton)<>0 ثم ... //الزر الأيسر
إذا كان GetAsyncKeyState(VK_MButton)<>0 ثم ... // المفتاح الأوسط
إذا كان GetAsyncKeyState(VK_RButton)<>0 ثم ... //انقر بزر الماوس الأيمن
◇[DELPHI]ضبط الحد الأقصى لعرض النموذج
حدث onFormCreate
self.width:=screen.width;
self.height:=screen.height;
◇ زر [DELPHI] لقبول الرسائل
تمت معالجتها في حدث OnCreate: application.OnMessage:=MyOnMessage;
الإجراء TForm1.MyOnMessage(var MSG:TMSG;var Handle:Boolean);
يبدأ
إذا msg.message=256 ثم... //أي مفتاح
إذا msg.message=112 ثم... //F1
إذا msg.message=113 ثم... //F2
نهاية؛
◇[متنوعات]إخفاء المجلدات المشتركة
تأثير المشاركة: يمكن الوصول إليه ولكنه غير مرئي (في إدارة الموارد، جوار الشبكة)
اسم المشاركة: الاتجاه $
زيارة: //الكمبيوتر/الاتجاه/
◇[java Script] التأثيرات شائعة الاستخدام على صفحات ويب Java Script
من المقرر إغلاق صفحة الويب خلال 60 ثانية
<script language="جافا سكريبت"><!--
سيتيميوت('نافذة.إغلاق();',60000)
--></script>
إغلاق النافذة
<a href="/" onclick="Javascript:window. Close();return false;">إغلاق</a>
نقل URL المجدول
<meta http-equiv="refresh" content="40;url=http://www.086net.com">
تعيين كصفحة رئيسية
<a onclick="this.style.behavior='url(#default#homepage)';this.sethomepage('http://086net.com');"href="#">تعيين كصفحة رئيسية</a>
إشارة مرجعية لهذا الموقع
<a href="javascript:window.external.addfavorite('http://086net.com','[无名pier]')">ضع هذا الموقع في المفضلة</a>
انضم إلى القناة
<a href="javascript:window.external.addchannel('http://086net.com')">إضافة قناة</a>
◇[DELPHI]متعلق بتحرير النصوص
checkbox1.checked:=not checkbox1.checked;
إذا تم تحديد checkbox1.style ثم richedit1.font.style:=richedit1.font.style+[fsBold] else richedit1.font.style:=richedit1.font.style-[fsBold]//bold
إذا تم تحديد خانة الاختيار 1.، ثم richedit1.font.style:=richedit1.font.style+[fsItalic] آخر richedit1.font.style:=richedit1.font.style-[fsItalic]//مائل
إذا تم تحديد checkbox1.style ثم richedit1.font.style:=richedit1.font.style+[fsUnderline] else richedit1.font.style:=richedit1.font.style-[fsUnderline]//underline
memo1.alignment:=taLeftJustify;//Left
memo1.alignment:=taRightJustify;//right
memo1.alignment:=taCenter;//Centered
◇[DELPHI] إنشاء لون النص بشكل عشوائي
عشوائية؛//بذور عشوائية
memo1.font.color:=rgb(random(255),random(255),random(255));
◇[DELPHI] تحديث DELPHI5 الرقم التسلسلي لتصحيح الترقية
1000003185
90X25fx0
◇[DELPHI]تصفية الأحرف غير القانونية في أسماء الملفات
لأني: = 1 إلى الطول (الأطوال).
إذا كان s[i] في ['/','/',':','*','?','<','>','|'] إذن
◇[DELPHI]تعريف ووصف وظيفة التحويل
datetimetofiledate (datetime:Tdatetime):longint; تحويل قيمة التاريخ والوقت بتنسيق Tdatetime إلى قيمة التاريخ والوقت بتنسيق DOS
datetimetostr (datetime:Tdatetime):string; تحويل متغير تنسيق Tdatatime إلى سلسلة. إذا لم تحتوي معلمة datetime على قيمة تاريخ، فسيتم عرض تاريخ السلسلة التي تم إرجاعها على أنها 00/00/00 معلمة التاريخ والوقت، ستكون السلسلة التي تم إرجاعها هي عرض جزء الوقت على أنه 00:00:00 صباحًا
datetimetostring (سلسلة نتائج var؛
تنسيق ثابت: سلسلة؛
datetime:Tdatetime); تحويل قيم الوقت والتاريخ وفقًا لسلسلة التنسيق المحددة، والنتيجة هي سلسلة النتيجة، والتنسيق هو سلسلة تنسيق التحويل، والتاريخ هو قيمة التاريخ والوقت.
يستخدم datetostr (التاريخ: Tdatetime) سلسلة التنسيق المحددة بواسطة المتغير العام Shortdateformat لتحويل معلمة التاريخ إلى السلسلة المقابلة
عدد عشري عشري (نتيجة var:Tfloatrec؛القيمة:
الموسعة؛ الدقة، الكسور العشرية:
عدد صحيح)؛ تحويل رقم النقطة العائمة إلى تمثيل عشري
floattostr (القيمة: ممتدة): سلسلة تحويل قيمة النقطة العائمة إلى تنسيق سلسلة يستخدم هذا التحويل تنسيق الأرقام العادي، والعدد الفعال للأرقام المحولة هو 15.
floattotext (المخزن المؤقت: pchar؛ القيمة: ممتدة؛
التنسيق: تنسيق Tfloat؛ الدقة،
أرقام: عدد صحيح): عدد صحيح؛ استخدم التنسيق المحدد والدقة والعلامة العشرية لتحويل قيمة النقطة العائمة إلى تمثيل عشري. المخزن المؤقت ليس مخزنًا مؤقتًا لسلسلة من 0 نتيجة.
floattotextfmt (المخزن المؤقت: pchar؛ القيمة: ممتدة؛
التنسيق: pchar): عدد صحيح استخدم التنسيق المحدد لتحويل قيمة النقطة العائمة إلى تمثيل عشري. يتم تخزين نتيجة التحويل في معلمة المخزن المؤقت. قيمة إرجاع الدالة هي عدد الأحرف المخزنة في المخزن المؤقت.
intttohex (القيمة: longint؛ الأرقام: عدد صحيح):
سلسلة؛ تحويل القيمة الرقمية المعطاة إلى سلسلة سداسية عشرية. تعطي أرقام المعلمة عدد الأرقام الموجودة في سلسلة نتائج التحويل.
inttostr (القيمة: Longint): تقوم السلسلة بتحويل عدد صحيح إلى سلسلة عشرية
strtodate (const S:string):Tdatetime لتحويل سلسلة إلى قيمة تاريخ يجب أن يحتوي S على سلسلة تاريخ بتنسيق قانوني.
strtodatetime (const S:string):Tdatetime يحول السلسلة S إلى تنسيق التاريخ والوقت، ويجب أن يكون لدى S تنسيق MM/DD/YY HH:MM:SS[AM|PM]، حيث تكون فواصل التاريخ والوقت هي نفس فترة النظام ضبط الوقت المستمر ذات الصلة. إذا لم يتم تحديد معلومات AM أو PM، فسيتم استخدام نظام 24 ساعة.
strtofloat (const S:string):extend; تحويل السلسلة المحددة إلى رقم النقطة العائمة.
[+|-]nnn…[.]nnn…[<+|-><E|e><+|->nnnn]
strtoint (const S:string):longint يحول سلسلة رقمية إلى عدد صحيح. يمكن أن تكون السلسلة بتنسيق عشري أو سداسي عشري. إذا لم تكن السلسلة سلسلة رقمية قانونية، فسيقوم النظام بإنشاء استثناء ECONVERTERROR.
strtointdef (const S:string;default:
longint):longint; تحويل السلسلة S إلى رقم. إذا تعذر تحويل S إلى رقم، تقوم الدالة strtointdef بإرجاع قيمة المعلمة الافتراضية.
strtotime (const S:string):Tdatetime يحول السلسلة S إلى قيمة TDATETIME S بالتنسيق HH:MM:SS[AM|PM].
timetostr (time:Tdatetime):string؛ تحويل المعلمة TIME إلى سلسلة. يرتبط تنسيق سلسلة نتائج التحويل بإعداد الثوابت المرتبطة بالوقت في النظام.
◇برنامج [DELPHI] لا يظهر في ALT+CTRL+DEL
إضافة إعلان بعد التنفيذ:
وظيفة RegisterServiceProcess (dwProcessID، dwType: Integer): Stdcall خارجي؛
RegisterServiceProcess(GetCurrentProcessID, 1);//Hide
RegisterServiceProcess(GetCurrentProcessID, 0);//Display
غير مرئي باستخدام ALT+DEL+CTRL
◇لا يظهر برنامج [DELPHI] في شريط المهام
يستخدم النوافذ
فار
النمط الممتد: عدد صحيح؛
يبدأ
Application.Initialize;
//================================================================================================ =============
ExtendedStyle := GetWindowLong (Application.Handle, GWL_EXSTYLE);
SetWindowLong(Application.Handle، GWL_EXSTYLE، ExtendedStyle أو WS_EX_TOOLWINDOW
وليس WS_EX_APPWINDOW)؛
//================================================================================================ ==============
Application.CreateForm(TForm1, Form1);
Application.Run;
نهاية.
◇[DELPHI]كيفية تحديد ما إذا كانت شبكة الطلب الهاتفي قيد التشغيل أو الإيقاف
إذا كان GetSystemMetrics(SM_NETWORK) و$01 = $01 إذن
showmessage('متصل!')
else showmessage('ليس متصلاً!');
◇[DELPHI]تحويل IP إلى اسم المجال
الدالة GetDomainName(Ip:string):string;
فار
الرقم الهيدروجيني: المضيف؛
البيانات:twsadata؛
ثانيا:dWord;
يبدأ
WSAStartup(101 دولار، البيانات)؛
ii:=inet_addr(pchar(ip));
الرقم الهيدروجيني:=gethostbyaddr(@ii,sizeof(ii),PF_INET);
إذا (ph<>nil) إذن
النتيجة:=pH.h_name
آخر
النتيجة:='';
com.WSACleanup;
نهاية؛
◇[DELPHI] كيفية التعامل مع "قائمة النقر بزر الماوس الأيمن"
فار
تسجيل: TRegistry؛
يبدأ
reg := TRegistry.Create;
reg.RootKey:=HKEY_CLASSES_ROOT;
reg.OpenKey('*/shell/check/command', true);
reg.WriteString('', '"' + application.ExeName + '" "%1"');
reg.CloseKey;
reg.OpenKey('*/shell/diary', false);
reg.WriteString('', 'العملية(&C)');
reg.CloseKey;
reg.Free;
showmessage('تم!');
نهاية؛
◇[DELPHI]أرسل قيمة المفتاح الافتراضي ctrl V
الإجراء
يبدأ
keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), 0, 0);
keybd_event(ord('V'), MapVirtualKey(ord('V'), 0), 0, 0);
keybd_event(ord('V'), MapVirtualKey(ord('V'), 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), KEYEVENTF_KEYUP, 0);
نهاية؛
◇[DELPHI]حرف محرك الأقراص الضوئية الحالي
الإجراء getcdrom(var cd:char);
فار
سلسلة: سلسلة؛
السائقين:عدد صحيح؛
سائق:شار؛
أنا، درجة الحرارة: عدد صحيح؛
يبدأ
drivers:=getlogicdrives;
درجة الحرارة:=(1 والسائقين);
لأني:=0 إلى 26 افعل
يبدأ
إذا درجة الحرارة = 1 ثم
يبدأ
driver:=char(i+integer('a'));
str:=driver+':';
إذا كان getdrivetype(pchar(str))=drive_cdrom إذن
يبدأ
القرص المضغوط:=سائق;
مخرج؛
نهاية؛
نهاية؛
السائقين:=(السائقين shr 1);
درجة الحرارة:=(1 والسائقين);
نهاية؛
نهاية؛
◇[DELPHI]تشفير وفك تشفير الحروف
وظيفة cryptstr(const s:string; stype: dword):string;
فار
ط: عدد صحيح؛
مفتاح fkey: عدد صحيح؛
يبدأ
النتيجة:='';
نوع القضية
0: تمريرة الضبط؛
يبدأ
عشوائية.
fkey := عشوائي($ff);
لأني: = 1 إلى الطول (الأطوال).
result := result+chr( ord(s[i]) xor i xor fkey);
النتيجة := النتيجة + char(fkey);
نهاية؛
1: الحصول على جواز المرور
يبدأ
fkey := ord(s[length(s)]);
لأني:=1 إلى الطول (الأطوال) - 1 افعل
result := result+chr( ord(s[i]) xor i xor fkey);
نهاية؛
نهاية؛
□◇[DELPHI] إرسال مفاتيح محاكاة إلى تطبيقات أخرى
فار
ح:المقبض؛
يبدأ
h := FindWindow(nil, 'عنوان التطبيق');
PostMessage(h, WM_KEYDOWN, VK_F9, 0);//إرسال مفتاح F9
نهاية؛
□◇[DELPHI] تنسيق بيانات DAO مدعوم من DELPHI
td.Fields.Append(td.CreateField ('dbBoolean',dbBoolean,0));
td.Fields.Append(td.CreateField ('dbByte',dbByte,0));
td.Fields.Append(td.CreateField ('dbInteger',dbInteger,0));
td.Fields.Append(td.CreateField ('dbLong',dbLong,0));
td.Fields.Append(td.CreateField ('dbCurrency',dbCurrency,0));
td.Fields.Append(td.CreateField ('dbSingle',dbSingle,0));
td.Fields.Append(td.CreateField ('dbDouble',dbDouble,0));
td.Fields.Append(td.CreateField ('dbDate',dbDate,0));
td.Fields.Append(td.CreateField ('dbBinary',dbBinary,0));
td.Fields.Append(td.CreateField ('dbText',dbText,0));
td.Fields.Append(td.CreateField ('dbLongBinary',dbLongBinary,0));
td.Fields.Append(td.CreateField ('dbMemo',dbMemo,0));
td.Fields['ID'].Set_Attributes(dbAutoIncrField);// حقل الزيادة التلقائية
□◇[DELPHI] تقوم DELPHI بتكوين خطوات MS SQL 7 وBDE
الخطوة الأولى هي تكوين ODBC:
قم أولاً بإعداد مصدر البيانات في ODBC بعد تثبيت SQL Server7.0، يجب أن يكون هناك عنصرين في "System DSN" في ODBC.
مصادر البيانات، أحدهما هو MQIS والآخر LocalSever. حدد أيًا منهما وانقر فوق زر التكوين
هل تم تثبيته على الجهاز المحلي؟ إذا كان الأمر كذلك، انتقل مباشرة إلى الخطوة التالية. إذا لم يكن الأمر كذلك، فاملأ عمود الخادم.
الخادم، ثم انتقل إلى الخطوة التالية وقم بملء معرف تسجيل الدخول وكلمة المرور (معرف تسجيل الدخول وكلمة المرور هما خياران للمستخدم في SQL7.0
موقع مركزي).
الخطوة الثانية هي تكوين BDE:
افتح BDE الخاص بـ Delphi وانقر فوق MQIS أو LocalServer. ستتم مطالبتك باسم المستخدم وكلمة المرور
اسم المستخدم وكلمة المرور لـ ODBC متماثلان، فقط املأهما.
الخطوة الثالثة هي ضبط البرنامج:
إذا كنت تستخدم TTable، فحدد MQIS أو LocalServer في DatabaseName الخاص بـ TTable، ثم
ما عليك سوى اختيار Sale in TableName، ثم تغيير Active إلى True، وسيظهر مربع حوار سريع وملء بيانات المستخدم
الاسم وكلمة المرور.
إذا كنت تستخدم TQuery، فانقر بزر الماوس الأيمن على TQuery وانقر على "SQL Builder".
عبارة SQL، أو املأ عبارة SQL في SQL الخاص بـ TQuery. وأخيرًا، لا تنسَ تغيير Active إلى True.
من الممكن أيضًا تكوين TQuery أثناء التشغيل، راجع تعليمات Delphi للحصول على التفاصيل.
□◇[DELPHI] احصل على قيمة RGB لنقطة معينة في الصورة
الإجراء TForm1.Image1MouseDown(Sender: TObject; الزر: TMouseButton;
التحول: TShiftState؛ X، Y: عدد صحيح)؛
فار
الأحمر والأخضر والأزرق: بايت؛
أنا: عدد صحيح؛
يبدأ
i:= image1.Canvas.Pixels[x,y];
أزرق:= GetBValue(i);
الأخضر:= GetGValue(i):
أحمر:= GetRValue(i);
Label1.Caption:=inttostr(Red);
Label2.Caption:=inttostr(Green);
Label3.Caption:=inttostr(Blue);
نهاية؛
□◇[DELPHI]حول تحليل تنسيق التاريخ وتحويله
var year,month,day:word;now2:Tdatatime;
now2:=date();
فك التشفير (الآن 2، سنة، شهر، يوم)؛
lable1.Text :=inttostr(year)+'year'+inttostr(month)+'month'+inttostr(day)+'day';
◇[DELPHI]كيفية تحديد وضع اتصال الشبكة الحالي
نتيجة الحكم هي وضع MODEM أو LAN أو الخادم الوكيل.
يستخدم وينينت؛
نوع اتصال الوظيفة: منطقي؛
أعلام فار: كلمة مزدوجة؛
يبدأ
النتيجة := InternetGetConnectedState(@flags, 0);
إذا كانت النتيجة بعد ذلك
يبدأ
إذا (الإشارات وINTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM ثم
يبدأ
showmessage('مودم');
نهاية؛
إذا (الإشارات وINTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN ثم
يبدأ
showmessage('LAN');
نهاية؛
إذا (الإشارات وINTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY ثم
يبدأ
showmessage('Proxy');
نهاية؛
إذا (الأعلام و INTERNET_CONNECTION_MODEM_BUSY) = INTERNET_CONNECTION_MODEM_BUSY ثم
يبدأ
showmessage('المودم مشغول');
نهاية؛
نهاية؛
نهاية؛
◇[DELPHI] كيفية تحديد ما إذا كانت السلسلة هي عنوان بريد إلكتروني صالح
وظيفة IsEMail (البريد الإلكتروني: سلسلة): منطقية؛
فار s: سلسلة؛ ETpos: عدد صحيح؛
يبدأ
ETpos:= pos('@', EMail);
إذا كان ETpos > 1 إذن
يبدأ
s:= Copy(EMail,ETpos+1,Length(EMail));
إذا (pos('.', s) > 1) و (pos('.', s) < length(s)) ثم
النتيجة:= صحيحة وإلا النتيجة:= خطأ؛
نهاية
آخر
النتيجة:= خطأ؛
نهاية؛
◇[DELPHI] تحديد ما إذا كان النظام متصلاً بالإنترنت
يجب تقديم وظيفة InetIsOffline في URL.DLL.
إعلان الوظيفة هو:
دالة InetIsOffline(Flag: Integer): Boolean stdcall؛
ثم يمكنك استدعاء الوظيفة لتحديد ما إذا كان النظام متصلاً بالإنترنت
إذا كان InetIsOffline(0) ثم ShowMessage('غير متصل!')
else ShowMessage('متصل!');
تقوم هذه الدالة بإرجاع القيمة TRUE إذا كان النظام المحلي غير متصل بالإنترنت.
مُرفَق:
تحتوي معظم الأنظمة التي تحتوي على IE أو OFFICE97 على مكتبة الارتباط الحيوي (DLL) هذه متاحة للاتصال.
InetIsOffline
منطقي InetIsOffline(
DWORD dwFlags,
);
◇[DELPHI] تشغيل ملفات WAV وإيقافها مؤقتًا بسهولة
يستخدم mmsystem؛
وظيفة PlayWav(const FileName: string): Boolean;
يبدأ
النتيجة := PlaySound(PChar(FileName), 0, SND_ASYNC);
نهاية؛
الإجراء StopWav؛
فار
المخزن المؤقت: صفيف [0..2] من شار؛
يبدأ
المخزن المؤقت[0] := #0;
PlaySound(Buffer, 0, SND_PURGE);
نهاية؛
◇[DELPHI] احصل على معلومات BIOS للجهاز
مع Memo1.Lines تفعل
يبدأ
Add('MainBoardBiosName:'+^I+string(Pchar(Ptr($FE061))));
Add('MainBoardBiosCopyRight:'+^I+string(Pchar(Ptr($FE091))));
Add('MainBoardBiosDate:'+^I+string(Pchar(Ptr($FFFF5))));
Add('MainBoardBiosSerialNo:'+^I+string(Pchar(Ptr($FEC71))));
نهاية؛
◇[دلفي] تنزيل الملفات من الإنترنت
يستخدم UrlMon؛
وظيفة DownloadFile(Source, Dest: string): Boolean;
يبدأ
يحاول
النتيجة := UrlDownloadToFile(nil, PChar(source), PChar(Dest), 0, nil) = 0;
يستثني
النتيجة:= خطأ؛
نهاية؛
نهاية؛
إذا كان DownloadFile('http://www.borland.com/delphi6.zip, 'c:/kylix.zip') ثم
ShowMessage('تم التنزيل بنجاح')
else ShowMessage('التنزيل غير ناجح')
◇[DELPHI] حل عنوان IP للخادم
يستخدم Winsock
وظيفة IPAddrToName(IPAddr: سلسلة): سلسلة؛
فار
SockAddrIn: TSockAddrIn;
HostEnt: PHostEnt;
وساداتا: توساداتا؛
يبدأ
WSAStartup(101 دولار، WSAData);
SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPAddr));
HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
إذا كان HostEnt<>nil، فستكون النتيجة:=StrPas(Hostent^.h_name) نتيجة أخرى:='';
نهاية؛
◇[DELPHI] احصل على الاتصال في الاختصار
الدالة ExeFromLink(const linkname: string): string;
فار
فدير،
اسم،
ExeName: PChar؛
ض: عدد صحيح؛
يبدأ
ExeName:= StrAlloc(MAX_PATH);
FName:= StrAlloc(MAX_PATH);
FDir:= StrAlloc(MAX_PATH);
StrPCopy(FName, ExtractFileName(linkname));
StrPCopy(FDir, ExtractFilePath(linkname));
z:= FindExecutable(FName, FDir, ExeName);
إذا ض > 32 ثم
النتيجة:= StrPas(ExeName)
آخر
النتيجة:= '';
StrDispose(FDir);
StrDispose(FName);
StrDispose(ExeName);
نهاية؛
◇[DELPHI]التحكم في الإكمال التلقائي لـ TCombobox
{خاصية "مرتبة" لـ TCombobox إلى صحيحة }
فار lastKey: كلمة // متغير عالمي
// حدث OnChange لـ TCombobox
الإجراء TForm1.AutoCompleteChange(Sender: TObject);
فار
سلسلة البحث: سلسلة؛
retVal: عدد صحيح؛
يبدأ
SearchStr := (المرسل كـ TCombobox).Text;
إذا كان lastKey <> VK_BACK ثم // مسافة للخلف: VK_BACK أو $08
يبدأ
retVal := (المرسل كـ TCombobox).Perform(CB_FINDSTRING, -1, LongInt(PChar(SearchStr)));
إذا retVal> CB_Err ثم
يبدأ
(المرسل كـ TCombobox).ItemIndex := retVal;
(المرسل كـ TCombobox).SelStart := Length(SearchStr);
(المرسل كـ TCombobox).SelLength :=
(Length((Sender as TCombobox).Text) - Length(SearchStr));
النهاية؛ // retVal > CB_Err
النهاية؛ // lastKey <> VK_BACK
lastKey := 0; // إعادة تعيين lastKey
نهاية؛
// حدث OnKeyDown الخاص بـ TCombobox
الإجراء TForm1.AutoCompleteKeyDown(Sender: TObject; var Key: Word;
التحول: TShiftState)؛
يبدأ
lastKey := Key;
نهاية؛
◇[دلفي]كيفية مسح الدليل
وظيفة EmptyDirectory (TheDirectory :String؛ Recursive: Boolean) :
منطقية؛
فار
SearchRec: TSearchRec;
الدقة: عدد صحيح؛
يبدأ
النتيجة:= خطأ؛
TheDirectory := NormalDir(TheDirectory);
Res := FindFirst(TheDirectory + '*.*', faAnyFile, SearchRec);
يحاول
بينما الدقة = 0 افعل
يبدأ
إذا (SearchRec.Name <> '.') و (SearchRec.Name <> '..') ثم
يبدأ
إذا ((SearchRec.Attr وfaDirectory) > 0) والتكراري
ثم ابدأ
EmptyDirectory(TheDirectory + SearchRec.Name, True);
RemoveDirectory(PChar(TheDirectory + SearchRec.Name));
نهاية
آخر تبدأ
حذف الملف (PChar(TheDirectory + SearchRec.Name))
نهاية؛
نهاية؛
الدقة := FindNext(SearchRec);
نهاية؛
النتيجة:=صحيح؛
أخيراً
FindClose(SearchRec.FindHandle);
نهاية؛
نهاية؛
◇[DELPHI]كيفية حساب حجم الدليل
وظيفة GetDirectorySize(const ADirectory: string): عدد صحيح؛
فار
دير: TSearchRec؛
إعادة: عدد صحيح؛
المسار: سلسلة؛
يبدأ
النتيجة := 0;
المسار := ExtractFilePath(ADirectory);
Ret := Sysutils.FindFirst(ADirectory, faAnyFile, Dir);
إذا Ret <> NO_ERROR ثم قم بالخروج؛
يحاول
بينما ret=NO_ERROR افعل
يبدأ
inc(Result, Dir.Size);
إذا (Dir.Attr في [faDirectory]) و (Dir.Name[1] <> '.') ثم
Inc(Result, GetDirectorySize(Path + Dir.Name + '/*.*'));
Ret := Sysutils.FindNext(Dir);
نهاية؛
أخيراً
Sysutils.FindClose(Dir);
نهاية؛
نهاية؛
◇[DELPHI] كيفية إضافة المثبت إلى قائمة إلغاء التثبيت
تشغيل التسجيل على النحو التالي:
1. قم بإنشاء مفتاح أساسي ضمن مفتاح HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall بأي اسم.
مثالHKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/MyUninstall
2. أدخل قيمتين من السلسلة ضمن HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/MyUnistall.
أسماء هاتين القيمتين محددتان: DisplayName و UninstallString.
3. قم بتعيين قيمة سلسلة DisplayName للاسم المعروض في "قائمة حذف التطبيقات"، مثل "Aiming Uninstall one"؛
قم بتعيين السلسلة UninstallString لأمر الحذف الذي تم تنفيذه، مثل C:/WIN97/uninst.exe -f "C:/TestPro/aimTest.isu"
◇[DELPHI]تم اعتراض رسالة إيقاف تشغيل الجلسة WM_QUERYEND
يكتب
TForm1 = الفئة (TForm)
الإجراء WMQueryEndSession(رسالة var: TWMQueryEndSession);
الإجراء CMEraseBkgnd(var الرسالة:TWMEraseBkgnd);Message WM_ERASEBKGND;
خاص
{تصريحات خاصة}
عام
{التصريحات العامة}
نهاية؛
الإجراء TForm1.WMQueryEndSession(رسالة فار: TWMQueryEndSession);
يبدأ
Showmessage('الكمبيوتر على وشك الإغلاق');
نهاية؛
◇[DELPHI]احصل على الجيران عبر الإنترنت
الإجراء getnethood();//يتم استخدام NT كخادم، وتم تمرير تصحيح الأخطاء إلى WIN98.
فار
أ،أنا:عدد صحيح؛
رمز الخطأ:عدد صحيح؛
netres:array[0..1023] of netresource;
enumhandle:thhandle;
التعدادات:dword؛
حجم المخزن المؤقت: كلمة؛
ق:سلسلة؛
mylistitems:tlistitems;
mylistitem:tlistitem;
alldomain:tstrings;
ابدأ //listcomputer هو عرض قائمة لسرد كافة أجهزة الكمبيوتر؛مركز التحكم هو نموذج.
alldomain:=tstringlist.Create;
مع netres[0] ابدأ
dwscope :=RESOURCE_GLOBALNET;
dwtype :=RESOURCETYPE_ANY;
dwdisplaytype :=RESOURCEDISPLAYTYPE_DOMAIN;
dwusage :=RESOURCEUSAGE_CONTAINER;
llocalname :=nil;
lpremotename :=nil;
تعليق :=nil;
lpprovider :=nil;
النهاية؛ // احصل على كافة الحقول
errcode:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@netres[0],enumhandle);
إذا كان رمز الخطأ = NO_ERROR، فابدأ
التعدادات:=1024;
buffersize:=sizeof(netres);
errcode:=wnetenumresource(enumhandle,enumentries,@netres[0],buffersize);
نهاية؛
أ:=0;
mylistitems :=controlcenter.lstcomputer.Items;
mylistitems.Clear;
بينما (string(netres[a].lprovider)<>'') و (errcode=NO_ERROR) يفعلان
يبدأ
alldomain.Add (netres[a].lpremotename);
أ:=أ+1;
نهاية؛
wnet Closeenum(enumhandle);
// احصل على كافة أجهزة الكمبيوتر
mylistitems :=controlcenter.lstcomputer.Items;
mylistitems.Clear;
لأني:=0 إلى alldomain.Count-1 افعل
يبدأ
مع netres[0] ابدأ
dwscope :=RESOURCE_GLOBALNET;
dwtype :=RESOURCETYPE_ANY;
dwdisplaytype :=RESOURCEDISPLAYTYPE_SERVER;
dwusage :=RESOURCEUSAGE_CONTAINER;
llocalname :=nil;
lpremotename :=pchar(alldomain[i]);
تعليق :=nil;
lpprovider :=nil;
نهاية؛
ErrCode:=WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@netres[0],EnumHandle);
إذا كان رمز الخطأ = NO_ERROR إذن
يبدأ
EnumEntries:=1024;
BufferSize:=SizeOf(NetRes);
ErrCode:=WNetEnumResource(EnumHandle,EnumEntries,@NetRes[0],BufferSize);
نهاية؛
أ:=0;
بينما (string(netres[a].lprovider)<>'') و (errcode=NO_ERROR) يفعلان
يبدأ
mylistitem :=mylistitems.Add;
mylistitem.ImageIndex :=0;
mylistitem.Caption :=uppercase(stringreplace(string(NetRes[a].lpremotename),'//','',[rfReplaceAll]));
أ:=أ+1;
نهاية؛
wnet Closeenum(enumhandle);
نهاية؛
نهاية؛
◇[DELPHI] احصل على الدليل المشترك على جهاز كمبيوتر معين
الإجراء getsharefolder(const اسم الكمبيوتر:سلسلة);
فار
رمز الخطأ،أ:عدد صحيح؛
netres:array[0..1023] of netresource;
enumhandle:thhandle;
التعدادات، حجم المخزن المؤقت: كلمة؛
ق:سلسلة؛
mylistitems:tlistitems;
mylistitem:tlistitem;
mystrings:tstringlist؛
يبدأ
مع netres[0] ابدأ
dwscope :=RESOURCE_GLOBALNET;
dwtype :=RESOURCETYPE_DISK;
dwdisplaytype :=RESOURCEDISPLAYTYPE_SHARE;
dwusage :=RESOURCEUSAGE_CONTAINER;
llocalname :=nil;
lpremotename :=pchar(computername);
تعليق :=nil;
lpprovider :=nil;
النهاية؛ // احصل على العقدة الجذرية
errcode:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_DISK,RESOURCEUSAGE_CONTAINER,@netres[0],enumhandle);
إذا كان رمز الخطأ = NO_ERROR إذن
يبدأ
EnumEntries:=1024;
BufferSize:=SizeOf(NetRes);
ErrCode:=WNetEnumResource(EnumHandle,EnumEntries,@NetRes[0],BufferSize);
نهاية؛
wnet Closeenum(enumhandle);
أ:=0;
mylistitems:=controlcenter.lstfile.Items;
mylistitems.Clear;
بينما (string(netres[a].lprovider)<>'') و (errcode=NO_ERROR) يفعلان
يبدأ
مع عناصر القائمة الخاصة بي تفعل
يبدأ
mylistitem:=add;
mylistitem.ImageIndex :=4;
mylistitem.Caption :=extractfilename(netres[a].lpremotename);
نهاية؛
أ:=أ+1;
نهاية؛
نهاية؛
◇[DELPHI] احصل على الرقم التسلسلي للقرص الصلب
var SerialNum : pdword؛ a، b: dword؛
يبدأ
إذا كان GetVolumeInformation('c:/', Buffer, SizeOf(Buffer), SerialNum, a, b, nil, 0) ثم Label1.Caption := IntToStr(SerialNum^);
نهاية؛
◇ [DELPHI] التقليب التلقائي للصفحة في MEMO
الإجراء ScrollMemo(Memo: TMemo; Direction: char);
يبدأ
اتجاه الحالة
"د": البدء
SendMessage(Memo.Handle, { HWND of the Memo Control }
WM_VSCROLL، { رسالة Windows }
SB_PAGEDOWN، { أمر التمرير }
0) { غير مستخدم }
نهاية؛
'ش': تبدأ
SendMessage(Memo.Handle, { HWND of the Memo Control }
WM_VSCROLL، { رسالة Windows }
SB_PAGEUP، { أمر التمرير }
0); { غير مستخدم }
نهاية؛
نهاية؛
نهاية؛
الإجراء TForm1.Button1Click(Sender: TObject);
يبدأ
ScrollMemo(Memo1,'d'); //صفحة لأعلى
نهاية؛
الإجراء TForm1.Button1Click(Sender: TObject);
يبدأ
ScrollMemo(Memo1,'u'); // اقلب الصفحة
نهاية؛
◇[DELPHI]اضغط على زر الإدخال للانتقال إلى الموضع التالي في DBGrid (مفتاح Tab)
الإجراء TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
يبدأ
إذا كان المفتاح = #13 إذن
إذا DBGrid1.Columns.Grid.SelectedIndex < DBGrid1.Columns.Count - 1 ثم
DBGrid1.Columns[DBGrid1.Columns.grid.SelectedIndex + 1].Field.FocusControl
آخر
يبدأ
Table1.next;
DBGrid1.Columns[0].field.FocusControl;
نهاية؛
نهاية؛
◇[دلفي]كيفية تركيب جهاز التحكم
طريقة التثبيت:
1. لعنصر تحكم واحد، المكون-->تثبيت المكون..-->ملف PAS أو DCU-->تثبيت
2. بالنسبة لحزم التحكم التي تحتوي على ملفات *.dpk، ملف-->فتح (حدد *.dpk في مربع القائمة المنسدلة)-->تثبيت.
3. بالنسبة لحزم التحكم التي تحتوي على ملفات *.dpl، قم بتثبيت الحزم-->إضافة-->اسم ملف dpl.
4. إذا كان زر التثبيت أعلاه غير صالح، فجرّب زر الترجمة.
5. إذا كان وقت التشغيل lib، فأضفه إلى حزم وقت التشغيل ضمن الحزم ضمن الخيار.
إذا ظهرت رسالة مفادها أنه لا يمكن العثور على الملف أثناء الترجمة، فعادةً ما يكون ذلك بسبب عدم وجود دليل التثبيت الخاص بعنصر التحكم في دليل Lib الخاص بـ Delphi. هناك طريقتان لحل المشكلة:
1. انسخ ملفات التثبيت الأصلية إلى دليل Lib الخاص بدلفي.
2. أو قم بإضافة مسار الكود الأصلي لعنصر التحكم إلى دليل Delphi Lib في الأدوات-->خيارات البيئة.
◇[DELPHI] حذف الدليل بالكامل (deltree)
الإجراء TForm1.DeleteDirectory(strDir:String);
فار
ريال: TSearchRec؛
FileAttrs: عدد صحيح؛
اسم الملف: سلسلة؛
strPth:string;
يبدأ
strpth:=Getcurrentdir();
FileAttrs := faAnyFile;
إذا FindFirst(strpth+'/'+strdir+'/*.*', FileAttrs, sr) = 0 ثم
يبدأ
إذا (sr.Attr وFileAttr) = sr.Attr إذن
يبدأ
اسم الملف:=sr.Name;
إذا كان الملف موجودًا (strpth+'/'+strdir+'/'+strfilename) إذن
deletefile(strpth+'/'+strdir+'/'+strfilename);
نهاية؛
بينما FindNext(sr) = 0 افعل
يبدأ
إذا (sr.Attr وFileAttr) = sr.Attr إذن
يبدأ
اسم الملف:=sr.name;
إذا كان الملف موجودًا (strpth+'/'+strdir+'/'+strfilename) إذن
deletefile(strpth+'/'+strdir+'/'+strfilename);
نهاية؛
نهاية؛
FindClose(sr);
Removeir(strpth+'/'+strdir);
نهاية؛
نهاية؛
◇[DELPHI] الحصول على معلومات الصف والعمود للمؤشر الحالي لعنصر التحكم TMemo في Tpoint
1. وظيفة ReadCursorPos (SourceMemo: TMemo): TPoint؛
فار بوينت: TPoint؛
يبدأ
point.y := SendMessage(SourceMemo.Handle,EM_LINEFROMCHAR,SourceMemo.SelStart,0);
point.x := SourceMemo.SelStart-SendMessage(SourceMemo.Handle,EM_LINEINDEX,point.y,0);
النتيجة:= نقطة؛
نهاية؛
2.LineLength:=SendMessage(memol.handle, EM—LINELENGTH, Cpos, 0); // طول الخط
◇[DELPHI]قراءة الرقم التسلسلي للقرص الصلب
وظيفة GetDiskSerial(DiskChar: Char): سلسلة؛
فار
الرقم التسلسلي: pdword؛
أ، ب: كلمة مزدوجة؛
المخزن المؤقت: صفيف [0..255] من char؛
يبدأ
النتيجة := "";
إذا getVolumeInformation (PCHAR (Diskchar+":/") ، Buffer ، Sizeof (Buffer) ، Serialnum ،
أ ، ب ، لا شيء ، 0) ثم
النتيجة: = inttoStr (serialnum^) ؛
نهاية؛
◇ [الإنترنت] مهارات شاملة CSS المشتركة
1. P: First-Letter {Font-Size: 300 ٪ ؛
2. <link rel = stylesheet href = "basics.css" title = "contemporary"> // قم بتوصيل ورقة نمط خارجية
3. تضمين ورقة أنماط
<type type = "text/css" media = screen>
<!--
url url (http://www.htmlhelp.com/style.css) ؛
url import url (/stylesheets/punk.css) ؛ // كما هو مذكور أعلاه
body {background: url (foo.gif) Red ؛
.punk {color: Lime ؛
#wdg97 {font-size: marger} // انظر 6 للاطلاع على المراجع.
-->
</style>
4. <p style = "color: Red ؛ Font-Family: 'New Century Schoolbook' ، serif"> // inline style
<span style = "font-family: arial"> arial </span> // span يقبل سمات النمط والفئة والمعرف
<div class = note> <p> div يمكن أن يحتوي على فقرات وعناوين وجداول وحتى أجزاء أخرى </p> </viv>
5. <h1 class = punk> سمة الفئة </h1> // انظر 3 للاطلاع على التعريف.
6. <p id = wdg97> سمة المعرف </p> // انظر 3 للاطلاع على التعريف.
7. قائمة الممتلكات
نمط الخط: على غرار الخط: [عادي |
حجم الخط: [xx small |
تزيين النص:
تحويل النص:
لون الخلفية: خلفية اللون:
صورة الخلفية: صورة الخلفية: [<Urls> |
Line-Height: [Number>.
على غرار الحدود |
تعويم: [اليسار |
8. وحدة الطول
الوحدات النسبية:
م (م ، ارتفاع خط العنصر)
على سبيل المثال (X-Height ، ارتفاع الحرف "X")
PX (بكسل ، نسبة إلى دقة الشاشة)
الطول المطلق:
في (بوصة ، 1 بوصة = 2.54 سم)
سم (سنتيمتر ، 1 سنتيمتر = 10 ملليمترات)
مم (متر)
PT (نقطة ، 1 نقطة = 1/72 بوصة)
الكمبيوتر (PA ، 1 PA = 12 نقطة)
◇ [Delphi] خطوات موجزة لصنع VCL
1. إنشاء أحداث طريقة سمة المكون
(قم بإنشاء وحدات المكتبة ، وراثيًا كنوع جديدة ، وإضافة خصائص ، وطرق ، وأحداث ، ومكونات تسجيل ، وإنشاء ملفات حزمة)
2. معالجة message
3.Exception معالجة
4. أجزاء مرئية
◇ [Delphi] تحميل مكتبة الارتباط الديناميكي
التحميل الثابت: اسم الإجراء ؛ خارجي "lib.dll" ؛
التحميل الديناميكي: var handle: thandle ؛
مقبض: = loadlibrary ('lib.dll') ؛
إذا كان التعامل <> 0 ثم
يبدأ
{dosomething}
مكدنة (مقبض) ؛
نهاية؛
◇ [Delphi] متغيرات المؤشر والعناوين
var x ، y: integer ؛ p:^integer ؛ // pointer to integer variable
x: = 10 ؛
P: =@x ؛ // عنوان المتغير x
y: = p^؛ // تعيين المؤشر إلى y
الإجراء // إرجاع عنوان ذاكرة متغير العملية
◇ [Delphi] يحدد ما إذا كانت الشخصية شخصية صينية
bytetype ('كيف أنت هاها' ، 1) = mbleadbyte // هو الحرف الأول
bytetype ('كيف أنت هاها' ، 2) = mbtrailbyte // هو الحرف الثاني
bytetype ("كيف أنت هاها" ، 5) = mbsinglebyte // ليس شخصية صينية
◇ [Delphi] عملية تحديد موقع المذكرة
memo1.lines.delete (0) // حذف السطر 1
MEMO1.SELSTART: = 10 // تحديد موقع 10 بايت
◇ [Delphi] الحصول على رمز داخلي حرف مزدوج بايت
وظيفة getit (s: سلسلة): عدد صحيح ؛
يبدأ
النتيجة: = byte (s [1]) * $ 100 + byte (s [2]) ؛
نهاية؛
استخدام: getit ('حساب') // $ bcc6 وهو عشري 48326
◇ [Delphi] استدعاء إجراء تخزين البيانات
الإجراء المخزن هو كما يلي:
إنشاء الإجراء addRecord (
record1 varchar (10)
record2 varchar (20)
)
مثل
يبدأ
إدراج في Tablename (Field1 ، Field2) القيم (: Record1 ،: Record2)
نهاية
تنفيذ الإجراء المخزن:
تنفيذ الإجراء AddRecord ("Urrecord1" ، "Urrecord2")
◇ [Delphi] حفظ الملفات في حقول Blob
وظيفة blobcontentToString (اسم ملف const: سلسلة): سلسلة ؛
يبدأ
مع tfilestream.create (اسم الملف ، fmopenread) do
يحاول
setLength (النتيجة ، الحجم) ؛
اقرأ (مؤشر (نتيجة)^، الحجم) ؛
أخيراً
حر؛
نهاية؛
نهاية؛
// حفظ الحقل
يبدأ
إذا (opendialog1.execute) ثم
يبدأ
sfilename: = opendialog1.filename ؛
adotable1.edit ؛
Adotable1.FieldByName ('visio'). assstring: = blobcontentToString (filename) ؛
adotable1.post ؛
نهاية؛
◇ [Delphi] نسخ جميع الملفات إلى الحافظة
يستخدم shlobj ، activex ، clipbrd ؛
الإجراء tform1.copyToclipbrd (اسم ملف var: string) ؛
فار
Fe: tformatetc ؛
المتوسط: tstgmedium ؛
Dropfiles: Pdropfiles ؛
Pfile: Pchar ؛
يبدأ
fe.cfformat: = cf_hdrop ؛
fe.dwaspect: = dvaspect_content ؛
fe.tymed: = tymed_hglobal ؛
medium.hglobal: = globalalloc (gmem_share أو gmem_zeroinit ، sizeof (tdropfiles)+length (filename) +1) ؛
إذا medium.hglobal <> 0 ثم ابدأ
medium.tymed: = tymed_hglobal ؛
dropfiles: = globallock (medium.hglobal) ؛
يحاول
dropfiles^.pfiles: = sizeof (tdropfiles) ؛
dropfiles^.fwide: = false ؛
longint (pfile): = longint (dropfiles)+sizeof (tdropfiles) ؛
strpcopy (pfile ، اسم الملف) ؛
INC (pfile ، الطول (اسم الملف) +1) ؛
pfile^: = #0 ؛
أخيراً
GlobalUnlock (medium.hglobal) ؛
نهاية؛
clipboard.setashandle (cf_hdrop ، medium.hglobal) ؛
نهاية؛
نهاية؛
◇ [Delphi] سرد عمليات تشغيل النظام الحالي
يستخدم tlhelp32 ؛
الإجراء TForm1.Button1Click(Sender: TObject);
var lppe: tprocessentry32 ؛
وجدت: منطقية.
اليد: ثاندل.
يبدأ
Hand: = CreateToolHelp32Snapshot (Th32CS_Snapall ، 0) ؛
وجدت: = process32first (اليد ، lppe) ؛
بينما وجدت تفعل
يبدأ
listbox1.items.add (strpas (lppe.szexefile)) ؛
وجدت: = process32next (اليد ، lppe) ؛
نهاية؛
نهاية؛
◇ [Delphi] قم بإنشاء Table Table2 استنادًا إلى BDETable1
Table2: = ttable.create (nil) ؛
يحاول
table2.databasename: = table1.databasename ؛
Table2.FieldDefs.assign (Table1.FieldDefs) ؛
Table2.IndexDefs.assign (Table1.IndexDefs) ؛
table2.tablename: = 'new_table' ؛
Table2.CreateTable () ؛
أخيراً
Table2.free () ؛
نهاية؛
◇ [Delphi] أفضل طريقة لفهم خلق ومرجع DLL
// انظر إلى مصدر DLL (ملف-> جديد-> DLL) أولاً
Library Project1 ؛
الاستخدامات
sysutils ، فصول ؛
وظيفة Addit (F: integer ؛ s: integer): عدد صحيح ؛ التصدير ؛
يبدأ
makeasum: = f+s ؛
نهاية؛
صادرات
إضافة
نهاية.
// استدعاء (في مشروعك)
تطبيق
Addit الوظيفة (F: integer ؛ s: integer): integer ؛ far ؛ خارجي 'project1' ؛ // إعلان
{المكالمة هي Addit (2،4) ؛
◇ [Delphi] اقرأ ديناميكيًا حجم البرنامج نفسه
وظيفة gesselfsize: عدد صحيح.
فار
F: ملف البايت ؛
يبدأ
FileMode: = 0 ؛
issignfile (f ، application.exename) ؛
إعادة تعيين (و) ؛
النتيجة: = filesize (f) ؛ // الوحدة بايت
Closefile (F) ؛
نهاية؛
◇ [Delphi] قراءة معلومات BIOS
مع memo1.lines تفعل
يبدأ
إضافة ('mainboardbiosname:'+^i+string (pCHAR (ptr ($ fe061))))) ؛
إضافة ('MainboardBioscopyRight:'+^i+string (pchar (ptr ($ fe091))))) ؛
إضافة ('mainboardbiosdate:'+^i+string (pCHAR (ptr ($ ffff5))))) ؛
إضافة ('MainboardBiosserialNo:'+^i+string (pchar (ptr ($ fec71))))) ؛
نهاية؛
◇ [Delphi] إنشاء أسماء مستعارة MSSQL بشكل ديناميكي
الإجراء TForm1.Button1Click(Sender: TObject);
var MyList: TstringList ؛
يبدأ
MyList: = tstringList.create ؛
يحاول
مع MyList تفعل
يبدأ
إضافة ('اسم الخادم = 210.242.86.2') ؛
إضافة ('اسم قاعدة البيانات = dB') ؛
إضافة ('اسم المستخدم = sa') ؛
نهاية؛
Session1.Addalias ('TestSql' ، 'mssql' ، mylist) ؛
Session1.SaveConfigfile ؛
أخيراً
mylist.free ؛
Session1.Active: = true ؛
database1.databasename: = 'db' ؛
database1.AliasName: = 'testSql' ؛
database1.loginprompt: = false ؛
database1.params.add ('اسم المستخدم = sa') ؛
database1.params.add ('password =') ؛
database1.connected: = true ؛
نهاية؛
نهاية؛
الإجراء TForm1.Button2Click(Sender: TObject);
يبدأ
database1.connected: = false ؛
Session1.Deletealias ('TestSql') ؛
نهاية؛
◇ [Delphi] تشغيل موسيقى الخلفية
يستخدم MMSystem
// تشغيل الموسيقى
McIsendstring ('Open e: /1.mid type sequencer alias nn' ، '' ، 0 ، 0) ؛
McIsendstring ('play nn from 0' ، '' ، 0 ، 0) ؛
McIsendstring ('Close Animation' ، '' ، 0 ، 0) ؛
نهاية؛
// توقف عن اللعب
McIsendstring ('Open e: /1.mid type sequencer alias nn' ، '' ، 0 ، 0) ؛
McIsendstring ('Stop nn' ، '' ، 0 ، 0) ؛
McIsendstring ('Close Animation' ، '' ، 0 ، 0) ؛
◇ [Delphi] رمز عينة للواجهات والفئات
اكتب {واجهة وإعلان الفئة: الفرق هو أن أعضاء البيانات وأي أساليب غير عامة وأساليب عامة لا تستخدم الكلمة الرئيسية العامة في الواجهة}
Isample = interface // تعريف واجهة Isample
وظيفة getString: سلسلة.
نهاية؛
tsample = فئة (tinterfacedObject ، Isample)
عام
وظيفة getString: سلسلة.
نهاية؛
// تعريف الوظيفة
وظيفة tsample.getString: سلسلة ؛
يبدأ
النتيجة: = "ما هو العرض" ؛
نهاية؛
// كائن فئة الاتصال
var sample: tsample ؛
يبدأ
عينة: = tsample.create ؛
ShowMessage (sample.getString+'class object!') ؛
عينة.
نهاية؛
// واجهة الاتصال
var sampleInterface: Isample ؛
العينة: tsample ؛
يبدأ
عينة: = tsample.create ؛
SampleInterface: = عينة ؛ // يجب أن يستخدم تطبيق الواجهة فئة
{يمكن أيضًا التعبير عن السطرين أعلاه كـ sampleInterface: = tsample.create ؛}
showMessage (sampleInterface.getString+'Interface!') ؛
//sample.free ؛ {الفئات المحلية ، يتم إصدار الفئات في الواجهة تلقائيًا}
sampleInterface: = nil ؛ {relection joundface Object}
نهاية؛
◇ [Delphi] لا يبدو شريط المهام وكأنه برنامج مناسب
فار
ExtendedStyle: عدد صحيح.
يبدأ
application.initialize ؛
ExtendedStyle: = getWindowLong (application.handle ، gwl_exstyle) ؛
SetWindowLong (application.handle ، gwl_exstyle ، ExtendedStyle أو WS_EX_ToolWindow وليس ws_ex_appwindow) ؛
application.createform (tform1 ، form1) ؛
Application.Run;
نهاية.
◇ [Delphi] Alt+Ctrl+Del لا يمكنه رؤية البرنامج
إضافة إعلان بعد التنفيذ:
Function RecisterviceProcess (dwprocessid ، dwtype: integer): integer ؛
RegiserviceProcess (getCurrentProcessid ، 1) ؛ // إخفاء
RegiserviceProcess (GetCurrentProcessid ، 0) ؛ // Display
◇ [Delphi] اكتشف رمز محرك الأقراص البصري
var Drive: Char ؛
Cdromid: عدد صحيح ؛
يبدأ
لمحرك الأقراص: = 'd' to 'z' do
يبدأ
cdromid: = getDrivetype (pchar (محرك+':/')) ؛
إذا كان cdromid = 5 ثم showMessage ('' محرك الأقراص المضغوطة هو: '+محرك+' disk! ') ؛
نهاية؛
نهاية؛
◇ [Delphi] اكتشف بطاقة الصوت
إذا كان AuxgetNumDevs () <= 0 ، فإن showmessage ("لا توجد بطاقة صوتية تم العثور عليها! ') showmessage else (' اي بطاقة صوت موجودة! ') ؛
◇ [Delphi] ارسم في شبكة السلسلة
StringGrid.ondrawcell حدث
مع StringGrid1.Canvas تفعل
draw (rect.left ، rect.top ، image1.picture.graphic) ؛
◇ [SQL Server] طريقة أخرى لكتابة عبارة LIKE في SQL
على سبيل المثال ، للعثور على جميع المستخدمين الذين يحتوي اسم المستخدم على "C" ، يمكنك استخدامه
استخدم mydatabase
حدد * من Table1 حيث اسم المستخدم مثل "٪ C ٪"
فيما يلي طريقة أخرى لإكمال الوظيفة أعلاه:
استخدم mydatabase
حدد * من Table1 حيث Charindex ('c' ، اسم المستخدم)> 0
من الناحية النظرية ، تحتوي هذه الطريقة على بيان حكم واحد أكثر من الطريقة السابقة ، أي أن عملية الحكم هذه هي الأسرع.
بالنسبة للسلسلة والعمليات الأخرى ، ليس من الضروري استخدام وظيفة Charindex.
يمكن استخدام الأحرف التي تم العثور عليها مباشرة في هذا Charindex ، على النحو التالي:
استخدم mydatabase
حدد * من Table1 حيث Charindex ('٪' ، اسم المستخدم)> 0
يمكن أيضًا كتابتها على النحو التالي:
استخدم mydatabase
حدد * من Table1 حيث Charindex (Char (37) ، اسم المستخدم)> 0
شخصية ASCII ٪
◇ [Delphi] SQL يعرض قواعد بيانات/جداول متعددة
حدد A.Bianhao المتميز ، A.Xingming ، B.Gongzi من "Jianjie.dbf" A ، "Gongzi.dbf" B.
حيث A.Bianhao = B.Bianhao
◇ [Delphi] RFC (طلب للتعليق) ذات الصلة
تحتفظ IETF (فرقة عمل هندسة الإنترنت) مستندات RFC http://www.ietf.cnri.reston.va.us
RFC882: هيكل رأس الرسالة
RFC1521: MIME Part 1 ، طريقة نقل الرسائل
RFC1945: وثائق نقل المستندات متعددة الوسائط
◇ [Delphi] استخدام Tnmuupprocessor
var instream ، Outstream: tfilestream ؛
يبدأ
instream: = tfilestream.create (infile.txt ، fmopenread) ؛
OutStream: = tfilestream (outfile.txt ، fmcreate) ؛
nmuue.method: = uucode ؛ {uuencode/decode}
//nmuue.method:=Uumime ؛ {Mime}
nmuue.inputStream: = instream ؛
nmuue.outputStream: = OutStream ؛
nmuue.encode ؛ {ترميز المعالجة}
//nmuue.decode ؛ {DeCoding Processing}
instream.free ؛
Outstream.free ؛
نهاية؛
◇ [Delphi] عملية Tfilestream
// قراءة بايت العد من الموضع الحالي لدفق الملف إلى المخزن المؤقت العازلة
قراءة الوظيفة (var buffer ؛ count: longint): longint ؛ override ؛
// اقرأ المخزن المؤقت في دفق الملف
وظيفة الكتابة (const العازلة ؛ العد: longint): longint ؛ تجاوز ؛
// قم بتعيين مؤشر القراءة والكتابة الحالية لدفق الملفات للتعويض
وظيفة البحث (الإزاحة: longint ؛ الأصل: كلمة): longint ؛ تجاوز ؛
Origin = {sofrombeginning ، sofromcurrent ، sofromend}
// نسخ عدد من الموضع الحالي في دفق ملف آخر إلى الموضع الحالي في دفق الملف الحالي
وظيفة copyfrom (المصدر: tstream ؛ العد: longint): longint ؛
// اقرأ الملف المحدد إلى دفق الملف
var myfstream: tfilestream ؛
يبدأ
myfstream: = tfilestream.create (opendialog1.filename ، fmopenRead) ؛
نهاية؛
[JavaScript] تحقق مما إذا تم تثبيت IE Plug-in ShockWave & QuickTime
<script language = "javaScript">
var myplugin = navigator.plugins ["shockwave"] ؛
إذا (myplugin)
document.writeln ("لقد قمت بتثبيت ShockWave!")
آخر
document.writeln ("لم تقم بتثبيت ShockWave!")
</script> <br>
<script language = "javaScript">
var myplugin = navigator.plugins ["Quicktime"] ؛
إذا (myplugin)
document.writeln ("لديك QuickTime مثبت!")
آخر
document.writeln ("لم تقم بتثبيت QuickTime!")
</script>
[الإنترنت] تأثير الرجوع إلى iframe في الجدول
<الجدول cellpadding = "0" cellspacing = "0">
<tr>
<td> <ilayer id = "ad1" prosibility = "hidden"> </ilayer> <nolayer> <frame src = "i: /jinhtml/zj/h21.htm" marginwidth = "0" marginHeight = "110" Hspace = "10" vspace = "20" frameborder = "0" scrolling = "1"> </frame> </romayer> </td>
</r>
</table>
◇ [Delphi] مهارات التحكم في WebBrowser
1. إدراك وظيفة الطباعة
var date ، vaout: Olevariant ؛
webbrowser.controlinterface.execwb (olecmdid_print ، olecmdexecopt_dontpromptuser ، vain ، vaout) ؛
2. يقرأ WebBrowser صفحة من الدفق
دالة tform1.loadfromstream (const stream: tstream): hresult ؛
يبدأ
Astream.seek (0 ، 0) ؛
النتيجة: = (WebBrowser1.document كـ ipersistreaminit) .Load (tstreamadapter.create (astream)) ؛
نهاية؛
3. "حول:" سوف يتيح لك البروتوكول الانتقال إلى سلسلة HTML:
الإجراء tform1.LoadHtmlString (shtml: string) ؛
Var Flags ، TargetFramename ، postdata ، الرؤوس: Olevariant ؛
webbrowser1.navity ('about:' + shtml ، flags ، targetframename ، postdata ، headers)
4. "الدقة: سيتيح لك البروتوكول الانتقال إلى ملف HTML المخزّن كمورد.
الإجراء tform1.LoadHtmlResource ؛
Var Flags ، TargetFramename ، postdata ، الرؤوس: Olevariant ؛
webbrowser1.navity ('res: //' + application.exename + '/myhtml' ، flags ، targetframename ، postdata ، headers)
استخدم brcc32.exe لإنشاء ملفات موارد (*.rc)
myhtml 23 "./html/myhtml.htm"
morehtml 23 "./html/morehtml.htm"
{$ r html.res} //html.rc تم تجميعها في html.res
5. احفظ ملف HTML الكامل
فار
htmldocument: ihtmldocument2 ؛
Partistfile: ipersistfile ؛
يبدأ
htmldocument: = webbrowser1.document as ihtmldocument2 ؛
Partistfile: = htmldocument كـ ipersistfile ؛
persistfile.save (StringToolStr ('test.htm') ، true) ؛
بينما htmldocument.readyState <> "كاملة" تفعل
Application.ProcessMessages ؛
نهاية؛
◇ [Delphi] قم بتثبيت WebBrowser Control (التحكم IE المضمن)
يجب عليك أولاً التأكد من أن النظام يحتوي على برنامج Internet Explorer 4 أو لاحقًا ، قائمة Delphi-مكون-تحكم ActiveX ، وتحديد عناصر التحكم في الإنترنت Microsoft "في القائمة وأضف إلى ملف حزمة موجود ، سيتم عرض عنصر تحكم WebBrowser في لوحة التحكم ActiveX.
◇ [Delphi] تنفيذ نموذج Windows2000 شفاف
وظيفة setlayeredwindowattributes (hwnd: hwnd ؛ crey: longint ؛ balpha: dwflags: longint): longint ؛
الإجراء TForm1.FormCreate(Sender: TObject);
var L: Longint ؛
يبدأ
L: = getWindowLong (مقبض ، gwl_exstyle) ؛
L: = L أو 80000 دولار ؛
setWindowLong (مقبض ، gwl_exstyle ، l) ؛
setLayeredWindowAttributes (مقبض ، 0 ، 180 ، 2) ؛
نهاية؛
◇ [Delphi] يعرض البرنامج إعلانات WebBrowser تحميل الصور
Var Flag ، Frame ، Pdata ، Header: Olevariant ؛
يبدأ
webbrowser1.navity ('http://www.chineseall.com/images/logo.jpg' ، flag ، frame ، pdata ، header)
نهاية؛
◇ [Delphi] حساب حجم الدليل
وظيفة getDirectorySize (const adirectory: سلسلة): عدد صحيح ؛
فار
DIR: tsearchrec ؛
RET: عدد صحيح ؛
المسار: سلسلة.
يبدأ
النتيجة := 0;
المسار: = extractFilePath (adidectory) ؛
RET: = sysutils.findfirst (adidectory ، faanyfile ، dir) ؛
إذا ret <> no_error ثم
مخرج؛
يحاول
بينما ret = no_error تفعل
يبدأ
INC (النتيجة ، dir.size) ؛
// إذا كان دليلًا وليس "
if (dir.attr في [fadirectory]) و (dir.name [1] <> '.') ثم
INC (النتيجة ، getDirectorySize (path + dir.name + '/*.')) ؛
ret: = sysutils.findnext (dir) ؛
نهاية؛
أخيراً
sysutils.findClose (dir) ؛
نهاية؛
نهاية؛
◇ [Delphi] مسح دليل
الوظيفة الفارغة (thedirectory: سلسلة ؛ العودية: منطقية):
منطقية
فار
SearchRec: tsearchrec ؛
الدقة: عدد صحيح.
يبدأ
النتيجة: = خطأ ؛
thedirectory: = NormalDir (thedirectory) ؛
الدقة: = findFirst (thedirectory + '*.*' ، faanyfile ، searchrec) ؛
يحاول
بينما الدقة = 0 تفعل
يبدأ
if (searchRec.name <> '.') و (SearchRec.name <> .. ') ثم
يبدأ
if ((SearchRec.attr و fadirectory)> 0) والعودية
ثم ابدأ
reghdirectory (thedirectory + searchrec.name ، true) ؛
rediveDirectory (pchar (thedirectory + searchrec.name)) ؛
نهاية
آخر تبدأ
DELETEFILE (PCHAR (thedirectory + searchrec.name))
نهاية؛
نهاية؛
الدقة: = findNext (SearchRec) ؛
نهاية؛
النتيجة:=صحيح؛
أخيراً
FindClose (SearchRec.findhandle) ؛
نهاية؛
نهاية؛
◇ [Delphi] نشر برنامج ADO وتثبيت ADO
قم بتشغيل MDAC_TYP.EXE مرة واحدة.
يتم تثبيت الدليل بعد برنامج التثبيت هو نفس مسار الدليل في البرنامج. تم تثبيته.
◇ [Delphi] اعتراض رسائل نظام Windows: رسالة WM_Close
الإجراء wmclose (var msg: tmessage) ؛ رسالة wm_close ؛
الإجراء tmainform.wmclose (var msg: tmessage) ؛
يبدأ
m_bclosenoquery: = false ؛
موروث؛
نهاية؛