ورود

View Full Version : نمی دونم از چه کامپوننتی استفاده کنم؟



mina_148m
شنبه 22 دی 1386, 01:15 صبح
سلام ،
من می خوام از یه کامپوننتی استفاده کنم که هم برای ورود اطلاعات باشه و وقتی هم که مکان نما روش رفت اطلاعات که دفعه قبل کاربر توش وارد کرده رو نمایش بده
چون تو کاره من باید کاربر عدد قبلی رو بدونه تا بهش یکی اضافه کنه و فقط مال دفعه قبل مشخص باشه

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



خیلی ممنون

vcldeveloper
شنبه 22 دی 1386, 01:43 صبح
خودتون می تونید همچین چیزی رو طراحی کنید، مثلا با ذخیره مقادیر هر کنترل در یک فایل INI یا ذخیره خصوصیات هر کنترل در یک Stream و انتقال آن به دیسک (همون کاری که IDE دلفی میکنه). اما اگر دنبال کامپوننت آماده می گردید، تا جایی که یادم هست، در مجموعه EhLib یک کنترل Edit بود که هم می تونست بصورت مستقل کار کنه، هم به یک فیلد DataSet متصل بشه. این کنترل خصوصیتی برای نگه داری MRU داشت که می تونستید از طریق آن تعداد آیتم هایی که باید کنترل به خاطر بسپاره را کنترل کنید و به لیست مقادیر قبلی وارد شده توسط کاربر دسترسی داشته باشید. البته کار این لیست MRU این بود که وقتی کاربر شروع به تایپ میکنه، مقادیر مناسب را از ورودی های قبلی کاربر در یک ComboBox نمایش بده - مثل حالت Auto Complete در Address Bar یک مرورگر وب.
بهتره برای دریافت راهنمایی بهتر از طرف کاربران به سوالات زیر جواب بدید:
اطلاعات دفعه قبل کجا نگه داری میشه؟
آیا این اطلاعات باید فقط در Session فعلی کاربر وجود داشته باشند یا اگر کاربر برنامه را بست و دوباره باز کرد هم برنامه باید اطلاعات وارد شده قبلی را به یاد داشته باشه؟

mina_148m
شنبه 22 دی 1386, 10:56 صبح
راستش این برنامه مربوط به پرداخت حقوقه و هرسری که فایل مربوط به حقوق کارمندان محاسبه می شه برای تولید فایل بانک کاربر باید کدمرحله رو وارد کنه اونم باید کد قبلی رو بدونه که بهش یک واحد اضافه کنه


اطلاعات دفعه قبل کجا نگه داری میشه؟


مشکل منم تو نگه داری اطلاعات قبلی هست که نمی دونم چه جوری و کجا باید نگه داری کنم و لی نیازی به نگه داریش توی بانک اطلاعاتی ندارم
من می خوام فقط اطلاعات دفعه قبل رو نگهداری و نمایش داده بشه


آیا این اطلاعات باید فقط در Session فعلی کاربر وجود داشته باشند یا اگر کاربر برنامه را بست و دوباره باز کرد هم برنامه باید اطلاعات وارد شده قبلی را به یاد داشته باشه؟


بله حتی زمانی که برنامه رو کاربر بست و دوباره باز کرد موقعی که به این مرحله می رسه دفعه قبل هر چی رو وارد کرده نمایش بده

vcldeveloper
شنبه 22 دی 1386, 22:39 عصر
همون فایل INI گزینه خوبی هست -> یونیت iniFiles.pas کلاس TIniFile

Mahmood_M
یک شنبه 23 دی 1386, 04:12 صبح
همون فایل INI گزینه خوبی هست -> یونیت iniFiles.pas کلاس TIniFile
-> مقاله : استفاده از فایلهای INI (http://barnamenevis.org/forum/showthread.php?t=79040)

...

mina_148m
یک شنبه 23 دی 1386, 15:26 عصر
سلام،
از کمکتون ممنون حالا که من این کدو می نویسم
error میده که: unable to write d اگه کدم اشتباهه خیلی ممنون می شم بازم کمک کنید
البته INIFiles به uses فرم اضافه کردم





var
MyIniFile : TINIFile;
m:string;





begin
MyINIFile := TINIFile.Create('d:\ ');
MyINIFile.WriteInteger(m,m,strtoint(edit1.text));
end;

JAFO_IRAN
یک شنبه 23 دی 1386, 15:38 عصر
سلام

اسم فایل رو باید مشخص کنید - d:\ قابل قبول نیست.

ارادت

mohebbi_en
یک شنبه 23 دی 1386, 15:43 عصر
فکر کنم باید بعد از آدرس اسم فایل را بنویسی

Myfileini:=Tmyfileini.create('d:\iniflename.ini')

vcldeveloper
یک شنبه 23 دی 1386, 16:46 عصر
MyINIFile.WriteInteger(m,m,strtoint(edit1.text));
وقتی داده شما string هست (چون از Edit1.Text استفاده می کنید)، نیازی نیست که از WriteInteger و StrToInt برای ذخیره آن استفاده کنید. نتیجه کار می شود:
1- تبدیل String به Integer توسط StrToInt
2- تبدیل Integer به String توسط WriteInteger برای نوشتن مقدار آن در فایل.

بجاش از WriteString استفاده کنید و داده موجود در Edit1.Text را به آن ارسال کنید.

mina_148m
یک شنبه 23 دی 1386, 20:38 عصر
حالا این خطارو می ده :افسرده:






MyINIFile := TINIFile.Create('d:\iniexample.ini ');
MyINIFile.WriteString (m,m,edit1.text);

vcldeveloper
یک شنبه 23 دی 1386, 21:35 عصر
خطا روی همین دو خط کدی که گذاشتید اتفاق افتاد؟
آیا MyIniFile در زمان اجرای WriteString ایجاد (Create) شده بود؟

mina_148m
دوشنبه 24 دی 1386, 12:23 عصر
سلام،

خطا روی همین دو خط کدی که گذاشتید اتفاق افتاد؟

اره رو سطر دوم این کد خطارو می گیره

آیا MyIniFile در زمان اجرای WriteString ایجاد (Create) شده بود؟
من فکر می کنم کدارا درست نوشتم اما نمی دونم ایجاد شده یا نه .تو درایو d که فایلی دیده نمی شه؟ باید فایل ini تو درایوم دیده بشه ؟:متفکر:
تابعی که چک می کنه مقداریی هست یا نه می گه چبزی نیست
ولی تابعی که در مورد وجود فایل هست یا نه رو نمی دونم چیه؟:ناراحت:


ممنون می شک کمک کنید

DAMAVAND
دوشنبه 24 دی 1386, 13:23 عصر
سلام،


اره رو سطر دوم این کد خطارو می گیره

من فکر می کنم کدارا درست نوشتم اما نمی دونم ایجاد شده یا نه .تو درایو d که فایلی دیده نمی شه؟ باید فایل ini تو درایوم دیده بشه ؟:متفکر:
تابعی که چک می کنه مقداریی هست یا نه می گه چبزی نیست
ولی تابعی که در مورد وجود فایل هست یا نه رو نمی دونم چیه؟:ناراحت:


ممنون می شک کمک کنید

این مثال رو ببینید مشکلتون رو حل میکنه :
نوشته داخل Edit1 رو توی یه ini ذخیره میکنه و بعد باز یابی میکنه ,در ضمن فایل ini کنار خود برنامتون ذخیره میشه اینطوری بهتره !

mohebbi_en
دوشنبه 24 دی 1386, 13:45 عصر
متغیر m قبل از استفاده مقدار دهی کن.

vcldeveloper
دوشنبه 24 دی 1386, 16:44 عصر
من فکر می کنم کدارا درست نوشتم اما نمی دونم ایجاد شده یا نه .

if Assigned(MyIniFile) then
MyIniFile.WriteString(m,m,Edit1.Text);در ضمن، کدها را داخل بلوک try-finally بنویسید تا شی ایجاد شده در هر شرایطی به درستی آزاد شود:


MyIniFile := TIniFile.Create('c:\myfile.ini');
if Assigned(MyIniFile) then
try
MyIniFile.WriteString(m,m,Edit1.Text);
//Other codes...
finally
MyIniFile.Free;
end;