حفظ اخر التغييرات التي تم اجراؤها على البرنامج
#1
السلام عليكم ورحمة الله وبركاته

اخواني عندما يقوم المستخدم باستخدام البرنامج ويعمل بعض التغييرات او بعض الاختيارات فيه

كيف يتم حفظ ماعمله اخر مرة ؟

وكيف يتم حفظ جلسه \معينه\ قام بعمل بعض التغييرات فيها على البرنامج ؟

من لم يفهم ما اقصده ساوضح له اكثر
الرد
#2
اخي الكريم,,, حيّاك الله

اخي يمكنك ذلك عن طريق ملفات ال ini. او قيم في الرجستري,,

هذا هو,,, وهناك دروس في هذا المنتدى عن عمل ذلك بارك الله فيك Smile

+ اعتقد اني رأيت مكون لعمل ذلك.. سأحاول البحث عنه ان شاء الله

وإن وجدته فسأضعه هنا بإذن الله

بارك الله فيكم والسلام عليكم ورحمة الله
فرّج همّ المهمومين يا الله
اللهم فك قيد اسرانا و اسرى المسلمين
الرد
#3
السلام عليكم ورحمة الله وبركاته ,,


إقتباس :وكيف يتم حفظ جلسه \معينه\ قام بعمل بعض التغييرات فيها على البرنامج ؟

أهلا أخي ,,

بالطبع في البرمجه يوجد طرق كثيرهـ ,, مننها ini file , Registry , xml file ... إلخ

لكن بدون أدنى شك الـ Registry هو الأفضل بينها ,,

حتى البرامج الكبيرهـ تستحدم الريجستري

بارك الله فيكم جميعا
شكوت إلى وكيع سوء حفظي ... فأرشدني إلى ترك المعاصي
وأخــبـرنـي بــأن الـعـلـم نـور ... ونـور الله لا يـهدى لـعـاصي
الرد
#4

السلام عليكم ,,

قد يفيدك هذا الموضوع هـنـا إلم تتعامل مع Registry من قبل !

بالتوفيق
شكوت إلى وكيع سوء حفظي ... فأرشدني إلى ترك المعاصي
وأخــبـرنـي بــأن الـعـلـم نـور ... ونـور الله لا يـهدى لـعـاصي
الرد
#5
السلام عليكم
من الطرق التي أفضلها لسهولتها وشموليتها استعمال TFileStream
الإجراء WriteComponent يقوم بحفظ أي مكون بأكمله مع كل خصائصه، و ReadComponent للقراءة.
هذا مثال لطريقة حفظ مكون TTreeView:
PHP كود :
// Save

procedure TForm1.Button1Click(Sender: TObject);
var
  
F: TFileStream;
begin
  F 
:= TFileStream.Create('c:\TreeView.txt', fmCreate or fmShareCompat);
  try
    
F.WriteComponent(TreeView1);
  finally
    
F.Free;
  
end;
end;


// Load

procedure TForm1.Button2Click(Sender: TObject);
var
  
F: TFileStream;
begin
  F 
:= TFileStream.Create('c:\TreeView.txt', fmOpenRead or fmShareDenyWrite);
  try
    
F.ReadComponent(TreeView1);
  finally
    
F.Free;
  
end;
end; 
الرد
#6
جزاكم الله خيرا وأخص اخي kachwahed

لكن أردت فقط أن أستفسر عن شئ بسيط

الشفرة التي طرحتها اخي kachwahed لحفظ كل مكون على حدة

ماذا عن الذي عمل برنامجا كبيرا ومتشعبا هل يعقل أن أقوم بالذهاب لكل مكون وكتابة الكود على حدة ؟ Sad

كيف أحفظ كل التغييرات التي تم على البرنامج بأكمله من مكونات وكل شئ متعلق به

في إنتظاركم يا اخوة Sad
الرد
#7
في هذه الحالة تقوم بكتابة شيء مثل:
PHP كود :
procedure TForm1.BtnSaveClick(Sender: TObject);
var 
i: Integer;
    
F: TFileStream;
begin
F 
:= TFileStream.Create('Data.dat', fmCreate);
for 
i:=0 to Self.ComponentCount-1 do
F.WriteComponent(Components[i]);
F.Free;
end;

procedure TForm1.BtnLoadClick(Sender: TObject);
var 
i: Integer;
    
F: TFileStream;
begin
F 
:= TFileStream.Create('Data.dat', fmOpenRead);
for 
i:=0 to Self.ComponentCount-1 do
F.ReadComponent(Components[i]);
F.Free;
end; 
الرد
#8
أخي kachwahed جزاك الله خيرا يبدو بأنني أثقلت عليك

مع أنني جربت الشفره التي أعطيتني اياها لكن ليس على شكل زر حفظ وزر تحميل

بل في الحدثين Create والحدث Close للفورم

وللأسف لم يظهر المفعول Sad

لكن سأقوم بتجريب نفس الشفره على شكل زر حفظ وزر تحميل
الرد
#9
السلام علكيم
أضفت بعض التحسينات:
PHP كود :
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var 
i: Integer;
    
F: TFileStream;
begin
  F 
:= TFileStream.Create('Data.dat', fmCreate);
  try
    for 
i:=0 to Self.ComponentCount-1 do
    
F.WriteComponent(Components[i]);
  finally
    
F.Free;
  
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var 
i: Integer;
    
F: TFileStream;
begin
  
try
    
F := TFileStream.Create('Data.dat', fmOpenRead);
    for 
i:=0 to Self.ComponentCount-1 do
    
F.ReadComponent(Components[i]);
  
except
    
Exit;
  
end;
  
F.Free;
end; 
جربت هذه الشيفرة وهي تؤدي المطلوب.
الرد
#10
السلام عليكم
بارك الله فيك يا أخي
إنها تعمل ، لكنها لم تعمل مع الصور
الرد


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


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