Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ListBox-ы и Edit-ы [D3, Win2k]


Страницы:   1 2

Ольга ©   (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
Попробовала, как ты написал, все время ставит на первую запись


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо