![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ListBox-ы и Edit-ы [D3, Win2k]
Ольга © (2002-01-18 12:39:00)У меня есть 3 листбокса и 3 едита, мне нужно, чтобы при клике на строке одного из листбоксов, выделялись строки с тем же номером в остальных листбоксах и значения этих строк копировались в едиты, я написала, но что-то глючит, помогите пожалуйста...
ListBox2.ItemIndex:=ListBox1.ItemIndex;
ListBox3.ItemIndex:=ListBox1.ItemIndex;
if ListBox3.ItemIndex < 0 then edit1.text := ""
else edit1.text := ListBox3.Items[ListBox3.ItemIndex];
if ListBox1.ItemIndex < 0 then edit2.text := ""
else edit2.text := ListBox1.Items[ListBox1.ItemIndex];
if ListBox2.ItemIndex < 0 then edit3.text := ""
else edit3.text := ListBox2.Items[ListBox2.ItemIndex];
Ольга (2002-01-21 16:00:00) [1]В принципе, подставила Edit2Change - заработало...
Ольга (2002-01-21 15:48:00) [2]А как мне обратно ONChange подключить или его заново надо писать?
>yaJohn
У меня база данных паролей организации (ну так еще все в разработках), 1 ЛистБокс - отдел, 2 Листбокс - сотрудник, 3 ЛистБокс - пароль, который генерируется и сохраняется, для быстрого поиска на Едитах происходит фильтрация, она осуществляется при изменении Значения Едита, но если мне надо выбрать строку для удаления (для помещения ее в Едиты) происходит преждевременная фильтрация, я ее сделала в nil и она больше не работает, надо заново прописывать?
yaJohn (2002-01-21 15:37:00) [3]>Вообщем, мне надо сначала как-то отключить OnChange, а потом включить, только как?
Net-net, ne nado.
Voobsheto (bez obid) sleduet narisovat na liste bumagi vsu posledovatelnost proishodiashih sobitiy i horosho predstavit" sebe, chto vsled za chem doljno proishodit".
Ольга (2002-01-21 15:34:00) [4]Ребята!!!!
Круто!!!
Все получилось!!!!
ОГРОМНОЕ СПАСИБО!!!
yaJohn (2002-01-21 15:31:00) [5]>Ну да, после изменения Edit -а, ланные подстанавливаются в Edit-ы, их значение меняется,
Etogo ya ne ponial...
U menia poluchilos tak:
procedure TForm1.ListBox1Click(Sender: TObject);
begin
ListBox1.ItemIndex:=TListBox(Sender).ItemIndex;
ListBox2.ItemIndex:=TListBox(Sender).ItemIndex;
ListBox3.ItemIndex:=TListBox(Sender).ItemIndex;
end;
ListBox1Click stoit OnClic u vsehListBox_ov. Eto sinhronizacia.
DblClick u kajdogo LisBox_a svoy:
procedure TForm1.ListBox1DblClick(Sender: TObject);
var n:integer;
begin
edit2.text:=listbox1.items[listbox1.ItemIndex];
end;
procedure TForm1.ListBox2DblClick(Sender: TObject);
begin
edit3.text:=listbox2.items[listbox2.ItemIndex];
end;
procedure TForm1.ListBox3DblClick(Sender: TObject);
begin
edit1.text:=listbox3.items[listbox3.ItemIndex];
end;
Eto zapolnenie Edit_ov. Pri etom vajno, chto kajdiy ListBox meniaet tolko svoyEdit.
OnCange vseh Edit_ov sleduet, vidimo, dobavit" v konce:
listBox1.ItemIndex:=-1;
listBox2.ItemIndex:=-1;
listBox3.ItemIndex:=-1;
U Edit1 ya ne obnarujil OnChange. Tak nado?
Alx2 (2002-01-21 15:30:00) [6]OnChange := Nil ?
Ольга (2002-01-21 15:27:00) [7]Вообщем, мне надо сначала как-то отключить OnChange, а потом включить, только как?
Ольга (2002-01-21 15:19:00) [8]Ну да, после изменения Edit -а, ланные подстанавливаются в Edit-ы, их значение меняется, и происходит событие EditOnChange
yaJohn (2002-01-21 15:16:00) [9]>Сначала должны данные передаться в Edit -ы, а потом происходить фильтрация...
Eto poniatno. Sobstvenno tak i poluchaetsia. No потом, eto kogda??? Neposredstvenno posle izmenenia Edit_a?
T.e. kogda user delaet DblClick po itemu v ListBox proishodit avtomaticheskaya filtracia soderjimogo ListBox_ov no dlia kajdogo ListBox_a filtracia idet po sobstvennomu polu tablici. Analogichno pri nabore v Edit_e "ruchkami".
Ya pravilno ponial?
Ольга (2002-01-21 15:08:00) [10]Сначала должны данные передаться в Edit -ы, а потом происходить фильтрация...
yaJohn (2002-01-21 15:03:00) [11]Tak.
Po OnClick vse rabotaet. ListBox_bI perekluchautsia sinhronno.
Po DblClick dannie iz ListBox_ov idut v Edit_bI. I vot tut...
procedure TForm1.ListBox1DblClick(Sender: TObject);
var n:integer;
begin
n:=tlistbox(sender).itemindex;
if n>=0 then begin
if sender=listbox1 then begin
listbox2.itemindex:=n;
listbox3.itemindex:=n;
end;
if sender=listbox2 then begin
listbox1.itemindex:=n;
listbox3.itemindex:=n;
end;
if sender=listbox3 then begin
listbox1.itemindex:=n;
listbox2.itemindex:=n;
end;
// Do etogo mesta mojno vse vikinut", poskolku sinhronnoe perekluchenie ListBox_ov uje otrabotano v OnClick
edit1.text:=listbox1.items[n];
// A vot tut avtomaticheski vizivaetsia Edit1.OnCange!!! A v nem u tebia peregrujaetsia ListBox. Pri etom ListBox.Items.Count mojet okazatsia menshe chem [n]....
edit2.text:=listbox2.items[n];
edit3.text:=listbox3.items[n];
end;
Sformuliruy polnost"u i tochno, kogda znachenia iz ListBox_ov doljni popadat v edit_bI, kogda doljna srabativat filtracia po znacheniu Edit_ov.
Ольга (2002-01-21 14:45:00) [12]У меня данные берутся из таблицы, при загрузке проги
MBo (2002-01-21 14:26:00) [13]каким образом глючит?
попробуй сделать с нуля, 3 чистых бокса, 3 Edit
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
for i:=0 to 9 do begin
listbox1.items.add("a"+inttostr(i));
listbox2.items.add("b"+inttostr(i));
listbox3.items.add("c"+inttostr(i));
end;
end;
yaJohn (2002-01-21 14:22:00) [14]Upakuy tvoy proekt v zip (rar,arj) i vishli na milo.
Ольга (2002-01-21 14:17:00) [15]Блин!
Сделала как MBo сказал, в конце 2 едита работают, а третий глючит
MBo (2002-01-21 13:54:00) [16]при условии, что уоличество строк одинаково, и onclick у всех один
procedure TForm1.ListBox1Click(Sender: TObject);
var n:integer;
begin
n:=tlistbox(sender).itemindex;
if n>=0 then begin
if sender=listbox1 then begin
listbox2.itemindex:=n;
listbox3.itemindex:=n;
end;
if sender=listbox2 then begin
listbox1.itemindex:=n;
listbox3.itemindex:=n;
end;
if sender=listbox3 then begin
listbox1.itemindex:=n;
listbox2.itemindex:=n;
end;
edit1.text:=listbox1.items[n];
edit2.text:=listbox2.items[n];
edit3.text:=listbox3.items[n];
end;
end;
yaJohn (2002-01-21 13:46:00) [17]U menia rabotaet 8(
OnCreate otrabativaet???
Poprobuy v novom proekte.
Ольга (2002-01-21 13:33:00) [18]> yaJohn
Да на всех...
yaJohn (2002-01-21 13:22:00) [19]>Попробовала, как ты написал, все время ставит на первую запись
U vseh ListBox OnClick=ListBox1Click???
Ольга (2002-01-21 12:26:00) [20]> yaJohn
Попробовала, как ты написал, все время ставит на первую запись