PDA

View Full Version : ایجاد یک فرم و کنترلهای روی آن زمان اجرا



setare7sky
سه شنبه 22 خرداد 1386, 07:55 صبح
سلام
من میخوام یه فرم زمان اجرا ایجاد کنم و بعد کنترل هایی که روی فرم قرا می گیرند رو هم زمان اجرا با توجه به محتویات یه جدول ایجاد کنم .
حالا سوالی که دارم اینه که بهترین راه برای این کار چیه ؟ منظورم اینه که وقتی می خوام کنترل ها رو ایجاد کنم بهتره اندازه و محل قرار گیری اونها رو چطوری تعیین کنم . البته به نظرم یه راهش اینه که یه جدول بسازم و با توجه به اون مشخص کنم که توی فرم باید چه فیلدهایی قرار بدم ولی نمی دونم راه درستیه یا نه ؟ لطفا اگه قبلا کسی این کار رو کرده منو راهنمایی کنه .

مصطفی ساتکی
سه شنبه 22 خرداد 1386, 08:37 صبح
جهت ایجاد فرم در زمان اجرا


var form :Tform;
begin
form := Tform.createNew(Parent);
form.show;
end;

جت ایجاد کنترل مثلاٌ button


var Button :TButton;
begin
Button := TButton.Create(Form);
Button.parent :=Form;
end;

جهت تنظیم مختصات در دلفی یک فرم جدید ایجاد کنید کنترل های مورد نظر خود را روی آن چیدمان کنید سپس روی فرم کلیک راست کرده از منوی باز شده گزینه View as text را انتخاب کرده که فایل dfm مربوط به فرم ساخته شده را به شما نشان می دهد که کلیه مقادیر property ها در اینجا ذخیره شده اینها را کپی کرده و به کد خود انتقال دهید با کمی دستکاری این کد به نتیجه مطلوبی می رسید.

setare7sky
سه شنبه 22 خرداد 1386, 10:42 صبح
از جوابتون ممنون . ولی منظور من چگونگی ساخت فرم و یا کنترلها در زمان اجرا نیست . احتمالا سوالم رو خوب بیان نکردم.:چشمک:
من می خوام کنترلهایی که روی فرم قرار می دم با توجه به محتویات بانک باشه . مثلا اگه قراره مشخصات کارمندان رو روی فرم نمایش بدم با توجه به جدول Employee یه سری TextBox روی فرم قرار بدم که حالا برنامه نویسی اش هم بعدا زمان اجرا انجام بشه .
ولی مشکل اینجاست که مسلما اندازه کنترلهایی که روی فرم قرار می گیرن یکسان نیست و مثلا اندازه Text Box فیلد توضیحات و یا آدرس باید بزرگتر از فیلد اسم باشه و با تغییر اندازه این کنترل ها مکان قرار گیری اونها روی فرم هم دیگه قابل پیش بینی نیست چون دیگه نمی تونیم مثلا در هر سطر فرم 2 تا کنترلی رو قرار بدیم که سایز اونا با هم فرق داره .
به نظر من راه حل اینه که یه جدول بسازم و اسم فرم و اسم فیلد و Visible یا Enable بودن فیلدو... و اندازه اون رو ذخیره کنم و برای اینکه مشخص بشه مکان قرار گیری فیلد کجاست از Tag مربوط به کنترلها استفاده کنم ( مثلا کنترلهایی که Tag یکسانی دارند ٰTop اونها یکی باشه )
ولی این کار مشکلات زیادی داره . حالا می خوام بدونم کسی راه حل بهتری داره یا نه ؟

setare7sky
سه شنبه 22 خرداد 1386, 10:56 صبح
در ضمن جدول مورد استفاده در فرم هم زمان اجرا مشخص می شه و بنابراین زمان طراحی دیگه نمی دونیم چه فیلدهایی داریم تا مکان و اندازه اونا رو بصورت استاتیک مشخص کنیم .

مصطفی ساتکی
سه شنبه 22 خرداد 1386, 11:05 صبح
سوال شما مشکلی نداره لیست فیلدها و سایز اونا که دارید ارتفاع هر editbox و ارتفاع فرم را نیز دارید . به فرض درفرم n ردیف کنترل می توان قرار داد . نمی دونم مشکله شما چیه .مشکلتون واضح تر بیان کنید

a_b_toops
سه شنبه 22 خرداد 1386, 11:08 صبح
این ساختن تمام اشیاء رو از روی DBGrid و نوع داده انجام می ده شبیه اون چیزی که می خوای
Link (http://barnamenevis.org/forum/showthread.php?t=69202)

SYNDROME
سه شنبه 22 خرداد 1386, 14:38 عصر
با سلام
می توانید فیلدهای داخل بانک را بخوانید و با توجه به نوع و طول آنها Box ها را در صفحه بچینید و سپس برای Labe هر Box از Des مربوط به بانک خود استفاده کنید.