أخوية  

أخوية سوريا: تجمع شبابي سوري (ثقافي، فكري، اجتماعي) بإطار حراك مجتمع مدني - ينشط في دعم الحرية المدنية، التعددية الديمقراطية، والتوعية بما نسميه الحد الأدنى من المسؤولية العامة. نحو عقد اجتماعي صحي سليم، به من الأكسجن ما يكف لجميع المواطنين والقاطنين.
أخذ مكانه في 2003 و توقف قسراً نهاية 2009 - النسخة الحالية هنا هي ارشيفية للتصفح فقط
ردني  لورا   أخوية > رقميات > كمبيوتر > برمجة و أنظمة تشغيل

إضافة موضوع جديد  إضافة رد
 
أدوات الموضوع
قديم 24/12/2003   #1
keko
مشرف متقاعد
 
الصورة الرمزية لـ keko
keko is offline
 
نورنا ب:
Oct 2003
المطرح:
سوريا
مشاركات:
404

افتراضي كيف يحتفظ البرنامج بآخر شكل له عند تشغيله كل مرّة


كيف يحتفظ البرنامج بآخر شكل له عند تشغيله كل مرّة

كيف يحتفظ برنامجنا بآخر شكل كان عليه عند تشغيله لآخر مرّة. أو بعبارة أدق كيف تحتفظ النماذج= الشاشات forms بنفس الحجم و الو ضعية التي كانت عليها كما تركها المستخدم آخر مرّة بما فيها خصائصها و خصائص المكوّنات الأخرى التي تحتويها الأخرى كالخطوط والألوان.
لو قمت بتشغيل برنامج المفكرة Notepad و غيّرت في حجم و موضع نافذة البرنامج؛ أو حتى نوع الخط ؛ فإن المرة الثانية التي تعيد فيها تشغيل البرنامج ستلاحظ أنّه احتفظ بنفس التغييرات. الطريقة التي يتّبعها برنامج المفكرة ؛ هي قيامه بتخزين هذه المعلومات حال اغلاقه في سجلّ الويندوز Registry في مدخل: HKEY_CURRENT_USER\Software\Microsoft\Notepad ،ثم قيامه بقراءة هذه المعلومات عند تشغيله مرّة أخرى ليقوم بتوصيف النافذة و صياغة خصائصها حسب المعلومات المسجّلة.
هذا الأسلوب مناسب في حالة أن الخصائص أو المعلومات المراد تسجيلها و الاحتفاظ بها معدودة و يسهل حصرها.
لكن ماذا لو أن النموذج form مزدحم بالمكونات بأنواعها، وتريد أن تحتفظ بكل التغييرات التي تطرأ عليها، ماذا لو أردت أن تحتفظ حتى بالبيانات التي يدخلها المستخدم كالنصوص في مكونات الكتابة أو الصور التي يحملّها المستخدم في احدى مكونات الصور في البرنامج.
الأسلوب المقترح هنا، هو أن نقوم بحفظ كافة خصائص النموذج form حال اغلاقه دفعة واحدة في ملف خارجي . و عند تشغيل البرنامج مرّة أخرى و اظهار النموذج، يقوم البرنامج بتحميل الملف و تخصيص بياناته للنموذج ذات العلاقة عوضا عن البيانات المحددة في وقت التصميم. و سنستخدم في حفظ و قراءة الملف أمرين من أوامر دلفي : WriteComponent لحفظ المكونات في الملف و ReadComponent لقراءة المكونات من نفس الملف.

unit fPreservForm;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs;

type
TForm1 = class(TForm)
private

اعادة تعريف الاجرائيتين Create و BeforeDestruction التابعتين أصلا لصنف(class) TComponent الذي يعدّ أحد الأصول التي ينحدر منها صنف TForm:


public
constructor Create(AOwner: TComponent); override; // (1)
procedure BeforeDestruction; override; // (2)
end
;

يمكنك الوقوف بالمؤشّر عل سطر التعريف و الضغط على مفاتيح Ctrl+Shift+C لبناء جسم الاجرائتين آليا.
بعدها، نعرّف متغيرا عاما نحتفظ فيه باسم و مسار ملف الحفظ :
var
Form1: TForm1;
PreservePath: string; // (3)
implementation

المتن في الاجرائيتين ، لاحظ أن اسم الملف هو نفس اسم صنف النموذج متبوعا بالامتداد : "sav" ، و يتم حفظه في مجلد Preserve.
{$R *.dfm}

constructor TForm1.Create(AOwner: TComponent); // (4)
begin

PreservePath := ExtractFilePath(Application.ExeName) +
'Preserve';
if not DirectoryExists(PreservePath) then
CreateDir(PreservePath);
PreservePath := PreservePath + '\';

if FileExists(PreservePath + ClassName + '.sav') then
begin
CreateNew(AOwner, 0);
with TFileStream.Create(PreservePath + ClassName + '.sav',
fmOpenRead or fmShareDenyWrite) do
try
ReadComponent(Self);
finally
Free;
end;
end
else

inherited Create(AOwner);

end;
procedure TForm1.BeforeDestruction; // (5)
begin
inherited;

with TFileStream.Create(PreservePath + ClassName + '.sav',
fmCreate) do
try
WriteComponent(Self);
finally
Free;
end;
end;


end.
ملاحظة أخيرة:
بما أن النموذج سوف يقرأ محتوياته من ملف خارجي و لن يعتدّ بالمواصفات المحددة له عند التصميم؛ فربما تجد نفسك مضطرا لعدم تفعيل الاجرائتين الا عند الاصدار النهائي للبرنامج.

عرين العروبة بيت حرام ..... وعرش الشموس حمىً لا يضام

هادا بلدي سوريا
  رد مع اقتباس
قديم 17/04/2004   #2
شب و شيخ الشباب katoob
شبه عضو
-- أخ لهلوب --
 
الصورة الرمزية لـ katoob
katoob is offline
 
نورنا ب:
Apr 2004
المطرح:
تلكلخ
مشاركات:
94

إرسال خطاب MSN إلى katoob إرسال خطاب Yahoo إلى katoob
افتراضي



انا جربتها بس ما اشتغلت قلي ليش اذا بتريد :P

واذا عندك البرنامج شغال يرجى ارساله بالبريد

طنش تعش تنتعش

ما بيقطع هالراس غير اللي ركبوا
  رد مع اقتباس
إضافة موضوع جديد  إضافة رد



ضوابط المشاركة
لافيك تكتب موضوع جديد
لافيك تكتب مشاركات
لافيك تضيف مرفقات
لا فيك تعدل مشاركاتك

وسوم vB : حرك
شيفرة [IMG] : حرك
شيفرة HTML : بليد
طير و علّي


الساعة بإيدك هلق يا سيدي 12:18 (بحسب عمك غرينتش الكبير +3)


Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ما بخفيك.. في قسم لا بأس به من الحقوق محفوظة، بس كمان من شان الحق والباطل في جزء مالنا علاقة فيه ولا محفوظ ولا من يحزنون
Page generated in 0.04187 seconds with 14 queries