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

Выровнять текст в TListBox вправо

Delphi , Компоненты и Классы , Списки

Выровнять текст в TListBox вправо


procedure TForm1.FormCreate(Sender: TObject); 
begin 
  // Oder im Objektinspektor einstellen 
  // Or set in object inspector 
  ListBox1.Style := lbOwnerDrawFixed; 
end; 

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; 
  Rect: TRect; State: TOwnerDrawState); 
var 
  l: Integer;  
  t: String; 
begin 
  with ListBox1 do 
  begin 
    Canvas.FillRect(Rect); 
    t := Items[Index];  
    l := Rect.Right - Canvas.TextWidth(t) - 1; 
    Canvas.TextOut(l, Rect.Top, t); 
  end; 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  ListBox1.Items.Add(Edit1.Text); 
end;

Для выравнивания текста в TListBox вправо можно модифицировать процедуру ListBox1DrawItem следующим образом:

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
var
  l: Integer;
  t: String;
begin
  with ListBox1 do
  begin
    Canvas.FillRect(Rect);
    t := Items[Index];
    l := Rect.Right - Canvas.TextWidth(t) - 2; // Поменяли расчет для выравнивания вправо
    Canvas.TextOut(l, Rect.Top, t);
  end;
end;

В этом коде я изменил l := Rect.Right - Canvas.TextWidth(t) - 1 на l := Rect.Right - Canvas.TextWidth(t) - 2. Это изменение обеспечивает выравнивание текста вправо, отняв дополнительный пиксель от расчетной координаты x.

Кроме того, можно также установить выравнивание элементов списка в объектном инспекторе. Правый клик на списке, выберите "Свойства", а затем нажмите на свойство "Элементы". В раскрывающемся меню выберите "Вправо" как опцию выравнивания. Это автоматически выровняет все элементы вправо без необходимости модифицировать код.

Также стоит отметить, что после изменения положения текста в процедуре draw item нужно вызвать метод Control.DrawItem:

procedure TForm1.Button1Click(Sender: TObject);
begin
  ListBox1.Items.Add(Edit1.Text);
  ListBox1.Invalidate; // Вызов Control.DrawItem после добавления элементов
end;

Это обеспечивает обновление и перерисовку списка с новым добавленным элементом.

В статье описывается способ выравнивания текста в TListBox вправо с помощью OwnerDrawFixed и процедуры DrawItem.


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

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




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


:: Главная :: Списки ::


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-10-08 19:13:51/0.0037460327148438/0