shpegah
چهارشنبه 23 تیر 1389, 11:03 صبح
سلام دوستان خوب
من يك ليست از فرمهاي موجود در يك پروژه را نياز دارم دقيقا مشابه آنچه كه در
[(FormView(Shift+F12 ]خود دلفي 7 وجود دارد در داخل يك برنامه ديگر . براي اينكار من اسم پروژه را از كاربر ميگيرم و بااستفاده از خواندن خط به خط text فايل پروژه.آنها را وارد ليستم ميكنم ولي ميدانم كار جالبي نيست چون در داخل Project Option در قسمت Available Forms هم از آن استفاده شده پس حتما در بخشي از properties هاي موجود در Application قرار دارد.
ميتوانيد راهنماييم كنيد؟ممنونم
Felony
چهارشنبه 23 تیر 1389, 12:41 عصر
تا جایی که من میدونم خود دلفی هم از همین روش استفاده میکنه ، با یک حلقه فایل dpr پروژتون رو بررسی کنید و لیست یونیت ها رو در بیارید ، حالا با یک حلقه تو یونیت ها بررسی کنید اگر شیئی از کلاس TForm مشتق شده بود نام اون شئ رو در بیارید :
Procedure ExtractForm(ProjectFile: String; ListBox: TListBox);
var
  StrList1, StrList2: TStringList;
  Temp: String;
  LineCount1, LineCount2: Integer;
begin
  StrList1:= TStringList.Create;
  StrList2:= TStringList.Create;
  try
    StrList1.LoadFromFile(ProjectFile);
    for LineCount1:= 0 to StrList1.Count - 1 do
    begin
     if StrList1.Strings[LineCount1]= '{$R *.res}' then Exit;
     if pos('in', StrList1.Strings[LineCount1])> 0 then
     begin
      // Extract pas file of project from project source file
      Temp:= Copy(StrList1.Strings[LineCount1], Pos('''',StrList1.Strings[LineCount1])+ 1, Length(StrList1.Strings[LineCount1]));
      Temp:= Copy(Temp, 0, Pos('''',StrList1.Strings[LineCount1])- 3);
      if ExtractFilePath(Temp)= '' then
        StrList2.LoadFromFile(ExtractFilePath(ProjectFile) + Temp)
      else
        StrList2.LoadFromFile(Temp);
      for LineCount2 := 0 to StrList2.Count - 1 do
        if Pos('class(TForm)', StrList2.Strings[LineCount2])> 0 then
          ListBox.AddItem(Copy(StrList2.Strings[LineCount2],4 ,Pos('=',StrList2.Strings[LineCount2])-5), nil);
     end;
    end;
  finally
    StrList1.Free;
    StrList2.Free;
  end;
end;
نحوه استفاده ( به عنوان مثال ) :
  ExtractForm('F:\Me\Self Projects\Library Management\S.LM.dpr', ListBox1);
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.