uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls { вам нужно это для ListBox } ;
type TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormResize(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
listbox: TListBox;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
listbox := TListBox.Create(self);
listbox.Parent := self;
listbox.Top := 0;
listbox.Left := 0;
listbox.Width := self.Width div 2;
listbox.Height := self.Height div 2;
listbox.items.add('тест 1');
listbox.items.add('тест 2');
{
и т.д, и т.п. … }
end;
procedure TForm1.FormResize(Sender: TObject);
begin
listbox.Width := self.Width div 2 ;
listbox.Height := self.Height div 2 ;
end;
end.
Двойной ListBox
Я расположил на форме два компонента Listbox, и с помощью следующего кода заполнил один из них данными из таблицы:
tableName.Refresh; {в вашем случае это может и не понадобится}
tableName.First; {Убедимся, что мы смотрим первую запись}
while not tableName.Eof do {проходим в цикле таблицу}
begin
listbox1.items.add(tableName.FieldByName('USRID').AsString); {добавляем элемент в listbox1}
tableName.Next; {переходим к следующей записи}
end;
ниже я привел процедуру из моего рабочего кода, в котором я использую эту технологию. Я передаю ей в качестве параметров имя таблицы и имена компонентов listbox1 и listbox2. Я пользуюсь этой процедурой, поскольку у меня есть
Как перемещать данные между этими двумя списками? Если вы хотите использовать технологию «drag and drop» (перетащи и брось), то в обработчике mousedown вашей исходной таблицы воспользуйтесь процедурой begindrag:
if Button = mbLeft then Tlistbox(sender).BeginDrag(false);
Затем, в вашем другом ListBox, для «опознания» и получения данных создайте следующий обработчик DragOver:
if Source = ListBox1 then Accept := true
else Accept := false;
Не используйте «Accept := (Source is TListbox)», как это показано в большинстве примеров. У вас имеется два компонента ListBox, следовательно, вам нужно сослаться на имя объекта, а не на его тип, а иначе программа просто не поймет кто есть кто.
Затем в обработчике dragDrop поместите следующий код, добавляющий данные в ListBox2 и удаляющий их из ListBox1.
И, наконец, добавьте кнопку «Сохранить», если вы хотите сохранить содержимое ListBox2 в базе данных.
Я надеюсь, что это именно то, что вы искали, и что это окажется вам полезным. Если вы хотите также перемещать данные из ListBox2 в ListBox1, вам необходимо будет создать тот же код, но реверсировать его для получения в коде правильных ссылок на компоненты ListBox.
ListBox — OnChange
Delphi 1
Это было два месяца тому назад. Я нашел это на одном из Delphi-сайтов. Не очень сложно и понятно.