Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Выравнивание ячеек VirtualStringTree по правому краю

Delphi , Синтаксис , Деревья

TVirtualStringTree - настройка выравнивания ячеек/узлов столбца

Если вы используете VirtualStringTree с установленным по умолчанию выравниванием текста в заголовке столбца taLeftJustify, но хотите выровнять ячейки/узлы в этом столбце по правому краю, а текст заголовка столбца - по левому, то эта статья поможет вам решить эту проблему.

Вопрос: У меня есть VirtualStringTree с установленным по умолчанию выравниванием текста в заголовке столбца taLeftJustify. Есть ли способ установить выравнивание ячеек/узлов этого столбца на taRightJustify, чтобы узлы выравнивались по правому краю, а текст заголовка столбца - по левому?

Желаемый результат (в столбце 1):

desired_result

Я использую версию VT 4.5.5.

Ответ: Чтобы выровнять текст заголовка столбца по левому краю, используйте:

Header.Columns[x].CaptionAlignment := taLeftJustify;

Чтобы выровнять ячейки/узлы столбца по правому краю, используйте:

Header.Columns[x].Alignment := taRightJustify;

где x - ваш столбец.

Комментарии: В моей старой версии VT (4.5.5) нет свойства CaptionAlignment. Однако, после изучения версии 5.3.0, я считаю, что это правильный ответ, поэтому я принимаю его. Если бы я использовал более новую версию VT (что в настоящее время невозможно), я бы сам разобрался в этом. Спасибо.

Если у вас также нет свойства CaptionAlignment в вашей версии VT, вы можете использовать событие OnAdvancedHeaderDraw, чтобы нарисовать свои собственные заголовки столбцов. Установите выравнивание столбца 1 на taRightJustify и обработайте рисование текста заголовка для нужного столбца самостоятельно.

Пример кода на Object Pascal (Delphi) для альтернативного ответа:

type
  TVirtualTreeColumnsAccess = class(TVirtualTreeColumns);

procedure TForm1.FormCreate(Sender: TObject);
begin
  VST.Header.Options := VST.Header.Options + [hoOwnerDraw];
  VST.OnHeaderDrawQueryElements := VSTHeaderDrawQueryElements;
  VST.OnAdvancedHeaderDraw := VSTAdvancedHeaderDraw;
end;

procedure TForm1.VSTHeaderDrawQueryElements(Sender: TVTHeader; var PaintInfo: THeaderPaintInfo;
  var Elements: THeaderPaintElements);
begin
  { Use OwnerDraw only for desired column(s)     }
  { other columns drawing will be handled by VST }
  if Assigned(PaintInfo.Column) and (PaintInfo.Column.Index = 1) then
    Elements := [hpeText];
end;

procedure TForm1.VSTAdvancedHeaderDraw(Sender: TVTHeader;
  var PaintInfo: THeaderPaintInfo; const Elements: THeaderPaintElements);
var
  DrawFormat: Cardinal;
  R: TRect;
begin
  { The event will fire only for the desired column(s) }
  if (hpeText in Elements) and Assigned(PaintInfo.Column) then
  with PaintInfo do
  begin
    DrawFormat := DT_LEFT or DT_TOP or DT_NOPREFIX;
    if Column.UseRightToLeftReading then
      DrawFormat := DrawFormat or DT_RTLREADING;

    R := TextRectangle;
    R.Left := PaintRectangle.Left + Column.Margin;

    TVirtualTreeColumnsAccess(Column.Owner).DrawButtonText(
      TargetCanvas.Handle, Column.Text, R,
      IsEnabled,
      IsHoverIndex and (hoHotTrack in Sender.Options)
        and not (tsUseThemes in Sender.Treeview.TreeStates),
      DrawFormat);
  end;
end;

Примечание: Убедитесь, что вы импортируете необходимые библиотеки и правильно настраиваете ваш VirtualStringTree, чтобы использовать этот код.

Создано по материалам из источника по ссылке.

Настройка выравнивания ячеек/узлов столбца в TVirtualStringTree.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Деревья ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 03:43:38/0.0053720474243164/1