برمجة قاموس انجليزي عربي ناطق بالدلفي
بسم الله الرحمن الرحيم
وصلاة والسلام على أشرف المرسلين سيدنا محمد صلى الله عليه وسلم وعلى آله وصحبه أجمعين
الحمد لله نحمده ونستغفره
اللهم اهدنا
هذه تجربة متواضعة
كيفية برمجة قاموس انجليزي عربي ناطق بالدلفي خمسة
ملاحظة :
طريقة تصميم النموذج الاول والثاني تركتها لك
كل واحد حسب ذوقه
-------------------------------------
// الوحدة الاولى
unit Unit1;
// الواجهة الوحدة
interface
{ قسم التصريحات ويضم هذا القسم
كل الوحدات والعناصر والاجراءات والدوال والمتغييرات وثوابت
}
// استدعاء الوحدات
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons;
//
type
//
TForm1 = class(TForm)
// ضع على النموذج مربع نص 2
Edit1: TEdit;
Edit2: TEdit;
// ضع على النموذج 4 ازرار
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
Button2: TButton;
// ضع على النموذج مربع نص ذو قائمة 1
ComboBox1: TComboBox;
// الاجراءات المستعملة
procedure BitBtn1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure Edit1Enter(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
private
public
end;
// تصريح بالمتغييرات
var
Form1: TForm1;
implementation
// استدعاء وحدتين
uses Unit2, Comobj;
{$R *.DFM}
// الاجراء
procedure TForm1.BitBtn1Click(Sender: TObject);
// تصريح بتسجيلة
type na = record
// المتغيير الاول في التسجيلةوالحد الاقصى لهذا المتغيير هو 40 حرف او رقم
// وهو من نوع السلاسل الحرفية
NomEn : string[40];
// المتغيير الثاني
NomAr : string[40];
// انهاء التسجيلة
end;
// تصريح بالمتغييرات
var
// متغيير من نوع تسجيلة
na1: na;
// متغيير من نوع ملف والملف من نوع تسجيلة
fich1: File of na;
// متغيير منطقي
boo1: boolean;
// بداية
begin
// اسناد القيمة خطأ للمتغيير
boo1 := false;
// فتح الملف المحدد من اجل القراءة او الكتابة
AssignFile(fich1, 'EnAr24.dat');
// فتح الملف بدون مسح محتواه
reset(fich1);
// حلقة تكرارية من بداية الملف الى نهاية الملف
while not eof(fich1) do
// بداية الحلقة
begin
// قراءة من الملف المفتوح
read(fich1, na1);
// الشرط
// إذا كان محتوى مربع النص يساوي الكلمة الانجليزية في القاموس
// سيتم الدخول الى الشرط
// أي
// في حالة تساوي القيمتين
if Edit1.Text = na1.NomEn then
// بداية الشرط
begin
// سيتم وضع الكلمة الانجليزية في مربع النص ذو القائمة
ComboBox1.Text := na1.NomEn;
// سيتم اضافة الكلمة الانجليزية الى قائمة مربع النص ذو القائمة المنسدلة
ComboBox1.Items.Add(ComboBox1.Text);
// سيتم وضع الكلمة العربية الى مربع النص
Edit2.Text := na1.NomAr;
// اسناد القيمة صح الى المتغيير المنطقي
boo1 := true;
// نهاية الشرط
end;
// نهاية الحلقة
end;
// إغلاق الملف المفتوح
CloseFile(fich1);
// اذا كانت قيمة المتغيير المنطقي خطأ
// فانه سيتم اظهار رسالة
// أي أن الكلمة غير موجودة في القاموس
if not boo1 then ShowMessage('هذه الكلمة غير موجودة');
// عدم تفعيل زر البحث
BitBtn1.Enabled := false;
// مسح مربع النص
Edit1.Text := '';
// نهاية الاجراء
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
// اظهار النموذج الثاني
Form2.show;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
// اسناد القيمة الظاهرة لمربع النص ذو القائمة المنسدلة
// الى مربع النص
Edit1.Text := ComboBox1.Text;
end;
// اجراء انشاء نموذج
procedure TForm1.FormCreate(Sender: TObject);
// بداية
begin
// من اليمين الى اليسار أي الجهة العربية
Form1.BiDiMode := bdRightToLeft;
// الخط عربي
Form1.Font.Charset := ARABIC_CHARSET;
// عدم تفعيل زر البجث
BitBtn1.Enabled := false;
// عنوان زر البحث
BitBtn1.Caption := 'معنى الكلمة';
// عنوان زر النطق
BitBtn2.Caption := 'نطق';
// عنوان زر الاغلاق
BitBtn3.Caption := 'اغلاق';
// عنوان زر فتح النموذج الثاني
Button2.Caption := 'نموذج 2 ';
// توسيط نموذج داخل الشاشة
Form1.Position := poScreenCenter;
// عنوان النموذج الاول
Form1.Caption := 'اسم القاموس';
// مربع نص ذو قائمة
// مسح
ComboBox1.Text := '';
// مسح مربع النص الاول
Edit1.Text := '';
// مسح مربع النص الثاني
Edit2.Text := '';
// نهاية
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
// الشرط
if Edit1.Text <> '' then
// زر البحث ممكن أو نشط
BitBtn1.Enabled := true
// زر البحث غير ممكن
else BitBtn1.Enabled := false;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
// تصريح بالمتغيير
var
calam: OLEVariant; // نوع المتغيير
begin
// اسناد قيمة دالة الانشاء الى المتغيير
calam := CreateOLEObject('SAPI.SpVoice');
// نطق الكلمة المحدد في مربع النص ذو القائمة
calam.Speak(ComboBox1.Text, 0);
end;
procedure TForm1.Edit1Enter(Sender: TObject);
begin
// دخول الى العنصر
// كتابة باللغة الانجليزية
LoadKeyBoardLayout('00000409',Klf_Activate);// english
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
// أوامر الاغلاق
Close;
// Halt;
//Application.Terminate;
end;
// نهاية الوحدة
end.
-------------------------------------------------
-
-------------------------------------------------
//////////////////////////////////////////////////////////////////
// //
// //
// //
//////////////////////////////////////////////////////////////////
// الوحدة الثانية
unit Unit2;
// الواجهة
interface
// استدعاء الوحدات
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons;
// النوع
type
TForm2 = class(TForm)
// ضع هذه العنلصر على النموذج
// مربع نص أو تحرير ذو سطرواحد
Edit1: TEdit;
Edit2: TEdit;
// ازرار
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
// لافتة من أجل العناوين
Label1: TLabel;
Label2: TLabel;
// مربع نص متعدد السطور
Memo1: TMemo;
// ازرار
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure Edit2Enter(Sender: TObject);
procedure Edit1Enter(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
public
end;
// بداية التسجيلة
type na = record
// العنصر أو المتغيير الاول
NomEn : string[40];
// العنصر أو المتغيير الثاني
NomAr : string[40];
// نهاية التسجيلة
end;
// تصريح بالمتغييرات العامة
var
// نوع النموذج
Form2: TForm2;
// نوع الملف وهو من نوع تسجيلة
fich1: File of na;
// متغيير من نوع تسجيلة
na1: na;
// متغيير من نوع صحيح
i: integer;
// متغيير من نوع منطقي
folle1: boolean;
implementation
{$R *.DFM}
// بداية الاجراء
procedure TForm2.BitBtn1Click(Sender: TObject);
// تصريح بمتغيير منطقي
var boo0: boolean;
begin
// اسناد القيمة صح
folle1 := true;
// اسناد أو اعطاء القيمة الى المتغيير إي
i := 0;
// هذه الدالة تبحث عن الملف ان كان موجود أم لا
// اذا كان موجود يأخذ المتغيير المنطقي القيمة صح
if FileExists('EnAr24.dat') then boo0 := true
// واذا لم يكن موجود يلأخذ القيمة خطأ أ صفر
else boo0 := false;
// انشاء الملف اذا لم يكن موجود
AssignFile(fich1, 'EnAr24.dat'); // open file
// هذا الشرط من أجل عدم وجود أو وجود الملف
// اذا لم يكن موجود سيتم انشاءه من جديد
if not boo0 then ReWrite(fich1)
// اذا كان موجود سيتم فتحه
else Reset(fich1);
// هذه الدالة من أجل تركيز مؤشر الكتابةفي بدايةالملف
seek(fich1, 0);
// بداية الحلقة
// تبدأ هذه الحلقة من صفر الى نهاية الملف
while not eof(fich1) do
// بداية
begin
// قراءة الملف من البداية الى النهاية
read(fich1, na1);
// متغيير متزائد
// زيادة بواحد في كل مرة
i := i + 1;
// نهاية
end;
// تركيز مؤشر الكتابة في نهاية الملف
//
seek(fich1, i);
// تمكين مربع التحريرالاول
Edit1.Enabled := true; // word english
// تمكين مربع التحرير الثاني
Edit2.Enabled := true; // word arabic
// عدم تمكين زر الفتح
BitBtn1.Enabled := false;// Button1 open file
// تمكين أو تفعيل زر الكتابة
BitBtn2.Enabled := true;// Button2 write in file
// عدم تفعيل زر العرض
BitBtn5.Enabled := false; // Button5 show text
// نهاية الاجراء
end;
// بداية الاجراء
procedure TForm2.BitBtn2Click(Sender: TObject);
// تصريح بمتغيير من نوع صحيح
var n1: integer;
// بداية
begin // write in file
// اسناد محتوى مربع التحرير الاول الى العنصر الاول في التسجيلة
na1.NomEn := Edit1.Text; // word english
// اسناد محتوى مربع التحرير الثاني الى العنصر الثاني في التسجيلة
na1.NomAr := Edit2.Text; // word arabic
// كتابة عناصر التسجيلة في الملف
Write(fich1, na1);
// مسح مربع التحرير الاول
Edit1.Text := ''; // word english
// مسح مربع التحرير الثاني
Edit2.Text := ''; // word arabic
// تمكين زر الاغلاق
BitBtn3.Enabled := true; // Button3 Close file
// اسناد أو اعطاء قيمة المتغير إي الى آن واحد
n1 := i;
// هذه الدالة من أجل تركيز مؤشر الكتابةفي بدايةالمل
seek(fich1, 0);
// مسح مربع التحرير متعدد السطور
Memo1.Lines.Clear;
// بداية الحلقة
// تبدأ هذه الحلقة من صفر الى نهاية الملف
while not eof(fich1) do
// بداية
begin
// قراءة الملف من البداية الى النهاية
read(fich1, na1);
// عرض محتوى الملف في مربع التحرير المتعدد السطور
Memo1.Lines.Add(na1.NomEn+' = '+na1.NomAr);
// نهاية
end;
// ارجاع القيمة الاصلية الى المتغيير
i := n1;
// نهاية الاجراء
end;
// بداية الاجراء
procedure TForm2.BitBtn3Click(Sender: TObject);
begin
// Close file
// اغلاق الملف نهائيا
CloseFile(fich1);
// اسناد القيمة خطأ
folle1 := false;
// عدم تفعيل مربع التحريرللاول
Edit1.Enabled := false; // word english
// عدم تمكين مربع التحرير الثاني
Edit2.Enabled := false; // word arabic
// تفعيل زر الفتح
BitBtn1.Enabled := true; // Button1 open file
// عدم تفعيل زر الكتابة
BitBtn2.Enabled := false; // Button2 write in file
// عدم تمكين زر الاغلاق
BitBtn3.Enabled := false // Button3 Close file
// نهاية الاجراء
end;
// بداية الاجراء
// وهو اجراء انشاء النموذج
procedure TForm2.FormCreate(Sender: TObject);
// بداية
begin
// من اليمين الى اليسار أي الجهة العرب
Form2.BiDiMode := bdRightToLeft;
// الخط عربي
Form2.Font.Charset := ARABIC_CHARSET;
//
Form2.Caption := 'كتابة الكلمات العربية والانجليزية في القاموس';
Label1.Caption := 'اكتب كلمة الانجليزية';
Label2.Caption := 'اكتب كلمة بالعربية';
BitBtn1.Caption := 'فتح الملف';
BitBtn2.Caption := 'الكتابة في الملف';
BitBtn3.Caption := 'اغلاق الملف';
BitBtn4.Caption := 'عودة';
BitBtn5.Caption := 'عرض محتوى الملف' ;
// اسناد القيمة خطأ
folle1 := false;
// توسيط النموذج في الشاشة
Form2.Position := poScreenCenter;
// مسح مربع التحرير الاول
Edit1.Text := ''; // word english
// مسح مربع التحرير الثاني
Edit2.Text := ''; // word arabic
// مسح مربع التحرير متعدد السطور
Memo1.Lines.Clear;
// عدم تفعيل مربع التحرير الاول
Edit1.Enabled := false; // word english
// عدم تفعيل مربع التحرير الثاني
Edit2.Enabled := false; // word arabic
// تفعيل زر الفتح
BitBtn1.Enabled := true; // Button1 open file
// عدم تفعيل زر الطتابة
BitBtn2.Enabled := false; // Button2 write in file
// عدم تفعيل زر الاغلاق
BitBtn3.Enabled := false // Button3 Close file
// نهاية الاجرا
end;
// بداية الاجراء
procedure TForm2.BitBtn5Click(Sender: TObject);
begin
// مسح مربع التحرير متعدد السطور
Memo1.Lines.Clear;
// انشاء الملف اذا لم يكن موجوأو فتحه اذا كان موجود
AssignFile(fich1, 'EnAr24.dat'); // open file
// اذا كان موجود سيتم فتحه
Reset(fich1);
// بداية الحلقة
// تبدأ هذه الحلقة من صفر الى نهاية الملف
while not eof(fich1) do
// بداية
begin
// قراءة الملف من البداية الى النهاية
read(fich1, na1);
// عرض محتوى الملف في الميمو 1
Memo1.Lines.Add(na1.NomEn+' = '+na1.NomAr);
// نهاية الحلقة
end;
// اغلاق الملف المفتوح
CloseFile(fich1);
// عدم تفعيل زر العرض
BitBtn5.Enabled := false; // Button5 show text
// نهاية الاجراء
end;
procedure TForm2.Edit2Enter(Sender: TObject);
begin
// هذه الدالة تجعل مؤشر الكتابة ينتقل الى اللغة العربية
LoadKeyBoardLayout('00000401',Klf_Activate); // Arabic
// أي
// اللغة العربية السعودية
// نهاية الاجراء
end;
// الاجراء
procedure TForm2.Edit1Enter(Sender: TObject);
begin
// هذه الدالة تجعل مؤشر الكتابة ينتقل الى اللغة الانجليزية
LoadKeyBoardLayout('00000409',Klf_Activate);// english
// أي
// انجليزية الولايات المتحدة الامريكية
// نهاية الاجراء
end;
// نهاية الوحدة
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
// اغلاق الملف إذا كان مفتوح
if folle1 then
BitBtn3Click(Sender);
end;
end.
-----------------------
اكتب هذه الكلمات في القاموس مثلا
book =
door =
open =
close =
وشاهد نتيجة
نرجو من السادة الكرام الذين يطلعون على هذا العمل متواضع أن يردوا علي وشكرا
اللهم احفط بلدنا الجزائر وسائر بلاد المسلمين أمين
شكر وشكرا