PDA

View Full Version : فرم دینامیک



ariobarzan
چهارشنبه 16 تیر 1395, 19:06 عصر
با سلام
من باید در برنامه یک سیستم ارزیابی کارمندان طراحی کنم که هر بار هم سوالات اون ارزیابی از نظر محتوا و یا تعداد ممکن هست تغییر کنه
با طراحی و ثبت اون توی دیتا بیس مشکلی ندارم یعنی کاربر ادمین میتونه سوالات که معمولا 4 جوابی هستند را طراحی و گروه بندی و توی بانک ذخیره کنه
مشکل من توی نمایش سوالات به کاربری هست که قراره به این ارزیابی پاسخ بده
نمیدونم چطور این سوالات را که تعدادشون در هر بار ارزیابی کم و زیاد میشه توی یک فرم بچینم :افسرده:
کسی پیشنهادی داره؟
ممنون

یوسف زالی
پنج شنبه 17 تیر 1395, 03:43 صبح
سلام.
نمی تونید از اسکرول بار استفاده کنید؟
آیا درست برداشت کردم؟

ariobarzan
شنبه 19 تیر 1395, 12:42 عصر
از اسكرول بار كه بايد استفاده كنم
مشكل در چيدمان سوالات در اسكرول بار هست
فرض كنيد يكبار ده تا سوال 4 جوابي داريم و يكبار ديگه 40 تا سوال
حالا مثلا اگه بخواهيم از RadiGroup و يا چند تا چك باكس براي هر سوال استفاده كنيم با توجه به اينكه هر بار تعداد سوالها كم و زياد ميشه اين radioGroup ها را چطور بطور خودكار بچينيم توي اسكرول بار؟

یوسف زالی
شنبه 19 تیر 1395, 20:49 عصر
برای هر سوال یک باکس مثلا با پنل درست کنید و روی پنل آیتم هاش رو بچینید، برای هر کدوم تگ مناسب ست کنید.
حالا از روی این باکس به تعداد سوالها بسازید و Align اون رو alTop ست کنید.

ariobarzan
دوشنبه 21 تیر 1395, 19:10 عصر
از آرایه استفاده کردم
فکر کنم با همین کارم راه بیوفته



procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
p:array of TPanel;
begin
SetLength(p, 10);
for i:=0 to 9 do
begin

p[i]:=TPanel.Create(Self);
p[i].Parent:=Self;
p[i].Left:=Self.Left-100;
if i>1 then
p[i].Top:=p[i-1].Top+p[i-1].ClientHeight+5;
p[i].Width:=400;
p[i].Height:=30;

end;
end;

Mahmood_M
دوشنبه 21 تیر 1395, 19:27 عصر
از DBCtrlGrid استفاده کنید، اون رو به بانک سئوالات وصل کنید و پنلش رو برای یک سئوال بسازید، همون پنل به تعداد سئوالات ( رکوردهای بانک ) تکرار میشه
مجموعه AlphaControls یک DBCtrlGrid داره که نسبت به نسخه استاندارد دلفی بهتره
DBCtrlGrid رو درون یک ScrollBox قرار بدید و هر بار خاصیت RowCount ش رو برابر تعداد سئوالات قرار بدید
روی این کنترل در حالت عادی نمی تونید کنترلهایی که ورودی می گیرن ( مثل Edit ) قرار بدید، باید کامپوننت Edit رو کمی تغییر بدید و یک Edit جدید بسازید که بتونید روی پنلش بذارید
اگر به این مورد نیاز دارید بگید تا توضیح بدم که روش کار به چه صورته