View Full Version : آرایه فرمهای فرزند به ترتیب تولید
  
MEhdi Sobhani
سه شنبه 07 دی 1389, 03:40 صبح
با عرض سلام و خسته نباشید . 
در آرایه MdiChildrren  که فرمهای فرزند لیست میشن موردی وجود داره و اون اینکه هر فرمی که فعال میشه به اول آرایه منتقل میشه . 
آیا راهی وجود داره که بشه فرمها رو به ترتیب تولیدشون به دست آورد و مثلا در یک لیست باکس  یا تب کنترل لیست کرد ؟ 
البته منظور این نیست که یک آرایه بسازیم و فرمها رو در زمان اجرا در اون قرار بدیم . 
با تشکر فراوان
Felony
سه شنبه 07 دی 1389, 06:11 صبح
خیر ، تا جایی که میدونم راهی نیست ولی میتونید خودتون یک مکانیزم برای این کار طراحی کنید ، مثلا زمان طراحی یا ساخته شدن فرم ها تو برنامتون خصیصه Tag فرم های Child رو به ترتیب مقداردهی کنید ( مثلا 1،2،3 ) بعد در زمان اجرا بر اساس شماره Tag ها فرم ها رو مرتب کنید ، در زیر براتون یه نمونه نوشتم .
در زمان طراحی خصیصه Tag فرم های فرزندتون رو به ترتیب مقدار دهی کنید :
var
  Temp_Tag, i: Byte;
  List: TStringList;
begin
  Temp_Tag:= 1;
  List:= TStringList.Create;
  try
    while List.Count <> MDIChildCount do
    begin
      for i:= 0 to Self.MDIChildCount - 1 do
        if Self.MDIChildren[i].Tag= Temp_Tag  then
        begin
          List.Add(Self.MDIChildren[i].Name);
          Inc(Temp_Tag);
        end;
    end;
  finally
    List.Free;
  end;
end;
- بعد از اجرای کد شئ List حاوی اسامی فرم ها بر اساس ترتیب خصیصه Tag شون هست و خصیصه Tag هم که بر اساس زمان ساخته شدن فرم ها مقدار گرفته پس شئ List بر اساس زمان ساخته شدن فرم ها مرتب شده هست .
- متغییر Temp_Tag که در کد با 1 مقدار دهی شده باید حاوی عدد Tag اولین فرم فرزند باشه ، یعنی اگر شماره گذاری فرم های فرزند رو مثلا از عدد 100 شروع کردید باید متغییر Temp_Tag رو در کد بالا با 100 مقدار دهی کنید .
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.