|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
Помогите с выборкой ...
Ребята, подскажите плиз-з-з-з
Имеется 2 TDBLookUpComboBox. В одном из них содержится список отделов, а в другом - список сотрудников этих отделов. ??? Можло ли реализовать прогу так, чтобы при выборе определённого отдела - во втором LookUpComboBox оставались только сотрудники ИМЕННО ЭТОГО отдела. А остальные скрывалить ??? И как это сделать? Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#2
|
||||
|
||||
Попробуй хранить имена сотрудников в TStringList, а его первый элемент - название отдела. В событие OnChange ищи этот StringList по его первому элементу и остальные уже загружай в ComboBox.
Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. |
#3
|
||||
|
||||
А если понадобится изменить список - придётся перекомпилить прогу !!!
Мне говорили - можно как-то с помощю индексирования. Но как ??? Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#4
|
||||
|
||||
В TStringList есть такие методы, как Add, Insert, Delete, и тому подобные.
Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. |
#5
|
||||
|
||||
Насколько я помню (т.к. сам я этим компонентом не пользуюсь) TDBLookUpComboBox настраивается на конкретное поле датасета. Первый у тебя настроен на поле содержащее имена (наименования) отделов. Значит после выбора отдела, формируй запрос к таблице сотрудников с условием отфильтровки только тех кто в данном (выбранном) отделе работает и на поле с фамилией сформированного датасета настраивай второй TDBLookUpComboBox.
|
#6
|
||||
|
||||
Я с этим компонентом не работал. Поэтому я и предложил такой вариант. Если он подходит, то вот код:
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) ListBox1: TListBox; ListBox2: TListBox; procedure FormCreate(Sender: TObject); procedure ListBox1Click(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); private public end; var Form1: TForm1; All: array of TStringList; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var i: Integer; begin SetLength(All, 3); All[0]:=TStringList.Create; All[0].Add('I отдел'); All[0].Add('I сотрудник I отдела'); All[0].Add('II сотрудник I отдела'); All[1]:=TStringList.Create; All[1].Add('II отдел'); All[1].Add('II сотрудник II отдела'); All[2]:=TStringList.Create; All[2].Add('III отдел'); All[2].Add('I сотрудник III отдела'); All[2].Add('II сотрудник III отдела'); All[2].Add('III сотрудник III отдела'); for i:=0 to Length(All) - 1 do ListBox1.Items.Add(All[i].Strings[0]); end; procedure TForm1.ListBox1Click(Sender: TObject); var i: Integer; begin if ListBox1.ItemIndex = -1 then Exit; ListBox2.Items.Clear; for i:=1 to All[ListBox1.ItemIndex].Count - 1 do ListBox2.Items.Add(All[ListBox1.ItemIndex].Strings[i]) end; procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); var i: Integer; begin for i:=0 to Length(All) - 1 do All[i].Destroy; All:=nil; end; end. Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. Последний раз редактировалось The Shadow, 09.10.2007 в 11:24. |