- Timestamp:
- Feb 18, 2023, 5:23:06 AM (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Components/CustomFontDialog.PAS
r15 r459 311 311 312 312 SetEditFont( Screen.DefaultFont ); 313 313 314 End; 314 315 … … 336 337 ExampleH: longint; 337 338 VSplit: longint; 338 GrpH: longint;339 339 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; 340 350 Begin 341 351 W := ClientWidth; 342 352 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; 343 369 344 370 // Example is minimum 40 pixels, or 20% of height … … 347 373 ExampleH := H div 5; 348 374 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 ); 377 410 378 411 End;
Note:
See TracChangeset
for help on using the changeset viewer.