PDA

View Full Version : چطور می شه در Delphi for Win32 یه آرایه یا لیست رو به یه گرید Bind کرد؟



بابک.م.
چهارشنبه 21 اسفند 1387, 17:03 عصر
دوستان کسی را ه حلی برای این موضوع داره؟

یه راه حل اینه که یه TClientDataSet داشته باشیم. اون رو با مقادیر آرایه پر کنیم بعد بایندش کنیم به یه DataSource و DataSource رو به Grid بایند کنیم.

راه حل بهتری سراغ دارید

vcldeveloper
چهارشنبه 21 اسفند 1387, 23:42 عصر
در دلفی، دو نوع Grid بصورت پیش فرض وجود داره؛ DBGrid که برای اتصال به بانک اطلاعاتی استفاده میشه، و StringGrid که برای نمایش هر نوع داده ایی استفاده میشه.

کنترل های Data-Aware دلفی، مثل DBGrid، فقط DataSource را به عنوان منبع داده می شناسند. DataSource هم فقط کلاس های مشتق شده از TDataSet را به عنوان منبع میشناسه. پس اگر بخوایم از DBGrid برای نمایش داده های یک Array استفاده کنیم، باید حتما اون داده ها قبلش در یک کلاس مشتق شده از TDataSet لود شده باشه. این کلاس میتونه TClientDataset یا هر کلاس دیگه مشتق شده از TDataset باشه.
اگر نخوایم داده را در یک DataSet لود کنیم، باید از StringGrid، استفاده کرد، و داده های Array را در آن وارد کرد:


type
TMyArray = array of integer;

var
MyArray : TMyArray;

...

var
i: integer;
begin
for i := 0 to High(MyArray) do
begin
StringGrid1.Cells[1,i+1] := IntToStr(MyArray[i]);
end;
end;

بابک.م.
پنج شنبه 22 اسفند 1387, 13:08 عصر
جناب کشاورز با کامپوننت DataAbstract می شه این کار رو انجام داد؟

بابک.م.
پنج شنبه 22 اسفند 1387, 13:39 عصر
آیا امکان نوشتنDataSource جدید برای اینکار هست؟ یا کار خیلی مشکی است.

Developer Programmer
پنج شنبه 22 اسفند 1387, 17:00 عصر
اون رو با مقادیر آرایه پر کنیم بعد بایندش کنیم
خداییش عجب اصطلاحاتی استفاده میکنین!
یک ساعته دارم فکر میکنم، که تو دلفی که نمیشه آرایه رو به گرید بایند کرد.
تازه فهمیدم منظورت همون نمایش محتوای آرایه تو جدوله

vcldeveloper
جمعه 23 اسفند 1387, 00:23 صبح
خداییش عجب اصطلاحاتی استفاده میکنین!
اصطلاحات Visual Studio هست. برای همین توی تالار دلفی زیاد مفهوم نیستند ;-)


آیا امکان نوشتنDataSource جدید برای اینکار هست؟ یا کار خیلی مشکی است.
امکانش هست، فقط باید کامپوننت نویسی برای دلفی، و چگونگی کارکرد کامپوننت های بانک اطلاعاتی دلفی را بلد باشید.


با کامپوننت DataAbstract می شه این کار رو انجام داد؟
اطلاع دقیق ندارم. من همچین چیزی درش ندیدم. همچین قابلیتی چندان چیزی جالبی نیست که کسی بخواد روش وقت صرف بکنه، چون منتقل کردن داده های آرایه به ClientDateset یا هر کامپوننت دیگه ایی که داده را در حافظه نگهداری میکنه، مزایای بسیار زیادی داره؛ برنامه نویس میتونه ساختار داده ها را تغییر بده، روی آنها Index بزاره، روی داده ها با سرعت بالا جستجو کنه، داده ها را روی فایل ذخیره کنه، به راحتی داده ها را ویرایش کنه، یا رکورد جدیدی به آنها اضافه کنه، داده ها را به دلخواه خودش فیلتر کنه، و غیره.