PDA

View Full Version : سوال: ساخت یک کپی از یک پانل با محتویاتش در حالت اجرا



hadisalahi2
چهارشنبه 20 آذر 1392, 15:20 عصر
سلام بچه ها

ببینید ، من یک مجموعه کنترل دارم (شامل Image,Edit,Lable,....) که روی یک پانل اینها رو چیدم
حالا این پنل ، باید به تعداد رکوردهای یکی از جداولم ، باید روی فرم ایجاد بشه.

حالا چطوری میتونم این پنل رو در حالت RunTime با کد ایجاد کنم ، که همه کنترل های داخل اون هم ساخته بشه؟

من برای ساختن مثلا یک Image روی کامپوننت PageSlider از مجموعه Tms به این روش عمل میکنم:


NewPage:=TAdvSmoothPage.Create(ReportPages);
NewPage.SetComponentStyle(tsOffice2010Blue);
NewPage.Name:='Page'+IntToStr(ReportPages.PageCoun t);
NewPage.Header:='';NewPage.Footer:='';
NewPage.HeaderHeight:=70;NewPage.FooterHeight:=30;
NewPage.Header:=IntToStr(ReportPages.PageCount);
ReportPages.AddPage(NewPage);
//---------------------------------------
NewImage:=TImage.Create(NewPage);
NewImage.Parent:=NewPage;
with NewImage do Begin
Name:='AgentImage'+IntToStr(I);
Height:=65;Width:=60;
Stretch:=True;
Hint:='نام نماینده';
ShowHint:=True;
Top:=3;Left:=3;
Picture.LoadFromFile('G:\1.jpg');
End;


در این روش ، من از اول میام و همه کنترل ها رو یکی یکی با کد میسازم و روی Page قرار میدم

فرضا اگه 10 تا کنترل متفاوت دارم ، اینها رو با کد میسازم و Parent همه آنها رو روی مثلا روی Page1 قرار میدم.

حالا من میخوام برای راحت شدن کار ، یکی از این Page ها رو با تمام کامپوننت های داخلش در حالت Design طراحی کنم
و بعد ، در حالت اجرا ، همین Page رو با کد نویسی ، کپی کنم ، جوری که همه کامپوننت های داخلش هم کپی بشه.

آیا اصلا این روش منطقی هستش و قابل اجرا؟

ببخشید طولانی شد:لبخند:

یوسف زالی
چهارشنبه 20 آذر 1392, 17:25 عصر
سلام.
روش خوبیه.
یکی از راههاش استفاده از فریم هست که تخصصی شده برای همچین کارهاییه.
یک فریم جدید درست کن و هرچی دل تنگت می خواد بریز توش.
حالا مثلا در یک دکمه بنویس:


procedure TForm1.Button1Click(Sender: TObject);
var
f: TFrame;
begin
f := TFrame3.Create(Self);
f.Parent := Self;
f.Name := 'frame_' + IntToStr(GetTickCount);
f.Show;
end;

hadisalahi2
پنج شنبه 21 آذر 1392, 09:39 صبح
ممنون از جوابت داداش
ولی چند تا مشکل توی این روش هستش

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

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

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

hadisalahi2
شنبه 23 آذر 1392, 09:28 صبح
بچه ها کسی نیست جواب ما رو بده ؟ :افسرده: