PDA

View Full Version : دلیل تعریف DBXCommand به این شکل چیست ؟



کامروا
دوشنبه 16 بهمن 1391, 21:31 عصر
سلام

چرا موقع تعریف شیء از DBXCommand، بصورت زیر عمل میکنیم؟
var
dbxCommand: TDBXCommand;
begin
dbxCommand := Conn.DBXConnection.CreateCommand();
...


چرا باید از متد CreateCommand درون TSQLConnection استفاده کنیم؟

ممنون

BORHAN TEC
سه شنبه 17 بهمن 1391, 19:39 عصر
سلام
این که چرا اینگونه عمل می کنیم کاملاً واضح است. در قسمت های مختلفی از VCL چنین رفتاری را شاهد هستیم که من در اینجا سعی می کنم که این موضوع را موشکافی کنم. فعلاً برای فهمیدن این موضوع از فضای پایگاه داده بیرون بیایید و فکر خود را درگیر آن نکنید!
به این مثال توجه کنید.
می خواهیم به یک شکل غیر معمول تر با کد نویسی ویژگی های یک Button را تغییر دهیم. من در این جا به دو روش اشاره می کنم:

1- در این روش می توانیم به شکل زیر عمل کنیم:
var
B: TButton;
begin
B := TButton.Create(Self);
B.Parent := Self;
B.Show;
B.Caption := 'Hello';
// ...
end;
همانطور که می دانید کد زیر یک شی از نوع TButton می سازد و به آن فضایی از حافظه را اختصاص می دهد:
TButton.Create(Self);
و کد زیر علاوه بر انجام این کار آدرس شی ساخته شده را در B قرار می دهد که با استفاده از B می توانیم به خصوصیات شی ساخته شده دسترسی داشته باشیم و آنها را مدیریت کنیم.
B := TButton.Create(Self);
2- در روش اول با کد زیر یک شی از کلاس TButton ایجاد می کردیم و به اصطلاح به آن فضا اختصاص می دادیم:
TButton.Create(Self);
این کاملاً طبیعی و واضح است. حال ممکن بود که شی ای از کلاس TButton قبلاً ایجاد شده بود. مثلاً ممکن بود که ما یک Button را بر روی فرم از قبل قرار داده بودیم. در این سناریو شما می توانید این کار را با روش زیر انجام دهید:
var
B: TButton;
begin
B := Button1;
B.Parent := Self;
B.Show;
B.Caption := 'Hello';
// ...
end;
در حالت کلی متغیر B یک اشاره گر است که به یک شی از نوع کلاس TButton اشاره می کند.

با این توضیحات حال باید متوجه شده باشید که چرا چرا موقع تعریف شیء از DBXCommand، بصورت زیر عمل می کنیم:
var
dbxCommand: TDBXCommand;
begin
dbxCommand := Conn.DBXConnection.CreateCommand();
...
از این روش در جای جای VCL استفاده می شود.
موفق و سربلند باشید...