Einzelnen Beitrag anzeigen

mattia72

Registriert seit: 18. Aug 2023
Ort: Ungarn, Pest
9 Beiträge
 
#1

Wie kann man Fenster von eigener Extension in layout speichern

  Alt 24. Mai 2024, 15:14
Hallo zusammen,

ich habe ein INTACustomDockableForm (https://www.delphipraxis.net/1534720-post8.html)
Es sind zwei Prozeduren in dem Interface, die zum Speichern und Laden benutzt werden können. Die habe ich grob so implementiert:
Delphi-Quellcode:
    
...
procedure TRipGrepperDockableForm.SaveWindowState(Desktop : TCustomIniFile; const Section : string; IsProject : Boolean);
var
   wp : TWindowPlacement;
begin
   TDebugUtils.DebugMessage(Format('TRipGrepperDockableForm.SaveWindowState: %s [%s] IsProject:%s',
      [Desktop.FileName, Section, BoolToStr(IsProject, True)]));
   wp.length := Sizeof(wp);
   GetWindowPlacement(form.handle, @wp);
   var
   pos := wp.rcNormalPosition;
   Desktop.WriteInteger(section, sLeft, pos.Left);
   Desktop.WriteInteger(section, sTop, pos.Top);
   Desktop.WriteInteger(section, sWidth, pos.Right - pos.Left);
   Desktop.WriteInteger(section, sHeight, pos.Bottom - pos.Top);
   Desktop.WriteString(section, sState, GetEnumName(TypeInfo(TWindowState), Ord(form.WindowState)));
end;
procedure TRipGrepperDockableForm.LoadWindowState(Desktop : TCustomIniFile; const Section : string);
var
   L, T, W, H : Integer;
begin
   TDebugUtils.DebugMessage('TRipGrepperDockableForm.LoadWindowState: ' + Desktop.FileName + '[' + Section + ']');

   L := Desktop.ReadInteger(section, sLeft, form.Left);
   T := Desktop.ReadInteger(section, sTop, form.Top);
   W := Desktop.ReadInteger(section, sWidth, form.Width);
   H := Desktop.ReadInteger(section, sHeight, form.Height);
   form.SetBounds(L, T, W, H);
   try
      form.Windowstate := TWindowState(GetEnumValue(TypeInfo(TWindowState), Desktop.ReadString(section, sState, 'wsNormal')));
   except
   end;

end;
Save wird ordentlich angerufen, wenn ich die IDE schließe, load aber nicht.
Wie kann ich das Fenster von meiner Extension auch in Layout speichern damit es immer auftaucht, wenn ich das Layout lade?
  Mit Zitat antworten Zitat