Einzelnen Beitrag anzeigen

Dirk Reichert

Registriert seit: 25. Apr 2003
Ort: Neubrandenburg
4 Beiträge
 
#3

Sparsamster Umgang mit Systemressourcen unter Windows 98

  Alt 2. Mai 2003, 09:19
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]
  Mit Zitat antworten Zitat