Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Текущий модуль и проект

01.01.2007

Автор: Dr. Bob

Компонент во время проектирования может знать имена текущих модулей и имя проекта. Все это можно получить с помощью ToolServices (см. файл TOOLINTF.PAS)

Имя текущего проекта можно получить с помощью вызова GetProjectName, список модулей/форм - с помощью функции GetUnitCount, которая возвратит количество модулей и затем с помощью GetUnitName(i) мы можем получить имя каждого модуля (также и с формами).

Вот примерный образец кода (получение и запись имен всех модулей/форм в StringGrid и имени проекта в Label):

procedure TInformationFrm.FormActivate(Sender: TObject);
{ необходимо: StringGrid1 (2 колонки, масса строк), Label1, Label2 }
var
  i
, j: Integer;
 
Tmp: string;
begin
  StringGrid1
.Cells[0, 0] := 'модулей:';
  StringGrid1
.Cells[1, 0] := 'форм:';
 
if ToolServices <> nil then
   
with ToolServices do
   
begin
      Label1
.Caption := ExtractFileName(GetProjectName); { простое имя }
      Label2
.Caption := GetProjectName;   { полное правильное имя пути }
     
for i := 0 to GetUnitCount do
     
begin
       
Tmp := ExtractFileName(GetUnitName(i));
        StringGrid1
.Cells[0, i + 1] := Tmp;
       
Tmp := ChangeFileExt(Tmp, '.DFM');
       
for j := 0 to GetFormCount do
         
if ExtractFileName(GetFormName(j)) = Tmp then
            StringGrid1
.Cells[1, i + 1] := Tmp
     
end;
   
end;
end;

Взято с https://delphiworld.narod.ru