Status bar — стандартный элемент управления Windows, и соответственно цвет его букв — значение clBtnText которое изменяется с помощью настроек в Control Panel. Этот цвет черный по умолчанию и может изменяться в зависимости от выбранной цветовой схемы. Другие стандартные элемент управления Windows, например кнопки, также имеют цвет букв, настраиваемый из ControlPanel. StatusBar и его панели имеют свойство "owner-draw", позволяющее Вам использовать любой цвет букв.

Пример:

procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect);

begin

 if Panel = StatusBar.Panels[0] then begin

  StatusBar.Canvas.Font.Color := clRed;

  StatusBar.Canvas.TextOut(Rect.Left, Rect.Top, 'Panel - 0')

 end else begin

  StatusBar.Canvas.Font.Color := clGreen;

  StatusBar.Canvas.TextOut(Rect.Left, Rect.Top, 'Panel - 1');

 end;

end;

Вопрос:

Как сделать многострочную надпись на TBitBtn?

Ответ:

Выводите текст надписи непосредственно на "glyph" TBitBtn'а. См. пример.

Пример:

procedure TForm1.FormCreate(Sender: TObject);

var

 R : TRect;

 N : Integer;

 Buff : array[0..255] of Char;

begin

 with BitBtn1 do begin

  Caption := 'A really really long caption';

  Glyph.Canvas.Font := Self.Font;

  Glyph.Width := Width - 6;

  Glyph.Height := Height - 6;

  R := Bounds(0, 0, Glyph.Width, 0);

  StrPCopy(Buff, Caption);

  Caption := '';

  DrawText(Glyph.Canvas.Handle,Buff,StrLen(Buff),R, DT_CENTER or DT_WORDBREAK or DT_CALCRECT);

  OffsetRect(R,(Glyph.Width - R.Right) div 2, (Glyph.Height - R.Bottom) div 2);

  DrawText(Glyph.Canvas.Handle,Buff,StrLen(Buff),R, DT_CENTER or DT_WORDBREAK);

 end;

end;

Вопрос:

Как изменить стиль шрифта RichEdit нажатиями соответствующих комбинаций клавиш? (например включить курсив по нажатию Ctrl + I)

Ответ:

В примере стили шрифта меняются по нажатию след. комбинаций клавиш

• Ctrl + B — вкл/выкл жирного шрифта

• Ctrl + I — вкл/выкл наклонного шрифта

• Ctrl + S — вкл/выкл зачеркнутого шрифта

• Ctrl + U — вкл/выкл подчеркнутого шрифта

Пример:

const

 KEY_CTRL_B = 02;

 KEY_CTRL_I = 9;

 KEY_CTRL_S = 19;

 KEY_CTRL_U = 21;

procedure TForm1.RichEdit1KeyPress(Sender: TObject; var Key: Char);

begin

 case Ord(Key) of

 KEY_CTRL_B: begin

  Key := #0;

  if fsBold in (Sender as TRichEdit).SelAttributes.Style then (Sender as TRichEdit).SelAttributes.Style := (Sender as TRichEdit).SelAttributes.Style - [fsBold]

  else (Sender as TRichEdit).SelAttributes.Style := (Sender as TRichEdit).SelAttributes.Style + [fsBold];

 end;

 KEY_CTRL_I: begin

  Key := #0;

  if fsItalic in (Sender as TRichEdit).SelAttributes.Style then (Sender as TRichEdit).SelAttributes.Style := (Sender as TRichEdit).SelAttributes.Style - [fsItalic]

  else (Sender as TRichEdit).SelAttributes.Style := (Sender as TRichEdit).SelAttributes.Style + [fsItalic];

 end;

 KEY_CTRL_S: begin

  Key := #0;

  if fsStrikeout in (Sender as TRichEdit).SelAttributes.Style then (Sender as TRichEdit).SelAttributes.Style := (Sender as TRichEdit).SelAttributes.Style-[fsStrikeout]

  else (Sender as TRichEdit).SelAttributes.Style := (Sender as TRichEdit).SelAttributes.Style+[fsStrikeout];

 end;

 KEY_CTRL_U: begin

Перейти на страницу:

Похожие книги