FAQ VCL
Компоненты\ListBox

:: Меню ::
:: На главную ::
:: FAQ ::
:: Заметки ::
:: Практика ::
:: Win API ::
:: Проекты ::
:: Скачать ::
:: Секреты ::
:: Ссылки ::

:: Сервис ::
:: Написать ::

:: MVP ::

:: RSS ::

Яндекс.Метрика

Как удалить все выделенные элементы списка TListBox?

procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
   for i := ListBox1.Items.Count-1 downto 0 do
      if ListBox1.Selected[i] then
         ListBox1.Items.Delete( i );
end;


Как выровнять текст в TListBox по правому краю?

// ListBox1.Style = lbOwnerDrawFixed или lbOwnerDrawVariable

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;


Как отобразить элементы TListBox в несколько колонок?

procedure TForm1.FormCreate(Sender: TObject);
begin
   // Свойство TabWidth определяет ширину столбцов в пикселах
   ListBox1.TabWidth := 40;
   // Добавляя пункты в список, разделяйте столбцы символами '^I', подобно этому:
   ListBox1.Items.Add( 'Первый'^I'Второй'^I'Третий' );
   ListBox1.Items.Add( 'C1R1'^I'C2R1'^I'C3R1' );
   ListBox1.Items.Add( 'C1R2'^I'C2R2'^I'C3R2' );
   ListBox1.Items.Add( 'C1R3'^I'C2R3'^I'C3R3' );
   ListBox1.Items.Add( 'C1R4'^I'C2R4'^I'C3R4' );
   ListBox1.Items.Add( 'C1R5'^I'C2R5'^I'C3R5' );
   ListBox1.Items.Add( 'C1R6'^I'C2R6'^I'C3R6' );
   ListBox1.Items.Add( 'C1R7'^I'C2R7'^I'C3R7' );
   ListBox1.Items.Add( 'C1R8'^I'C2R8'^I'C3R8' );
   ListBox1.Items.Add( 'C1R9'^I'C2R9'^I'C3R9' );
end;


Как использовать RadioButton в TListBox?

procedure TForm1.FormCreate(Sender: TObject);
begin
   ListBox1.Style := lbOwnerDrawVariable;
   ListBox1.ItemHeight := 20;

   ListBox1.Items.Add( 'Item 1' );
   ListBox1.Items.Add( 'Item 2' );
   ListBox1.Items.Add( 'Item 3' );
end;

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
var
  DrawRect: TRect;
begin
   with ListBox1.Canvas do
   begin
      FillRect( Rect );

      DrawRect.Left := Rect.Left + 1;
      DrawRect.Right := Rect.Left + 13;
      DrawRect.Bottom := Rect.Bottom;
      DrawRect.Top := Rect.Top;

      if odSelected in State then
         DrawFrameControl( Handle, DrawRect, DFC_BUTTON, DFCS_BUTTONRADIO or DFCS_CHECKED )
      else
         DrawFrameControl( Handle, DrawRect, DFC_BUTTON, DFCS_BUTTONRADIO );

      TextOut( 15, Rect.Top + 3, ListBox1.Items[Index] );
   end;
end;


Как синхронизировать скроллинг двух TListbox'ов?

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   SendMessage(ListBox2.Handle, LB_SETTOPINDEX,
      SendMessage(ListBox1.Handle, LB_GETTOPINDEX, 0, 0), 0);
end;


Как измененить величину табуляции в TListBox?

{Установка одной величины табуляции}
procedure TForm1.Button1Click(Sender: TObject);
begin
   ListBox1.Items.Add('1'^I'Иванов'^I'Иван');
   ListBox1.Items.Add('2'#9'Терещенко'#9'Илья');
   ListBox1.TabWidth := 10;
end;

{Установка одной величины табуляции}
procedure TForm1.Button2Click(Sender: TObject);
const
  TabInc: Longint = 45;
begin
   ListBox1.TabWidth := 1;
   // Свойство TabWidth должно иметь ненулевое значение, только в
   // этом случае ListBox будет готов принять это сообщение. 
   SendMessage(ListBox1.Handle, LB_SETTABSTOPS, 1, LongInt(@TabInc));
   ListBox1.Items.Add('1'^I'Иванов'^I'Иван');
   ListBox1.Items.Add('2'#9'Терещенко'#9'Илья');
end;

{Установка двух величин табуляции}
procedure TForm1.Button3Click(Sender: TObject);
const
  iStops: array[1..2] of Integer = (15, 60);
begin
   ListBox1.TabWidth := 1;
   // Свойство TabWidth должно иметь ненулевое значение, только в
   // этом случае ListBox будет готов принять это сообщение. 
   SendMessage(ListBox1.Handle, LB_SETTABSTOPS, Length(iStops), LongInt(@iStops));
   ListBox1.Items.Add('1'^I'Иванов'^I'Иван');
   ListBox1.Items.Add('2'#9'Терещенко'#9'Илья');
end;

При использовании материала - ссылка на сайт обязательна