کد زیر را در فرم اصلی قرار دهید
procedure TMain.FormCreate(Sender: TObject);
begin
LoadKeyboardLayout('00000429', KLF_ACTIVATE);
end;
خاصیت KeyPreview از فرم رو به True تغییر بدین و فقط کد زیر رو تو رویداد KeyPress از فرم بذارین
procedure TForm1.FormKeyPress(Sender: TObject;
var
Key: Char);
begin
if
Key= #13 then begin
keybd_event(VK_TAB,1,0,0);
keybd_event(VK_TAB,1,KEYEVENTF_KEYUP,0);
Key:= #0;
end
;
end
;
کد زیر از دو رنگ در نمایش رکوردهای زوج و فرد استفاده میکند .
procedure TGridForm.DBGridDrawColumnCell( Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState) ; var grid : TDBGrid; row : integer; begin grid := sender as TDBGrid; row := grid.DataSource.DataSet.RecNo; if Odd(row) then grid.Canvas.Brush.Color := clSilver else grid.Canvas.Brush.Color := clDkGray; grid.DefaultDrawColumnCell(Rect, DataCol, Column, State) ; end; (* DBGrid OnDrawColumnCell *)
مدتی بود فایل های تصویری که با KM Player اجرا میکردم مشکل داشتن یعنی صدا رو داشتم اما تصویر سیاه بود حنی زیرنویس هم نشون میداد فقط تصویر نبود . کافی رو صفحه kmplayer راست کلیک کنید و گزینه های زیر رو انتخاب کنید:
Video advanced -> Video renderer and select VMR9 Renderless, EVR or EVR C/A
Preferences (F2) ->Video processing ->General tab and select Condition -> Always use
با فرض اینکه فایل xml به صورت زیر باشد
<?xml version="1.0" encoding="utf-8"?>
<platformIDxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<type>35</type>
<manufacturer>14</manufacturer>
<SerialNumber>
<version>2</version>
</SerialNumber>
</platformID>
ReplaceValueOf(oDoc, "//platformID/SerialNumber/version", "1");
oDoc.save(sWebConfigFilePath);
set oDoc = NOTHING;
end;
function ReplaceValueOf(oDoc, xPath, valueToPutIn)
OBJECT oNode;
begin
set oNode = oDoc.selectNodes(xPath)(0);
try
-- در صورتی که ورژن دارای خصوصیتی به نام نوع باشد خط زیر را اجرا میکنیم
-- oNode.attributes.getNamedItem("kind").value = valueToPutIn;
catch
oNode.attributes.getNamedItem("value").value = valueToPutIn;
MessageBox("Could not set '" + xPath + "' with '" + valueToPutIn + "'", SEVERE);
endcatch;
end;
مراحل نصب را تا قسمت دریافت فایل ini پیش میرویم .
ConfigurationFile.ini را در کنار setup sql قرار میدهیم.
یک فایل bath برای اجرا سایلنت می سازیم و کد زیر را در ان مینویسیم و در کنارفایل ini میگذاریم . در صورتی که فایل bat در مسیر کنار دو فایل دیگر نباشد باید مسیر را نیز به کد زیر اضافه نماییم .
"setup.exe" /ConfigurationFile="ConfigurationFile.ini"
حالا کافیست فایل bat را اجرا کنیم
تنظیمات فایل ConfigurationFile.ini برای نسخه Enterprise:
· در صورتی که برای دیتابیس پسورد گذاشتیم خط زیر را با پسورد مدنظر وارد میکنیم :
SAPWD ="PASS"
· مقدار QUIET رو به True تغییر بدید (این پارامتر مشخص کننده این است که برنامه نصب ما به صورت سایلنت یا بدون دخالت کاربر یا به صورت unattended installation اجرا شود)
· مقدار SQLSYSADMINACCOUNTS رو به “BUILTIN\ADMINISTRATORS” تغییر بدید
· متغیر PID رو اضافه کنید و مقدار آن رو برابر با لایسنس یا سریال نرم افزار قرار در صورتی که برنامه شما کرک شده می باشد و هنگام نصب نرم افزار ، سریال آن هم وجود دارد ، نیازی به افزودن این خط نداریم
· پارامتر IACCEPTSQLSERVERLICENSETERMS رو اضافه کنید و مقدار آن رو برابر با “True” قرار دهید
· حذف پارامتر ADDCURRENTUSERASSQLADMIN ، زمانی که مقدار پارامتر SQLSYSADMINACCOUNTS تعیین شده باشد از این پارامتر نمی توان استفاده کرد. فقط در اینستالر Express جواب می دهد.
· حذف پارامتر UIMODE ، این پارامتر با پارامتر QUITE قابل اسفاده نمی باشد
· حذف پارامترهای INSTALLSHAREDDIR ، INSTALLSHAREDWOWDIR ، INSTANCEDIR . زمانی که می خواهیم نصب در پوشه های پیش فرض انجام شود.
BOOL bvCheck1,bvCheck2;
begin
Dlg_SdAskOptions:
bvCheck1= TRUE;
bvCheck2= FALSE;
nResult=AskOptions (EXCLUSIVE," Select your Type Below.","install ", bvCheck1,"not install", bvCheck2);
if (bvCheck1 = 1 )then
goto DLG_Install;
endif;
به عنوان نمونه اگر فایل ini با نام ConfigurationFile در مسیر جاری فایل نصب باشد :
[general]
title="1234"
کد زیر را برای تغییر دادن مقادیر فایل می نویسیم :
WriteProfString(SRCDIR^"my folder\\ConfigurationFile.ini",
"general",
"title",
"\""+1111+"\"") ;
به عنوان نمونه اگر فایل ini با نام ConfigurationFile به صورت زیر باشد :
[general]
title="1234"
کد زیر را برای تغییر دادن مقادیر فایل می نویسیم :
var path,value :string;
IniFile : TIniFile;
begin
value:='1111';
path:=ExtractFilePath(Application.ExeName);
try
IniFile:=TIniFile.Create(path+'\ConfigurationFile.ini');
inifile.WriteString('general','title',value);
finally
inifile.Free;
close;
end;
کد زیر به جای انتخاب فایل در OpenDialog، انتخاب مسیر را نشان میدهد
var
OpenDialog: TFileOpenDialog;
SelectedFolder: string;
begin
OpenDialog := TFileOpenDialog.Create(nil);
try
OpenDialog.Options := OpenDialog.Options + [fdoPickFolders];
if not OpenDialog.Execute then
Abort;
SelectedFolder := OpenDialog.FileName;
finally
OpenDialog.Free;
end;
اگر روی RadioGroup بخواهیم فاکوس کنیم میتوانیم از کد زیر استفاده نماییم :
(RadioGroup1.Controls[0] as TRadioButton).SetFocus;
شاید برای شما هم اتفاق افتاده باشه که نیاز به کلیک در dbgrid داشته باشید به عنوان مثال در داخل dbgrid چک باکس دارید و میخواهید با کلیک روی ان انتخاب شود . در این صورت از کد زیر میتونید استفاده کنید :
procedure DbGridCellClick(Column: TColumnEh);
begin
if DbGrid.SelectedField.DataType=ftBoolean then
// statement
end;
در مثال زیر بزرگترین تاریخ در یک ردیف را پیدا میکند . با توجه به نیاز خود کوئری را تغییر دهید .
که در ان data_table نام جدول مورد نظر ، date1 ، date2 ، date3 نام فیلدها میباشد .
SELECT MAX(date_columns) AS max_date
FROM ( (SELECT date1 AS date_columns
FROM data_table )
UNION
( SELECT date2 AS date_columns
FROM data_table
)
UNION
( SELECT date3 AS date_columns
FROM data_table
(
AS date_query(
و یا
SELECT MAX(MostRecentDate) FROM ( SELECT CASE WHEN date1 >= date2 AND date1 >= date3 THEN date1 WHEN date2 >= date1 AND date2 >= date3 THEN date2 WHEN date3 >= date1 AND date3 >= date2 THEN date3 ELSE date1 END AS MostRecentDate FROM data_table ) AS date_query
Edit1.Text:=StringReplace(Edit1.Text,' ','',[rfReplaceAll]);
کد ملی شماره ای است 10 رقمی که از سمت چپ سه رقم کد شهرستان ، شش رقم بعدی کد منحصر به فرد برای فرد دارنده و رقم آخر آن هم یک رقم کنترل است که از روی 9 رقم سمت چپ بدست می آید. برای بررسی کنترل کد کافی است مجدد از روی 9 رقم سمت چپ رقم کنترل را محاسبه کنیم
از آنجایی که درسیستم کد ملی معمولا قبل از کد تعدادی صفر وجود دارد.(رقم اول و رقم دوم از سمت چپ کد ملی ممکن است صفر باشد) و در بسیاری از موارد ممکن است کاربر این صفرها را وارد نکرده باشد و یا نرم افزار این صفرها را ذخیره نکرده باشد بهتر است قبل از هر کاری در صورتی که طول کد بزرگتر مساوی 8 و کمتر از 10 باشد به تعداد لازم (یک تا دو تا صفر) به سمت چپ عدد اضافه کنید. ساختار کد ملی در زیر نشان داده شده است
1- برای محاسبه رقم کنترل از روی سایر ارقام ، هر رقم را در موقعیت آن ضرب کرده و حاصل را با هم جمع می کنیم.
2- مجموع بدست آمده از مرحله یک را بر 11 تقسیم می کنیم
3- اگر باقیمانده کمتر از 2 باشد ، رقم کنترل باید برابر باقیمانده باشد در غیر اینصورت رقم کنترل باید برابر یازده منهای باقیمانده باشد
به عنوان مثال
4709450552
باید از سمت چپ
یکی یکی اعداد را از 10 به پایین ضرب کنیم البته تا 9 تا عدد یعنی 470945055
40=10*4
63=9*7
0=8*0
63=7*9
24=6*4
25=5*5
0=4*0
15=3*5
10=2*5
خوب
حالا باید تمام این حاصلضرب ها رو با هم جمع کنیم
که میشه 240
حالا باید این عدد رو تقسیم بر 11
کنیم البته ما با باقیمانده تقسیم کار داریم
اگر باقیمانده از 2 کوچکتر بود همون
عدد میشه رقم آخر کد ملی
اما اگر از 2 بیشتر بود 11 رو منهای
باقیمانده میکنیم
در این مثال باقیمانده عدد 9 میشه
2=9-11
پس کد اخر میشه عدد 2 حالا به کد ملی ما نگاه کنید 4709450552
شما هم میتونید از همین روش بفهمید که
کد ملی درست وارد شده یا نه
امید وارم خوب تونسته باشم توضیح بدم
ادامه مطلب ...