LCL: added TScreen.DataModules form Aleksey Lagunov

git-svn-id: trunk@14331 -
This commit is contained in:
mattias 2008-02-29 20:11:29 +00:00
parent 6ed82a2a82
commit d00602020a
3 changed files with 59 additions and 4 deletions

View File

@ -735,8 +735,12 @@ type
snActiveFormChanged
);
{ TScreen }
{$IFNDEF UseFCLDataModule}
{ TDataModule }
TDataModule = class;
{$ENDIF}
{ TScreen }
TScreen = class(TLCLComponent)
private
FActiveControl: TWinControl;
@ -752,6 +756,7 @@ type
FFocusedForm: TCustomForm;
FFonts : TStrings;
FFormList: TList;
FDataModuleList: TList;
FScreenHandlers: array[TScreenNotification] of TMethodList;
FLastActiveControl: TWinControl;
FLastActiveCustomForm: TCustomForm;
@ -766,6 +771,8 @@ type
function GetCustomFormZOrderCount: Integer;
function GetCustomForms(Index: Integer): TCustomForm;
function GetCustomFormsZOrdered(Index: Integer): TCustomForm;
function GetDataModuleCount: Integer;
function GetDataModules(AIndex: Integer): TDataModule;
function GetDesktopHeight: Integer;
function GetDesktopWidth: Integer;
function GetFonts : TStrings;
@ -782,6 +789,8 @@ type
const Handler: TMethod; AsLast: Boolean);
procedure RemoveHandler(HandlerType: TScreenNotification;
const Handler: TMethod);
procedure DoAddDataModule(DataModule: TDataModule);
procedure DoRemoveDataModule(DataModule: TDataModule);
protected
function GetHintFont: TFont; virtual;
public
@ -796,6 +805,7 @@ type
function GetCurrentModalFormZIndex: Integer;
function CustomFormBelongsToActiveGroup(AForm: TCustomForm): Boolean;
function FindForm(const FormName: string): TCustomForm;
function FindDataModule(const DataModuleName: string): TDataModule;
procedure UpdateScreen;
// handler
procedure AddHandlerFormAdded(OnFormAdded: TScreenFormEvent;
@ -831,6 +841,9 @@ type
property FocusedForm: TCustomForm read FFocusedForm;
property FormCount: Integer read GetFormCount;
property Forms[Index: Integer]: TForm read GetForms;
property DataModuleCount: Integer read GetDataModuleCount;
property DataModules[Index: Integer]: TDataModule read GetDataModules;
property Fonts : TStrings read GetFonts;
property Height : Integer read Getheight;
property HintFont : TFont read GetHintFont;
@ -1277,7 +1290,7 @@ type
{$IFNDEF UseFCLDataModule}
type
//type
{ TDataModule }
TDataModule = class(TComponent)

View File

@ -28,11 +28,15 @@ const
function FindApplicationComponent(const ComponentName: string): TComponent;
begin
if Application.FindGlobalComponentEnabled then begin
if Application.FindGlobalComponentEnabled then
begin
Result:=Application.FindComponent(ComponentName);
if Result=nil then
Result:=Screen.FindForm(ComponentName);
end else
if Result=nil then
Result:=Screen.FindDataModule(ComponentName);
end
else
Result:=nil;
//debugln('FindApplicationComponent ComponentName="',ComponentName,'" Result=',DbgSName(Result));
end;

View File

@ -34,8 +34,12 @@ begin
FCustomForms:=TList.Create;
FCustomFormsZOrdered:=TList.Create;
FFormList := TList.Create;
FDataModuleList := TList.Create;
FPixelsPerInch:= ScreenInfo.PixelsPerInchX;
FSaveFocusedList := TList.Create;
AddDataModule:=@DoAddDataModule;
RemoveDataModule:=@DoRemoveDataModule;
end;
{------------------------------------------------------------------------------
@ -52,6 +56,7 @@ begin
for HandlerType:=Low(FScreenHandlers) to High(FScreenHandlers) do
FreeThenNil(FScreenHandlers[HandlerType]);
FreeThenNil(FHintFont);
FreeThenNil(FDataModuleList);
FreeThenNil(FFormList);
FreeThenNil(FCustomForms);
FreeThenNil(FCustomFormsZOrdered);
@ -166,6 +171,19 @@ begin
Result:=nil;
end;
function TScreen.FindDataModule(const DataModuleName: string): TDataModule;
var
i: Integer;
begin
for i:=0 to FDataModuleList.Count-1 do
if CompareText(TDataModule(FDataModuleList[i]).Name, DataModuleName)=0 then
begin
Result:=TDataModule(FDataModuleList[i]);
Exit;
end;
Result:=nil;
end;
procedure TScreen.UpdateScreen;
var
DC: HDC;
@ -358,6 +376,16 @@ begin
Result := TCustomForm(FCustomFormsZOrdered[Index]);
end;
function TScreen.GetDataModuleCount: Integer;
begin
Result:=FDataModuleList.Count;
end;
function TScreen.GetDataModules(AIndex: Integer): TDataModule;
begin
Result := TDataModule(FDataModuleList.Items[AIndex]);
end;
function TScreen.GetDesktopHeight: Integer;
begin
Result := GetSystemMetrics(SM_CYVIRTUALSCREEN);
@ -571,4 +599,14 @@ begin
FScreenHandlers[HandlerType].Remove(Handler);
end;
procedure TScreen.DoAddDataModule(DataModule: TDataModule);
begin
FDataModuleList.Add(DataModule);
end;
procedure TScreen.DoRemoveDataModule(DataModule: TDataModule);
begin
FDataModuleList.Remove(DataModule);
end;
// included by forms.pp