كيف يحتفظ البرنامج بأخر شكل بعد التغييرات عليه
#1
كثيراً ما يغيير المستخدم شكل البرنامج كألوان العناصر أو الخطوط أو أي شيء في البرنامج وهذه طريقة الإحتفاظ بهذه التغييرات في التشغيل التالي للبرنامج :
1- أضف في القسم public التصريح التالي:

PHP كود :
public
    { Public 
declarations }

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

2-أضغط على Ctrl+Shift+C لتعبئة قلب الإجرائيتن:

PHP كود :
procedure TForm1.BeforeDestruction;
begin
  inherited
;
  
with TFileStream.Create(PreservePath + ClassName + '.sav',    fmCreate) do
  try
    
WriteComponent(Self);
  finally
    
Free;
  
end; 

و

PHP كود :
constructor TForm1.Create(AOwner: TComponent);
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; 

وبذلك سيتم حفظ الإعدادات في مجلد PreservePath و بملف بلاحقة .sav في نفس مجلد البرنامج.

والله الموفق للجيمع.
الرد
#2
بارك الله لك اخ عصآم, جميل,

لكن هل لك ان ترفق مثآل بارك الله لك, ؟

وهل يحتفظ البرنآمج بكل التغيّيرآت لكل المكمبننتات ؟ (لا يوجد لووب يعيد الكود على كل الكومبننتات)

شكرا لك, وبارك الله فيك,
فرّج همّ المهمومين يا الله
اللهم فك قيد اسرانا و اسرى المسلمين
الرد
#3
لعيونك أخي العزيز :
1- في المثال التالي جرب إحداث تغيير على العناصر الموجودة في الفورم ثم أغلق البرنامج وأعد تشغيله من جديد وستجد بأن ألوان البانيلات قد أحتفضت باللون السابق وكذلك عناصر ال checkboxs


وفقك الله .


الملفات المرفقة
.rar   يحتفظ البرنامج بأخر شكل له.rar (الحجم : 7.47 ك ب / التحميلات : 212)
الرد
#4
جرب إضافة عنصر TEdit على الفورم وأكتب داخلها وستشاهد أن البرنامج أحتفظ حتى بالكتابة الموجودة داخل العنصر السابق دون الحاجة لملفات ال ini لحفظ الأعدادات وهذه الطريقة تحتفظ بكل التغييرات على كل العناصر .

وفقكم الله . وأفاد بعلمكم الجميع
الرد
#5
راجع أيضا الروابط الموجودة هنــــــــــــــــــا :
http://www.delphi4arab.net/forum/showthr...p?tid=2246
الرد
#6
عفواً ولكني شاهت الموضوع السابق وهو يختلف إختلاف جذري عن الموضوع الذي ذكرته أنا .

فأستخدام الرجستري وارد وكذلك ملفات ال ini ولكن هنا الموضوع مختلف تماماً.

تحياتي للجميع .
الرد
#7
مشكووور أخي على المشاركة الرائعة ، و لكنني فقط أردت أن ألفت انتباه كل قارئ لهذا الموضوع ، لمواضيع أخرى شبيهة و تصب في نفس الوادي.
أكيد هناك اختلاف كما تقدمت أخي لكن الهدف واحـــــد : _ حفظ إعدادات البرنـــــامج _

بالتوفيق.
الرد
#8
على عيوني أخي العزيز . وشكراً جداً على مشاركتك .

وفقك الله .
الرد
#9
إقتباس :لعيونك أخي العزيز :

في الحقيقة, شئ مذهل,
لم اتوقع هذه السهولة ما شاء الله, اسهل من الرجستري و اسهل من ملفآت ال Ini

اخي الكريم, هل ممكن اثتثنآء مكون او مكونات من حفظ المعلموت ؟

شكرا لك اخ عصآم, :bye1:
فرّج همّ المهمومين يا الله
اللهم فك قيد اسرانا و اسرى المسلمين
الرد
#10
في الحقيقة اخي أنا لم أجرب أن أقوم بإستثناء لبعض العناصر لكن الخاصية WriteComponent(Self)
والتي تأخذ الوسيط Self يمكن إستبدالها بالكود
PHP كود :
for i:=0 to ComponentCount-1 do
    
WriteComponent(Components[i]); 

والتي تسمح بإستثناء بعض العناصر حسب قيمة المتحول i وكذلك الأمر بالنسبة للإجرائية
PHP كود :
ReadComponent(Self); 

وفقك الله والجيمع .
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم