PDA

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



MEhdi Sobhani
سه شنبه 07 دی 1389, 02:40 صبح
با عرض سلام و خسته نباشید .
در آرایه MdiChildrren که فرمهای فرزند لیست میشن موردی وجود داره و اون اینکه هر فرمی که فعال میشه به اول آرایه منتقل میشه .
آیا راهی وجود داره که بشه فرمها رو به ترتیب تولیدشون به دست آورد و مثلا در یک لیست باکس یا تب کنترل لیست کرد ؟
البته منظور این نیست که یک آرایه بسازیم و فرمها رو در زمان اجرا در اون قرار بدیم .
با تشکر فراوان

Felony
سه شنبه 07 دی 1389, 05: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 مقدار دهی کنید .