نمایش نتایج 1 تا 5 از 5

نام تاپیک: آموزش استفاده از TMS Aurelius ORM در دلفی

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #3
    کاربر دائمی آواتار hp1361
    تاریخ عضویت
    دی 1384
    محل زندگی
    تهران
    پست
    750

    نقل قول: آموزش استفاده از TMS Aurelius ORM در دلفی

    سلام مجدد

    ادامه آموزش :


    1. [7]دریافت و یا بروزرسانی رکوردها


    در مرحله قبل، یک نمونه از کلاس Tcontact ساختیم و آنرا به تابع EditContact پاس دادیم تا کاربر اطلاعات مربوطه را وارد نموده، بعد از تایید آن، اطلاعات دریافتی را با استفاده از شیء ObjectManager در دیتابیس ذخیره نمودیم.
    حال می خواهیم لیست تمام مخاطبین را نمایش بدهیم. ابتدا با استفاده از شیء ObjectManager لیست تمام مخاطبین ذخیره شده در دیتابیس را دریافت کرده و سپس عملیات ویرایش را برای هر یک از مخاطبینی که کاربر انتخاب کرده اجرا می نمائیم.

    نکته : هرگاه یک نمونه از شیء مخاطب(TContact) توسط Aurelius در دیتابیس ذخیره شود و یا از دیتابیس خوانده شود، فرآیند آزادسازی حافظه مربوطه (تخصیص داده شده به این اشیاء) توسط Aurelius انجام خواهد شد. به همین خاطر در مرحله قبل بعد از ذخیره مخاطب(Acontact)، اقدام به آزادسازی آن ننمودیم(Acontact.Free).(مگر اینکه کاربر از ایجاد و ذخیره مخاطب جدید انصراف دهد که در آن صورت شیء ساخته شده را آزاد می نمائیم).

    سوال :اگر Aurelius لیستی(List<T>) از مخاطبین را برای ما از دیتا بیس واکشی نماید نحوه آزادسازی چگونه خواهد بود؟
    جواب : تنها کافیست که لیست(یا همان نگهدارنده آیتم ها) آزاد شود. آیتم های داخل لیست بصورت خوکار آزاد خواهند شد.

    برای نمایش لیست مخاطبین یک فرم جدید ساخته و با نام List.ContactsForm ذخیره می¬نمائیم. بر روی فرم یک DBGrid و سه دکمه با Caption های "ذخیره"، "ویرایش" و "حذف" قرار می¬دهیم. همانطور که میدانیم، DBGrid اطلاعات یک Dataset را نمایش میدهد. Aurelius یک Dataset مختص به خود دارد که از همان TDataset دلفی مشتق شده، اما با ویژگی های جدیدی، که در فرایند کار تسهیل ایجاد می کند و در ادامه با آن آشنا خواهیم شد. پس یک نمونه از کامپوننت TaureliusDataset و یک DataSource بر روی فرم قرار داده و DBGrid را از طریق Datasource به آن متصل می کنیم.



    بر روی AureliusDataset دوبار کلیک کرده و در پنجره بازشده راست کلیک نموده و گزینه NewField را انتخاب میکنیم. در پنجره باز شده نام فیلدها، نوع فیلد و اندازه آن(در صورت String بودن فیلد) همانند پراپرتی های کلاس TContact) تعریف می¬کنیم. FieldType را نیز Data انتخاب می کنیم.


    نکته : جهت نمایش صحیح فیلد های از نوع string، در این قسمت نوع فیلدها را WideString انتخاب میکنیم(صرفا برای بانک SQLite. برای باقی بانک ها نوع string بدرستی اطلاعات را نمایش میدهد)


    بعد از تعریف شدن تمام فیلد ها، با راست کلیک کردن بر روی DBGrid و انتخاب گزینه ColumnEditor، در پنجره باز شده بر روی دکمه Add All Field کلیک میکنیم تا فیلد های تعریف شده به DBGrid نیز اضافه شود.


    برای واکشی اطلاعات از دیتابیس و نمایش آن در DBGrid، احتیاج به شیء ObjectManager داریم، به همین منظور یک متغیر با نام FManager از نوع TObjectManager بصورت Privite تعریف میکنیم. همچنین نمونه سازی از کلاس TObjectManager و تخصیص آن به متغیر FManager را در رویداد OnCreate فرم انجام می دهیم. آزادسازی FManager را نیز در OnDestroy انجام می¬دهیم. ضمناً یک متغیر نیز برای لیست مخاطبین با نام Fcontacts تعریف می¬کنیم که در انتها باید آزاد شود.


    1. type
    2. TContactsForm = class(TForm)
    3. dbgrdh_Contacts: TDBGridEh;
    4. sbitbtn_NewContact: TsBitBtn;
    5. sbitbtn_EditContact: TsBitBtn;
    6. sbitbtn_DeleteContact: TsBitBtn;
    7. AureliusDataset1: TAureliusDataset;
    8. DataSource1: TDataSource;
    9. procedure FormCreate(Sender: TObject);
    10. procedure FormDestroy(Sender: TObject);
    11. private
    12. FManager: TObjectManager;
    13. FContacts: TList<TContact>;
    14. Procedure LoadContacts;
    15. public
    16. end;
    17.
    18. var
    19. ContactsForm: TContactsForm;
    20.
    21. implementation
    22.
    23. uses
    24. DM;
    25. {$R *.dfm}
    26.
    27. procedure TContactsForm.FormCreate(Sender: TObject);
    28. begin
    29. FManager := TObjectManager.Create(DataModule1.GetConnection);
    30. end;
    31.
    32. procedure TContactsForm.FormDestroy(Sender: TObject);
    33. begin
    34. FreeAndNil(FManager);
    35. FreeAndNil(FContacts);
    36. end;



    خوب. حالا می خواهیم لیست مخاطبین را از پایگاه داده واکشی کرده و در DBGrid نمایش دهیم. یک پروسجر بنام LoadContacts بصورت زیر تعریف می¬کنیم:


    1. procedure TContactsForm.LoadContacts;
    2. begin
    3. FContacts.Free;
    4. FContacts := FManager.Find<TContact>().List;
    5.
    6. AureliusDataset1.Close;
    7. AureliusDataset1.SetSourceList(FContacts);
    8. AureliusDataset1.Open;
    9. end;


    در کد بالا، ابتدا با استفاده از متد Find<T> به اورلیوس میگوییم که دنبال چه میگردیم. با دستور List به اورلیوس میگوییم که هر آنچه از نوع T در دیتابیس وجود دارد واکشی کن. لذا لیستی از مخاطبین واکشی می شود.
    با استفاده از دستور AureliusDataset1.SetSourceList(FContacts); لیست مخاطبین را به AureliusDataset پاس می دهیم تا نتیجه در DBGrid نمایش داده شود.
    چون میخواهیم در زمان نمایش فرم ContactsForm اطلاعات مخاطبین نمایش داده شود، پس پروسیجر LoadContacts را در OnCreate فرم فراخوانی میکنیم(با توجه به منطق برنامه امکان فراخوانی در قسمت های دیگر همچون OnShow نیز قابل انجام است).


    1. procedure TContactsForm.FormCreate(Sender: TObject);
    2. begin
    3. FManager := TObjectManager.Create(DataModule1.GetConnection);
    4.
    5. LoadContacts;
    6. end;


    در فرم اصلی، به MainMenu یک زیرمنوی جدید در بخش مخاطبین اضافه کرده و Caption آنرا "لیست مخاطبین" قرار می دهیم.


    بر روی منوی "لیست مخاطبین" دوبار کلیک کرده و کد زیر را برای نمایش فرم ContactsForm می نویسیم: (فراموش نشود فرم ContactsForm نیز از حالت AutoCreate خارج شود)


    1. procedure TForm_Main.g1Click(Sender: TObject);
    2. var
    3. AForm: TContactsForm;
    4. begin
    5. AForm := TContactsForm.Create(nil);
    6. try
    7. AForm.ShowModal;
    8. finally
    9. FreeAndNil(AForm);
    10. end;
    11. end;


    برنامه را اجرا نموده و از منوی مخاطبین زیر منوی لیست مخاطبین را کلیک میکنیم:


    ادامه دارد...
    آخرین ویرایش به وسیله hp1361 : شنبه 21 اسفند 1395 در 12:26 عصر دلیل: --

تاپیک های مشابه

  1. استفاده از بانک اطلاعات وب در دلفی
    نوشته شده توسط ghasemjen در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 27
    آخرین پست: پنج شنبه 15 اسفند 1387, 00:13 صبح
  2. استفاده از آدرس بار IE در دلفی
    نوشته شده توسط vahid64 در بخش برنامه نویسی در Delphi
    پاسخ: 1
    آخرین پست: پنج شنبه 21 تیر 1386, 23:05 عصر
  3. چگونگی استفاده از یک فایل matlab در دلفی
    نوشته شده توسط jandaghian در بخش کامپوننت های سایر شرکت ها، و توسعه کامپوننت
    پاسخ: 5
    آخرین پست: دوشنبه 13 فروردین 1386, 19:17 عصر
  4. چند سوال درباره استفاده از بهترین بانک اطلاعاتی در دلفی
    نوشته شده توسط MOHSEN731 در بخش برنامه نویسی در Delphi
    پاسخ: 1
    آخرین پست: جمعه 26 فروردین 1384, 02:40 صبح
  5. استفاده از فایل های sql در دلفی
    نوشته شده توسط پریسا نامدار در بخش برنامه نویسی در Delphi
    پاسخ: 3
    آخرین پست: جمعه 05 فروردین 1384, 00:24 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •