Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Выпадающий список как в тотал командере


Автор: Sed0Y 21.2.2011, 16:53
Как сделать такой список?

То есть что бы разделялось вертикальной полосой, и вроде бы как в списке только буквы, а когда раскрывается то и подтягивается расшифровка?

user posted image

Автор: MetalFan 21.2.2011, 18:07
самому нарисовать. + CB_SETDROPPEDWIDTH

Автор: Sed0Y 22.2.2011, 15:43
Большое спасибо!

Автор: Sed0Y 24.2.2011, 17:46
Нарисовал я, когда раскрываю список, он весь белый пока я не наведу на него курсор, и только тогда, под курсором появляется текст.
Почему такое происходит, что нужно сделать?

у Комбобокса style = csOwnerDrawVariable


user posted image


сделал я так:
Код


procedure TFMainForm.CategoryBox1DrawItem(Control: TWinControl;
  Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
  s1: String;
begin
  if CategoryBox.ItemIndex < 0 then exit;
{тут идет SQL запрос на получение текста типа}
  s1 := 'SELECT name FROM category WHERE fid=' + IntToStr(CategoryBox.Items.Objects[CategoryBox.ItemIndex]);

  CategoryBox.Canvas.FillRect( Rect );
  CategoryBox.Canvas.TextOut( Rect.Left + 2, Rect.Top, s1 + '      ' + CategoryBox.Items[Index]); 
end;

procedure TFMainForm.CategoryBox1DropDown(Sender: TObject);
const
  PIXEL_WIDTH = 200;
begin
  SendMessage( CategoryBox.Handle, CB_SETDROPPEDWIDTH, PIXEL_WIDTH, 0 );
end;



Спасибо разобрался, проблема в IntToStr(CategoryBox.Items.Objects[CategoryBox.ItemIndex]); когда Индекс Баунд -1 то тут и происходит сбой, пришлось искать по тексту а не по ИД

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)