چند سؤال فني در مورد دلفي؟؟؟؟
مدیران انجمن: Azadi.Isatis, abbas.m.k, athlon64x2, شوراي نظارت

- پست: 542
- تاریخ عضویت: شنبه ۱۹ اسفند ۱۳۸۵, ۷:۰۱ ب.ظ
- سپاسهای ارسالی: 112 بار
- سپاسهای دریافتی: 369 بار
- تماس:
چند سؤال فني در مورد دلفي؟؟؟؟
با سلام
من مي خواستم ببينم چگونه مي تونيم دلفي textbox , label , form ها را راست چين كنيم.
و اينكه چگونه مي تونيم با MdiForm و MdiChild فرم ها كار كنيم ( مخصوصا مخفي كردن و نمايش دادن آن ها)
من مي خواستم ببينم چگونه مي تونيم دلفي textbox , label , form ها را راست چين كنيم.
و اينكه چگونه مي تونيم با MdiForm و MdiChild فرم ها كار كنيم ( مخصوصا مخفي كردن و نمايش دادن آن ها)
برای هر چیز زکاتی است و زکات علم نشر دادن آن است.
الهی
مرا لیاقت بهشت نیست و طاقت دوزخ نیز ندارم. اکنون تو خود دانی و کرم تو.
الهی
مرا لیاقت بهشت نیست و طاقت دوزخ نیز ندارم. اکنون تو خود دانی و کرم تو.

-
- پست: 643
- تاریخ عضویت: سهشنبه ۱۹ تیر ۱۳۸۶, ۱:۰۸ ب.ظ
- سپاسهای ارسالی: 300 بار
- سپاسهای دریافتی: 1161 بار
کنترل های دلفی خصوصیتی دارند به نام BiDiMode که با تنظیم آن بر روی biRightToLeft می تونید آن کنترل را راست-به-چپ کنید.
دقیقا می خواید چه کار کنید؟ در صورت تنظیم یک فرم بصورت MDIForm و سایر فرم ها بصورت MDIChild، می تونید با Show و Hide یا Close (هر کدام که نیاز شما ست) کردن فرم های Child آنها را نمایش بدید.
در ضمن، الان مدت ها ست که مایکروسافت در Document های خود استفاده از MDI را توصیه نمی کنند و در برنامه های جدید خود از آن استفاده نمی کند.
چگونه مي تونيم با MdiForm و MdiChild فرم ها كار كنيم ( مخصوصا مخفي كردن و نمايش دادن آن ها)
دقیقا می خواید چه کار کنید؟ در صورت تنظیم یک فرم بصورت MDIForm و سایر فرم ها بصورت MDIChild، می تونید با Show و Hide یا Close (هر کدام که نیاز شما ست) کردن فرم های Child آنها را نمایش بدید.
در ضمن، الان مدت ها ست که مایکروسافت در Document های خود استفاده از MDI را توصیه نمی کنند و در برنامه های جدید خود از آن استفاده نمی کند.

- پست: 542
- تاریخ عضویت: شنبه ۱۹ اسفند ۱۳۸۵, ۷:۰۱ ب.ظ
- سپاسهای ارسالی: 112 بار
- سپاسهای دریافتی: 369 بار
- تماس:
براي مخفي كردن و نمايش دادن mdichild متد hide و show استفاده كرده ام اما وقتي كه دكمه hide را مي زنم پيغام مي دهد كه اين متد را نمي توان بر روي mdichild اعمال نمود.
در ضمن چرا مايكروسافت استفاده از mdi را توصيه نمي كند ؟؟؟

در ضمن چرا مايكروسافت استفاده از mdi را توصيه نمي كند ؟؟؟

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

-
- پست: 643
- تاریخ عضویت: سهشنبه ۱۹ تیر ۱۳۸۶, ۱:۰۸ ب.ظ
- سپاسهای ارسالی: 300 بار
- سپاسهای دریافتی: 1161 بار
اما وقتي كه دكمه hide را مي زنم پيغام مي دهد كه اين متد را نمي توان بر روي mdichild اعمال نمود.
درست است. از Close استفاده کنید. تا زمانی که CloseAction = caFree نباشه، فرم با Close شدن Free نمیشه و همون کار Hide را انجام میده.
چرا مايكروسافت استفاده از mdi را توصيه نمي كند ؟
الان مطلبش خاطرم نیست، چون مربوط به چند سال قبل میشه. ولی فکر کنم بر اساس نتایجی که از تحقیقات خود بر تاثیر این نوع از برنامه ها بر روی کارایی و راحتی کاربر انجام داده بودند، به این نتیجه رسیدند. در هر حال باید بشه با یک جستجو در گوگل اصل مطلب را از مایکروسافت پیدا کرد.
موفق باشید

- پست: 542
- تاریخ عضویت: شنبه ۱۹ اسفند ۱۳۸۵, ۷:۰۱ ب.ظ
- سپاسهای ارسالی: 112 بار
- سپاسهای دریافتی: 369 بار
- تماس:
Frogfoot, جان
با تشكر از راهنمايي هاي شما
اما يك مطلب ديگر
من يك بانك اطلاعاتي با اكسس درست كرده ام اما نمي دونم چگونه مي تونم به دلفي ربطش بدم و از اون استفاده كنم
واضح تر بگم
من ميخواهم اطلاعاتي را كه دريك textbox وارد ميكنم در فيلدهاي جدول اكسس من ذخيره بشه
حالا اگر ميشه به من بگوييد اولا چطور ارتباط دلفي با اكسس را برقرار كنم و ثانيا چگونه اطلاعات را ذخيره كنم (كدي ر كه بايد داخل كليد ذخيره بنويسم چيه )

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

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

-
- پست: 643
- تاریخ عضویت: سهشنبه ۱۹ تیر ۱۳۸۶, ۱:۰۸ ب.ظ
- سپاسهای ارسالی: 300 بار
- سپاسهای دریافتی: 1161 بار
معمولا برای ارتباط با اکسس از 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 را بصورت یک جدول نمایش می دهد و امکان ویرایش و درج رکورد را نیز به شما می دهد.
اگر دقت کرده باشید، برای همچین کارهای ساده بانک اطلاعاتی در دلفی، نیازی به نوشتن کد نیست. البته می توان تمام مراحل فوق را با استفاده از کدنویسی هم در دلفی پیاده کرد.
از تب 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 را بصورت یک جدول نمایش می دهد و امکان ویرایش و درج رکورد را نیز به شما می دهد.
اگر دقت کرده باشید، برای همچین کارهای ساده بانک اطلاعاتی در دلفی، نیازی به نوشتن کد نیست. البته می توان تمام مراحل فوق را با استفاده از کدنویسی هم در دلفی پیاده کرد.

-
- پست: 643
- تاریخ عضویت: سهشنبه ۱۹ تیر ۱۳۸۶, ۱:۰۸ ب.ظ
- سپاسهای ارسالی: 300 بار
- سپاسهای دریافتی: 1161 بار
برای نمایش اطلاعات دو فیلد بطور همزمان در یک کنترل، باید از DBLookupComboBox استفاده کنید. در خصوصیت ListFields مربوط به این کنترل، نام فیلدها را با کاما از هم جدا کنید.
برای کپی مقادیر از یک جدول به جدول دیگه هم باید کد بنویسید، مثلا:
DataSet2.FieldByName('MyField').AsInteger := DataSet1.FieldByName('MyField').AsInteger
برای کپی مقادیر از یک جدول به جدول دیگه هم باید کد بنویسید، مثلا:
DataSet2.FieldByName('MyField').AsInteger := DataSet1.FieldByName('MyField').AsInteger
سلام .
يك query به شكل زير نوشتم.
..... Select
From table1
Where datefield between "datestart" and "dateend"
حالا مي خوام تاريخ شروع و پايان رو بصورت پارامتر به query ارسال كنم.چه طور مي تونم؟؟؟
(در ضمن وقتي روي خاصيت params مربوط به query رايت كليك مي كنم گزينه add در ويراستار editing query params غير فعاله؟؟؟؟ )
مرسي.
يك query به شكل زير نوشتم.
..... Select
From table1
Where datefield between "datestart" and "dateend"
حالا مي خوام تاريخ شروع و پايان رو بصورت پارامتر به query ارسال كنم.چه طور مي تونم؟؟؟
(در ضمن وقتي روي خاصيت params مربوط به query رايت كليك مي كنم گزينه add در ويراستار editing query params غير فعاله؟؟؟؟ )
مرسي.
سلام.
مرسي از راهنمايي تون.
يه فرم ورود اطلاعات دارم كه فيلد ها رو با dbedit وارد جدول مي كنه.(اولين فيلد كه با dbedit1 پر مي شه كليده ) مي خوام وقتي دكمه save رو مي زنم اگه كليد به صورت تكراري وارد شد برنامه پيغام بده و cancel كنه.
وقتي از locate استفاده مي كنم چون dbedit مستقيم اطلاعات رو مي ريزه به جدول اين دستور فيلد جاري رو پيدا مي كنه و بر نامه هنگ مي كنه و پيام key violation مي ده.
چيكار كنم؟؟
ممنون.
مرسي از راهنمايي تون.
يه فرم ورود اطلاعات دارم كه فيلد ها رو با dbedit وارد جدول مي كنه.(اولين فيلد كه با dbedit1 پر مي شه كليده ) مي خوام وقتي دكمه save رو مي زنم اگه كليد به صورت تكراري وارد شد برنامه پيغام بده و cancel كنه.
وقتي از locate استفاده مي كنم چون dbedit مستقيم اطلاعات رو مي ريزه به جدول اين دستور فيلد جاري رو پيدا مي كنه و بر نامه هنگ مي كنه و پيام key violation مي ده.
چيكار كنم؟؟
ممنون.