2008. szeptember 16., kedd
How to adjust the width of THeaderControl sections automatically, when the first section is resized
Problem/Question/Abstract:
I have THeaderControl with 4 sections. When I resize the first section, I need the remaining 3 sections to resize proportionally to their size to ensure that they don't go out of visibility (I mean that the last section end position always remains the same). I tried to use OnSectionResize or OnSectionTrack events, but without success. Can anyone help?
Answer:
procedure TForm1.ResizeMyHeader();
const
MIN_COL_WIDTH = 10;
var
iColWidth: Integer;
iColExtra: Integer;
iSection: Integer;
begin
if HeaderControl1.Sections.Count > 1 then
begin
iColWidth := HeaderControl1.Width;
Dec(iColWidth, HeaderControl1.Sections[0].Width);
iColWidth := (iColWidth div (HeaderControl1.Sections.Count - 1));
iColExtra := HeaderControl1.Width - (HeaderControl1.Sections[0].Width +
(HeaderControl1.Sections.Count - 1) * iColWidth);
{resize the 2nd to the last columns}
if iColWidth >= MIN_COL_WIDTH then
begin
for iSection := 1 to HeaderControl1.Sections.Count - 2 do
begin
HeaderControl1.Sections[iSection].Width := iColWidth;
end;
HeaderControl1.Sections[HeaderControl1.Sections.Count - 1].Width := iColWidth + iColExtra;
end;
end;
end;
procedure TForm1.HeaderControl1_OnSectionResize(HeaderControl: THeaderControl;
Section: THeaderSection);
begin
Self.ResizeMyHeader;
end;
procedure TForm1.Form_OnResize(Sender: TObject);
begin
Self.ResizeMyHeader;
end;
Feliratkozás:
Megjegyzések küldése (Atom)
Nincsenek megjegyzések:
Megjegyzés küldése