浏览代码

FIX: Status bar panel auto size

Alexander Koblov 7 年之前
父节点
当前提交
fe7b661705
共有 1 个文件被更改,包括 19 次插入0 次删除
  1. 19 0
      src/fdiffer.pas

+ 19 - 0
src/fdiffer.pas

@@ -33,6 +33,13 @@ uses
 
 type
 
+  { TStatusBar }
+
+  TStatusBar = class(ComCtrls.TStatusBar)
+  protected
+    procedure InvalidatePanel(PanelIndex: Integer; PanelParts: TPanelParts); override;
+  end;
+
   { TfrmDiffer }
 
   TfrmDiffer = class(TAloneForm, IFormCommands)
@@ -288,6 +295,18 @@ begin
   end;
 end;
 
+{ TStatusBar }
+
+procedure TStatusBar.InvalidatePanel(PanelIndex: Integer; PanelParts: TPanelParts);
+begin
+  if (PanelIndex >= 0) and (ppText in PanelParts) then
+  begin
+    if Length(Panels[PanelIndex].Text) > 0 then
+      Panels[PanelIndex].Width:= Canvas.TextWidth('WW' + Panels[PanelIndex].Text);
+  end;
+  inherited InvalidatePanel(PanelIndex, PanelParts);
+end;
+
 { TfrmDiffer }
 
 procedure TfrmDiffer.actStartCompareExecute(Sender: TObject);