Changeset 459 for trunk


Ignore:
Timestamp:
Feb 18, 2023, 5:23:06 AM (2 years ago)
Author:
ataylor
Message:

CustomFontDialog now scales controls to font.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Components/CustomFontDialog.PAS

    r15 r459  
    311311
    312312     SetEditFont( Screen.DefaultFont );
     313
    313314End;
    314315
     
    336337     ExampleH: longint;
    337338     VSplit: longint;
    338      GrpH: longint;
    339339     TopH: longint;
     340     TxtH: longint;
     341     BtnH: longint;
     342     BtnW: longint;
     343     TopLW: longint;
     344     SzW: longint;
     345     StW: longint;
     346     StLH: longint;
     347     LstY: longint;
     348     ChkY: longint;
     349     FaX: longint;
    340350Begin
    341351     W := ClientWidth;
    342352     H := ClientHeight;
     353
     354     // Basic measurements based on current font size
     355     try
     356        // Height of a line of text (with some slight padding)
     357        TxtH := trunc( Canvas.TextHeight( 'M' ) * 1.2 );
     358        // Height & width of a pushbutton
     359        BtnH := trunc( Canvas.TextHeight( 'M' ) * 1.5 );
     360        BtnW := Canvas.TextWidth('W') * 8;
     361        // Width of size controls area
     362        SzW  := Canvas.TextWidth('W') * 5;
     363     except
     364        TxtH := 20;
     365        BtnH := 30;
     366        BtnW := 80;
     367        StW  := 45;
     368     end;
    343369
    344370     // Example is minimum 40 pixels, or 20% of height
     
    347373       ExampleH := H div 5;
    348374
    349      // Base of name/size/style (45 allows for buttons/spacing)
    350      VSplit := 45 + ExampleH;
    351      TopH := H - VSplit - 25;
    352 
    353      GrpH := TopH + 20;
    354      //                             Left     Bottom      Width    Height
    355      FNameLabel      .SetWindowPos( 5,       H - 25,     W - 210, 20      );
    356      FNameList       .SetWindowPos( 5,       VSplit,     W - 210, TopH    );
    357 
    358      FStyleLabel     .SetWindowPos( W - 200, H - 25,     120,     20      );
    359 
    360      FStyleListbox   .SetWindowPos( W - 200, H - 100,    145,     75      );
    361 
    362      FBoldCheck      .SetWindowPos( W - 200, H - 125,    145,     20      );
    363      FItalicCheck    .SetWindowPos( W - 200, H - 145,    145,     20      );
    364      FUnderscoreCheck.SetWindowPos( W - 200, H - 165,    145,     20      );
    365      FOutlineCheck   .SetWindowPos( W - 200, H - 185,    145,     20      );
    366      FStrikeOutCheck .SetWindowPos( W - 200, H - 205,    145,     20      );
    367 
    368      FSizeLabel      .SetWindowPos( W - 50,  H - 25,     45,      20      );
    369      FSizeCombo      .SetWindowPos( W - 50,  VSplit,     45,      TopH    );
    370 
    371      FExampleText    .SetWindowPos( 5,       40,         W - 10,  ExampleH );
    372 
    373      FActualFaceLabel.SetWindowPos( 180,     10,         W - 185,  20      );
    374 
    375      FOKButton       .SetWindowPos( 5,       5,          80,      30      );
    376      FCancelButton   .SetWindowPos( 90,      5,          80,      30      );
     375     // Base of top area (name/size/style)
     376     VSplit := BtnH + ExampleH + 15;
     377     TopH := H - VSplit - TxtH - 5;
     378
     379     // Divide the top half controls at 55% of the total width
     380     TopLW := trunc( W * 0.55 );    // Width of top left area
     381     StW := W - TopLW - SzW - 10;   // Width of Style controls
     382
     383     LstY := H - TxtH - 5;          // Top of all listboxes
     384     StLH := TxtH * 4;              // Height of Style listbox
     385     ChkY := LstY - StLH - 5;       // Top of checkbox area
     386     FaX := 20 + ( 2 * BtnW );      // Left position of selected-face label
     387
     388     //                             Left     Bottom      Width      Height
     389     FNameLabel      .SetWindowPos( 5,       LstY,       TopLW-5,   TxtH     );
     390     FNameList       .SetWindowPos( 5,       VSplit,     TopLW-5,   TopH     );
     391
     392     FStyleLabel     .SetWindowPos( TopLW+5, LstY,       StW,       TxtH     );
     393     FStyleListbox   .SetWindowPos( TopLW+5, LstY-StLH,  StW,       StLH     );
     394
     395     FBoldCheck      .SetWindowPos( TopLW+5, ChkY-TxtH,     StW,    TxtH     );
     396     FItalicCheck    .SetWindowPos( TopLW+5, ChkY-(2*TxtH), StW,    TxtH     );
     397     FUnderscoreCheck.SetWindowPos( TopLW+5, ChkY-(3*TxtH), StW,    TxtH     );
     398     FOutlineCheck   .SetWindowPos( TopLW+5, ChkY-(4*TxtH), StW,    TxtH     );
     399     FStrikeOutCheck .SetWindowPos( TopLW+5, ChkY-(5*TxtH), StW,    TxtH     );
     400
     401     FSizeLabel      .SetWindowPos( W-SzW,   LstY,       SzW-5,     TxtH     );
     402     FSizeCombo      .SetWindowPos( W-SzW,   VSplit,     SzW-5,     TopH     );
     403
     404     FExampleText    .SetWindowPos( 5,       BtnH+10,    W-10,      ExampleH );
     405
     406     FActualFaceLabel.SetWindowPos( FaX,     6,          W-FaX-5,   TxtH     );
     407
     408     FOKButton       .SetWindowPos( 5,       5,          BtnW,      BtnH     );
     409     FCancelButton   .SetWindowPos( BtnW+10, 5,          BtnW,      BtnH     );
    377410
    378411End;
Note: See TracChangeset for help on using the changeset viewer.