View Full Version : ذخیره موقعیت اشیا
Mask
پنج شنبه 06 خرداد 1389, 22:54 عصر
با سلام
رویه فرمی تعداد حدودا 300 شی وجود دارد (از جمله :edit - combobox-lable - image , ...)
چطوری می توان اسم این اشیا و مقدار top و left این اشیا رو در بانک اطلاعاتی اکسس ذخیره کرد؟
ممنون.
BORHAN TEC
پنج شنبه 06 خرداد 1389, 23:33 عصر
اگه به کد زیر خوب دقت کنی مساله حل میشه:
procedure TForm1.Button1Click(Sender: TObject);
var
c: TComponent;
begin
for c in Self do
begin
if (c is TEdit) then
ShowMessage(c.name + ',' + IntToStr((c as TEdit).Left));
if (c is TButton) then
ShowMessage(c.name + ',' + IntToStr((c as TButton).Left));
end;
end;
Mask
پنج شنبه 06 خرداد 1389, 23:46 عصر
ممنون.
یه چیزایی دستگیرم شد.
در قسمت اول شما کامپوننت های مثلا ادیت رو پیدا کردید و همون رو مقادرش رو در آوردید.
نمی دونم چرا به حلقه گیر میده.
vcldeveloper
جمعه 07 خرداد 1389, 01:38 صبح
می تونید کل فرم رو در یک Stream ذخیره کنید، و اون Stream را در یکی از فیلدهای بانک اطلاعاتی تون ذخیره کنید. تبدیل یک فرم به Stream کاری هست که IDE دلفی هم برای ذخیره سازی فرم ها انجام میده. با این تفاوت که IDE میاد Stream مربوطه را در یک فایل DFM ذخیره می کنه، نه در داخل بانک اطلاعاتی.
اگر به کلاس های مشتق شده از TStream دقت کنید، می بینید که متدهایی برای خواندن و نوشتن از/در کامپوننت ها دارند. اگر یک فرم به یک Stream داده بشه، خصصویات خودش، و اشیاء داخل آن در Stream ذخیره میشند.
Mask
جمعه 07 خرداد 1389, 11:34 صبح
با سلام
ممنون علی آقا
توضیحاتتون منطقی و قابل اجراست.
اما من زیاد با Stream کار نکردم و نمیتونم این برنامه رو پیاده سازی کنم.
از دوستان عزیز ، اگه کمک کنند ممنون می شم.
حالا یا از روش آقای کشاورز یا آقای عشایری.
ممنون.
hojjatcroos
جمعه 07 خرداد 1389, 13:57 عصر
با متدهای WriteComponent و ReadComponent می تونی خوندن نوشتن رو انجام بدی البته کلاس های استفاده شده رو باید ریجستر کنی.
vcldeveloper
جمعه 07 خرداد 1389, 20:00 عصر
البته کلاس های استفاده شده رو باید ریجستر کنی.
چون داره فرم های موجود در پروژه خودش را Stream میکنه، Register کردن به طور خودکار انجام میشه.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.