Für große
MDI-Childforms mit vielen Controls sind bekanntlich die Systemressourcen unter Windows 98 begrenzt auf 64 KB. Um dies zu lösen habe ich in den Forms ein PageControl mit TabSheets welche als erstes Control ein TPanel mit alClient bekommen eingebaut. Innerhalb dieses PageControls befinden sich alle Controls.
Mit DestroyHandle habe ich die Handles aller Controls, welche sich auf im Augenblick nicht sichtbaren TabSheets befinden freigegeben. Über CreateHandle hole ich mir die
Handle für die Controls des sichtbaren TabSheets zurück.
Für meine User-Ressourcen hatte das vollen Erfolg, die Zahl verringert sich jetzt bei jedem neuen Child-Form nur sehr gering. War ein voller Erfolg.
Allerdings bleiben leider meine
GDI-Ressourcen im Keller.
Vielleicht mal bischen genauer. Ich laufe im Change-Ereignis des PageControls für jedes nicht sichtbare TabSheet die Controls durch und gebe mittels DestroyHandle die Handles frei.
Delphi-Quellcode:
procedure Set_FreeRessources(ControlFree: TWinControl);
var
i: integer;
begin
for i := 0 to ControlFree.ControlCount -1 do
begin
if ControlFree.Controls[i].ClassType = TPanel then
TUserPanel(ControlFree.Controls[i]).DestroyHandle;
if ControlFree.Controls[i] is TWinControl then
Set_FreeRessources( ControlFree.Controls[i] as TWinControl);
end;
end;
Klappt für die User-Ressourcen prima. Kann man was vergleichbares für die
GDI-Ressourcen tun?
Viele Grüße Dirk
[edit=Daniel B]Delphi-Tags gesetzt. MfG Daniel B.[/edit]