Просмотр исходного кода

FIX: Status bar panel auto size

Alexander Koblov 7 лет назад
Родитель
Сommit
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);