ListBox, CheckListBox, DBLookUp, Другие списки
Автор: Bjarne Winkler
Пример показывает как можно сохранять в файл содержимое TCheckListBox и соответственно восстанавливать из файла ранее сохранённые состояния Чекбоксов.
На самом деле всё просто. Метод SaveToFile просто напросто сохраняет в обычном текстовом виде значения чекбоксов. Но предварительно нам нужно преобразовать состояния чекбоксов в текстовый вид, соответственно "1" или "0".
Далее задача метода LoadFromFile считать эти значения и преобразовать сначало в числовой вид, а затем в логический (true или false).
- Подробности
- Родительская категория: VCL
- Категория: ListBox, CheckListBox, DBLookUp, Другие списки
Я видел приложение, в котором ListBox позволял осуществлять инкрементальный поиск. При вводе очередного символа он позиционирует вас к первой ячейке, начало значения которой совпадает с введенным пользователем текстом, или выделяет все строки с текстом, содержащим введенный текст.
Как это осуществить на Delphi?
- Подробности
- Родительская категория: VCL
- Категория: ListBox, CheckListBox, DBLookUp, Другие списки
Класс TListbox содержит свойство TabWith:
Code: |
ListBox1.TabWith := 50; ListBox1.Items.Add('Column1'^I'Column2'); // ^I это символ Tab |
- Подробности
- Родительская категория: VCL
- Категория: ListBox, CheckListBox, DBLookUp, Другие списки
Code: |
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); begin With ListBox1 do begin If odSelected in State then Canvas.Brush.Color:=clTeal { твой цвет } else Canvas.Brush.Color:=clWindow; Canvas.FillRect(Rect); Canvas.TextOut(Rect.Left+2,Rect.Top,Items[Index]); end; end; |
Hе забудьте установить свойство Style у своего ListBox в lbOwnerDrawFixed или в
lbOwnerDrawVariable.
- Подробности
- Родительская категория: VCL
- Категория: ListBox, CheckListBox, DBLookUp, Другие списки
После того, как поместите TListBox на форму, необходимо изменить свойство Style в TListBox на lbOwnerDrawFixed. Если не изменить свойство Style, то событие OnDrawItem никогда не вызовется. Теперь поместите следующий код в обработчик события OnDrawItem Вашего TListBox:
- Подробности
- Родительская категория: VCL
- Категория: ListBox, CheckListBox, DBLookUp, Другие списки
Для этого необходимо установить в инспекторе объектов поле Style в lbOwnerDrawFixed, при фиксированной высоте строки, или в lbOwnerDrawVariable, при переменной, и установить собственный обработчик события для OnDrawItem. В этом обработчике и надо рисовать растровое изображение.
Пример:
Рисуются изображения размером 32*16 (размер стандартного глифа для Delphi). Очень полезно при поиске нужного изображения для кнопок!
Установить в инспекторе объектов для ListBox поле ItemHeight = 19, а поле Color = clBtnFace.
- Подробности
- Родительская категория: VCL
- Категория: ListBox, CheckListBox, DBLookUp, Другие списки
Очень просто, смотри пример....
считаем, сто есть поле Edit1, в котором набираем текст, и ListBox, в котором ищем нужную строку, (как в Нelp).
Code: |
procedure TForm1.Edit1Change(Sender: TObject); begin ListBox1.Perform(LB_SELECTSTRING,-1,longint(Pchar(Edit1.text))); end; |
- Подробности
- Родительская категория: VCL
- Категория: ListBox, CheckListBox, DBLookUp, Другие списки
Очень удобно выбирать шрифты, когда в списке каждый шрифт написан собой. Например, "Arial" будет написано шрифтом Arial, а "Times" - Times. Список шрифтов лежит в свойстве Fonts объекта Screen.
- Подробности
- Родительская категория: VCL
- Категория: ListBox, CheckListBox, DBLookUp, Другие списки
После того, как поместите TListBox на форму, необходимо изменить свойство Style в TListBox на lbOwnerDrawFixed. Если не изменить свойство Style, то событие OnDrawItem никогда не вызовется. Теперь поместите следующий код в обработчик события OnDrawItem Вашего TListBox:
- Подробности
- Родительская категория: VCL
- Категория: ListBox, CheckListBox, DBLookUp, Другие списки
В Delphi компонент TListBox автоматически включает в себя вертикальный scrollbar. Полоска прокрутки появляется в том случае, если все элементы списка не помещаются в видимую область списка. Однако, list box не показывает горизонтального скролбара, когда ширина элементов превышает ширину списка. Конечно же существует способ добавить горизонтальную полосу прокрутки.
- Подробности
- Родительская категория: VCL
- Категория: ListBox, CheckListBox, DBLookUp, Другие списки
Вот пример с TListbox на форме:
Code: |
type TForm1 = class(TForm) ListBox1: TListBox; procedure FormCreate(Sender: TObject); protected procedure WMDROPFILES (var Msg: TMessage); message WM_DROPFILES; private public end;
var Form1: TForm1;
implementation uses shellapi;
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject); begin DragAcceptFiles(Form1.Handle, true); end;
procedure TForm1.WMDROPFILES (var Msg: TMessage); var i, amount, size: integer; Filename: PChar; begin inherited; Amount := DragQueryFile(Msg.WParam, $FFFFFFFF, Filename, 255); for i := 0 to (Amount - 1) do begin size := DragQueryFile(Msg.WParam, i , nil, 0) + 1; Filename:= StrAlloc(size); DragQueryFile(Msg.WParam,i , Filename, size); listbox1.items.add(StrPas(Filename)); StrDispose(Filename); end; DragFinish(Msg.WParam); end; |
- Подробности
- Родительская категория: VCL
- Категория: ListBox, CheckListBox, DBLookUp, Другие списки
Страница 1 из 3