![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
![]()  | 
	
	
| 
		 | 
	Опции темы | Поиск в этой теме | Опции просмотра | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Ребята, подскажите плиз-з-з-з  
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	  Имеется 2 TDBLookUpComboBox. В одном из них содержится список отделов, а в другом - список сотрудников этих отделов. ??? Можло ли реализовать прогу так, чтобы при выборе определённого отдела - во втором LookUpComboBox оставались только сотрудники ИМЕННО ЭТОГО отдела. А остальные скрывалить ??? И как это сделать?  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Попробуй хранить имена сотрудников в TStringList, а его первый элемент - название отдела. В событие OnChange ищи этот StringList по его первому элементу и остальные уже загружай в ComboBox. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 А если понадобится изменить список - придётся перекомпилить прогу !!! 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	Мне говорили - можно как-то с помощю индексирования. Но как ???  | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 В TStringList есть такие методы, как Add, Insert, Delete, и тому подобные. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#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.Последний раз редактировалось The Shadow, 09.10.2007 в 11:24.  | 
| 
		 
			 
			#7  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 ОК. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	Попробую. Но это не то, что мне бы хотелось сделать !  | 
| 
		 
			 
			#8  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Я понял. Только, как я уже и говорил, с TDBLookUpComboBox'ами я не работал. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#9  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Цитата: 
	
 Обрабатывай событие AfterScrool 1-го датасэта и по нему делай выборку во втором. Код: 
	DataSet1.SQL.Text := 'SELECT * FROM departments';
DataSet2.SQL.Text := 'SELECT * FROM employes WHERE department = :department';
...
procedure DataSet1AfterScrool(DataSet : TDataSet);
begin
 DataSet2.ParamByName('department').AsInteger := 
  DataSet2.FieldByName('id').AsInteger;
end; | 
| 
		 
			 
			#10  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 ОЧЕНЬ даже неплохой вариант! 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	Обязательно попробую ...  | 
| 
		 
			 
			#11  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 ОЧЕНЬ даже неплохой вариант! 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	Обязательно попробую ... Спасибо !!!  | 
| 
		 
			 
			#12  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Имеется DBGrid и Форма которая эту же DBGrid заполняет (редактирование DBGrid запрещено) на разных формах. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	Можно ли взять с DBGrid данные одного какого-то поля и передать на редактирование в заполняющую Форму. И как это сделать ?????? Помогите плиз! ![]()  | 
| 
		 
			 
			#13  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Код: 
	Form2.Edit1.Text:=Form1.DBGrid1.DataSource.DataSet.FieldByName('SomeName').AsString; | 
| 
		 
			 
			#14  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Цитата: 
	
 Немножко не то! Ти передаёшь только одно значение в поле Edit, а у меня этих полей около 15. И мне нужно чтобы они мне открылись по одному полю. Пример: Есть список анкет сотрудников (DBGrid) - мне нужно выбрать одного сотрудника и по нажатии кнопки РЕДАКТИРОВАТЬ данная анкета должна открыться в другой форме для редактирования (но не в DBGrid).  | 
| 
		 
			 
			#15  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Цитата: 
	
 Ну ты на второй форми располагай DBEdit'ы и превежи их к нужным полям. Вот, только не забудь в uses форму на кторой распалагается источник данных  |