Registriert seit: 18. Aug 2023
Ort: Ungarn, Pest
9 Beiträge
|
Wie kann man Fenster von eigener Extension in layout speichern
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?
|