چند سؤال فني در مورد دلفي؟؟؟؟

در اين بخش مي‌توانيد در مباحث مربوط ديگر زبانهاي برنامه نويسي به بحث بپردازيد

مدیران انجمن: Azadi.Isatis, abbas.m.k, athlon64x2, شوراي نظارت

Captain
Captain
نمایه کاربر
پست: 542
تاریخ عضویت: شنبه ۱۹ اسفند ۱۳۸۵, ۷:۰۱ ب.ظ
سپاس‌های ارسالی: 112 بار
سپاس‌های دریافتی: 369 بار
تماس:

چند سؤال فني در مورد دلفي؟؟؟؟

پست توسط Azadi.Isatis »

با سلام


من مي خواستم ببينم چگونه مي تونيم دلفي textbox , label , form ها را راست چين كنيم.

و اينكه چگونه مي تونيم با MdiForm و MdiChild فرم ها كار كنيم ( مخصوصا مخفي كردن و نمايش دادن آن ها)
 برای هر چیز زکاتی است و زکات علم نشر دادن آن است.  


الهی
مرا لیاقت بهشت نیست و طاقت دوزخ نیز ندارم. اکنون تو خود دانی و کرم تو.
Colonel I
Colonel I
پست: 643
تاریخ عضویت: سه‌شنبه ۱۹ تیر ۱۳۸۶, ۱:۰۸ ب.ظ
سپاس‌های ارسالی: 300 بار
سپاس‌های دریافتی: 1161 بار

پست توسط Frogfoot »

کنترل های دلفی خصوصیتی دارند به نام BiDiMode که با تنظیم آن بر روی biRightToLeft می تونید آن کنترل را راست-به-چپ کنید.
چگونه مي تونيم با MdiForm و MdiChild فرم ها كار كنيم ( مخصوصا مخفي كردن و نمايش دادن آن ها)

دقیقا می خواید چه کار کنید؟ در صورت تنظیم یک فرم بصورت MDIForm و سایر فرم ها بصورت MDIChild، می تونید با Show و Hide یا Close (هر کدام که نیاز شما ست) کردن فرم های Child آنها را نمایش بدید.

در ضمن، الان مدت ها ست که مایکروسافت در Document های خود استفاده از MDI را توصیه نمی کنند و در برنامه های جدید خود از آن استفاده نمی کند.
Captain
Captain
نمایه کاربر
پست: 542
تاریخ عضویت: شنبه ۱۹ اسفند ۱۳۸۵, ۷:۰۱ ب.ظ
سپاس‌های ارسالی: 112 بار
سپاس‌های دریافتی: 369 بار
تماس:

پست توسط Azadi.Isatis »

براي مخفي كردن و نمايش دادن mdichild متد hide و show استفاده كرده ام اما وقتي كه دكمه hide را مي زنم پيغام مي دهد كه اين متد را نمي توان بر روي mdichild اعمال نمود. :-( :-(


در ضمن چرا مايكروسافت استفاده از mdi را توصيه نمي كند ؟؟؟ :-( :-(
 برای هر چیز زکاتی است و زکات علم نشر دادن آن است.  


الهی
مرا لیاقت بهشت نیست و طاقت دوزخ نیز ندارم. اکنون تو خود دانی و کرم تو.
Colonel I
Colonel I
پست: 643
تاریخ عضویت: سه‌شنبه ۱۹ تیر ۱۳۸۶, ۱:۰۸ ب.ظ
سپاس‌های ارسالی: 300 بار
سپاس‌های دریافتی: 1161 بار

پست توسط Frogfoot »

اما وقتي كه دكمه hide را مي زنم پيغام مي دهد كه اين متد را نمي توان بر روي mdichild اعمال نمود.

درست است. از Close استفاده کنید. تا زمانی که CloseAction = caFree نباشه، فرم با Close شدن Free نمیشه و همون کار Hide را انجام میده.
چرا مايكروسافت استفاده از mdi را توصيه نمي كند ؟

الان مطلبش خاطرم نیست، چون مربوط به چند سال قبل میشه. ولی فکر کنم بر اساس نتایجی که از تحقیقات خود بر تاثیر این نوع از برنامه ها بر روی کارایی و راحتی کاربر انجام داده بودند، به این نتیجه رسیدند. در هر حال باید بشه با یک جستجو در گوگل اصل مطلب را از مایکروسافت پیدا کرد.

موفق باشید
Captain
Captain
نمایه کاربر
پست: 542
تاریخ عضویت: شنبه ۱۹ اسفند ۱۳۸۵, ۷:۰۱ ب.ظ
سپاس‌های ارسالی: 112 بار
سپاس‌های دریافتی: 369 بار
تماس:

پست توسط Azadi.Isatis »

Frogfoot, جان
با تشكر از راهنمايي هاي شما

اما يك مطلب ديگر

من يك بانك اطلاعاتي با اكسس درست كرده ام اما نمي دونم چگونه مي تونم به دلفي ربطش بدم و از اون استفاده كنم

واضح تر بگم
من ميخواهم اطلاعاتي را كه دريك textbox وارد ميكنم در فيلدهاي جدول اكسس من ذخيره بشه

حالا اگر ميشه به من بگوييد اولا چطور ارتباط دلفي با اكسس را برقرار كنم و ثانيا چگونه اطلاعات را ذخيره كنم (كدي ر كه بايد داخل كليد ذخيره بنويسم چيه ) :) :)
 برای هر چیز زکاتی است و زکات علم نشر دادن آن است.  


الهی
مرا لیاقت بهشت نیست و طاقت دوزخ نیز ندارم. اکنون تو خود دانی و کرم تو.
Colonel I
Colonel I
پست: 643
تاریخ عضویت: سه‌شنبه ۱۹ تیر ۱۳۸۶, ۱:۰۸ ب.ظ
سپاس‌های ارسالی: 300 بار
سپاس‌های دریافتی: 1161 بار

پست توسط Frogfoot »

معمولا برای ارتباط با اکسس از ADO استفاده میشه. من هم اینجا کار با ADO را توضیح می دهم:
از تب ADO در Component Palette دلفی یک کامپوننت AdoConnection بر روی فرم بندازید.
بر روی AdoConnection دابل کلیک کنید تا پنجره Connection Manager باز شود. دکمه Build را کلیک کنید تا لیستی از Provider ها نمایش داده شود.
از لیست Provider ها گزینه Microsoft Jet 4.0 OLE DB Provider را انتخاب کنید و Next را کلیک کنید.
در صفحه Connection آدرس فایل Access مورد نظر خود را وارد کنید و دکمه Test Connection را کلیک کنید تا از صحت ارتباط مطمون شوید.
پنجره مربوطه را با کلیک دکمه OK ببنید تا به محیط دلفی برگردید.
با توجه به اینکه در بانک اکسس خود چه تعداد جدول دارید و به کدامیک از آنها در برنامه خود نیاز دارید، برای هر جدول خود یک AdoDataSet بر روی فرم قرار دهید. البته ممکن است در صورت استفاده از SQL Query نیازی به ایجاد یک DataSet برای هر جدول نداشته باشید.
خاصیت Connection از AdoDataSet را بر روی AdoConnection ایی که ساختید تنظیم کنید.
خصوصیت CommandType از AdoDataSet را بر روی ctTable تنظیم کنید و نام جدول مربوطه در بانک اکسس را در خصوصیت CommandText مشخص کنید.
به ازاء هر DataSet ایی که ساختید، یک DataSource از تب Data Access به فرم اضافه کنید.
خاصیت DataSet هر یک از DataSource ها را بر روی یکی از DataSet های موجود تنظیم کنید تا هر DataSource به یک DataSet متصل شود.
در تب Data Controls کنترل DBEdit و یک کنترل DBNavigator را بر روی فرم بیاندازید و خصوصیت DataSource آنها را تنظیم کنید.
خصوصیت DataField از DBEdit را بروی نام فیلدی که قصد نمایش آن را دارید، تنظیم کنید.
خصوصیت Active از AdoDataSet را True کنید.
برنامه را کامپایل و اجرا کنید.
با انجام مراحل فوق می توانید با استفاده از کلیدهای DBNavigator در بین رکوردهای جدول حرکت کنید. DBEdit هم محتوی فیلد انتخاب شده را به شما نمایش می دهد. با استفاده از دکمه هایDBNavigator می توانید یک رکورد جدید ایجاد کنید، یا رکور جاری را در DBEdit ویرایش کنید و توسط دکمه های DBNavigator تغییرات را ثبت کنید.

در تب Data Control کنترلها مختلفی برای نمایش انواع فیلدها وجود دارد که می توانید آنها را امتحان کنید. پر کاربردترین کنترل این تب DBGrid است که کل محتوی یک DataSet را بصورت یک جدول نمایش می دهد و امکان ویرایش و درج رکورد را نیز به شما می دهد.

اگر دقت کرده باشید، برای همچین کارهای ساده بانک اطلاعاتی در دلفی، نیازی به نوشتن کد نیست. البته می توان تمام مراحل فوق را با استفاده از کدنویسی هم در دلفی پیاده کرد.
New Member
پست: 6
تاریخ عضویت: شنبه ۲۴ شهریور ۱۳۸۶, ۲:۵۰ ق.ظ

پست توسط eelham »

سلام.
مي خوام اطلاعات دو فيلد از جدول 1 رو(كه هر 2 با هم كليدن) به طور همزمان بوسيله يك dbcombobox نمايش داده بشن و بعد از انتخاب اطلاعات از dbcombobox درون 2 فيلد متناظرشون در جدول 2 قرار بگيرند.
آيا امكانش هست؟؟؟؟؟
Colonel I
Colonel I
پست: 643
تاریخ عضویت: سه‌شنبه ۱۹ تیر ۱۳۸۶, ۱:۰۸ ب.ظ
سپاس‌های ارسالی: 300 بار
سپاس‌های دریافتی: 1161 بار

پست توسط Frogfoot »

برای نمایش اطلاعات دو فیلد بطور همزمان در یک کنترل، باید از DBLookupComboBox استفاده کنید. در خصوصیت ListFields مربوط به این کنترل، نام فیلدها را با کاما از هم جدا کنید.
برای کپی مقادیر از یک جدول به جدول دیگه هم باید کد بنویسید، مثلا:

DataSet2.FieldByName('MyField').AsInteger := DataSet1.FieldByName('MyField').AsInteger
New Member
پست: 6
تاریخ عضویت: شنبه ۲۴ شهریور ۱۳۸۶, ۲:۵۰ ق.ظ

پست توسط eelham »

سلام.
ممنوون از راهنمايي تون.خيلي مفيد بود.
New Member
پست: 6
تاریخ عضویت: شنبه ۲۴ شهریور ۱۳۸۶, ۲:۵۰ ق.ظ

پست توسط eelham »

سلام .
يك query به شكل زير نوشتم.
..... Select
From table1
Where datefield between "datestart" and "dateend"
حالا مي خوام تاريخ شروع و پايان رو بصورت پارامتر به query ارسال كنم.چه طور مي تونم؟؟؟
(در ضمن وقتي روي خاصيت params مربوط به query رايت كليك مي كنم گزينه add در ويراستار editing query params غير فعاله؟؟؟؟ )
مرسي.
Colonel I
Colonel I
پست: 643
تاریخ عضویت: سه‌شنبه ۱۹ تیر ۱۳۸۶, ۱:۰۸ ب.ظ
سپاس‌های ارسالی: 300 بار
سپاس‌های دریافتی: 1161 بار

پست توسط Frogfoot »

Please Login or Register to see this code

بجای MtSrartDate و MyEndDate باید تاریخ های مورد نظر خودتون رو بزارید.
New Member
پست: 6
تاریخ عضویت: شنبه ۲۴ شهریور ۱۳۸۶, ۲:۵۰ ق.ظ

پست توسط eelham »

سلام.
مرسي از راهنمايي تون.
يه فرم ورود اطلاعات دارم كه فيلد ها رو با dbedit وارد جدول مي كنه.(اولين فيلد كه با dbedit1 پر مي شه كليده ) مي خوام وقتي دكمه save رو مي زنم اگه كليد به صورت تكراري وارد شد برنامه پيغام بده و cancel كنه.
وقتي از locate استفاده مي كنم چون dbedit مستقيم اطلاعات رو مي ريزه به جدول اين دستور فيلد جاري رو پيدا مي كنه و بر نامه هنگ مي كنه و پيام key violation مي ده.
چيكار كنم؟؟
ممنون.
ارسال پست

بازگشت به “Other Programming”