Форум: "Основная";
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];
ВнизListBox-ы и Edit-ы Найти похожие ветки
← →
Ольга (2002-01-18 12:39) [0]У меня есть 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];
← →
Serghei (2002-01-18 13:01) [1]Да нет не глючит - только что попробовал - все нормально!
По мне разве что порядок присваивания запутан
LB3->Ed1
LB1->Ed2
LB2->Ed3
← →
yaJohn (2002-01-18 13:05) [2]1. Gde stoit etot kod? V obrabotke kakogo sobitia?
2. Esli ListBox1.ItemIndex==ListBox2.ItemIndex==ListBox3.ItemIndex, to zachem tri proverki?
3. Chto gluchit? Kak gluchit?
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
ListBox1: TListBox;
ListBox2: TListBox;
ListBox3: TListBox;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
procedure FormCreate(Sender: TObject);
procedure ListBox1Click(Sender: TObject);
private
procedure SetItemIndex(Sender,ListBox:TListBox);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox1.Tag:=integer(Edit1);
ListBox2.Tag:=integer(Edit2);
ListBox3.Tag:=integer(Edit3);
end;
procedure TForm1.SetItemIndex(Sender,ListBox:TListBox);
begin
if (Sender<>ListBox)and
(ListBox.Items.Count>Sender.ItemIndex)
then ListBox.ItemIndex:=Sender.ItemIndex;
TEdit(ListBox.Tag).Text:=
ListBox.Items[ListBox.ItemIndex];
end;
procedure TForm1.ListBox1Click(Sender: TObject);
begin
if TListBox(Sender).ItemIndex<0 then exit;
SetItemIndex(@Sender,ListBox1);
SetItemIndex(@Sender,ListBox2);
SetItemIndex(@Sender,ListBox3);
end;
end.
Dlia vseh ListBox - OnClick=ListBox1Click
← →
yaJohn (2002-01-18 13:08) [3]Mn...
A zachem hash?
Ne proshe li prosto ID iz globalnoy sohroniaemoy peremennoy s avtoinkrementom?
Krome togo vozmojen sluchay, kogda dannie v raznih uzlah dereva sovpadaut. Hash vernet ravnie ID...
← →
Ольга (2002-01-18 13:10) [4]В нумерации ничего не напутано - все правильно.
Просто у меня при клике на 1 лист - данные копируются только во 2 и 3 едиты, при клике на 2 лист, данные копируются в 1 и 3 едиты и в 3 листбоксе такая же фигня. Я ничего не понимаю - два дня уже сижу... Помогите...
← →
yaJohn (2002-01-18 13:12) [5]Opppssss.... MODERATOR, udalite plizs predidushee soobshenie, na chet HASH, eto iz drugOY vetki :(((((
← →
Andrey (2002-01-18 13:13) [6]> Ольга
Мыло посмотри.
← →
Serghei (2002-01-18 13:16) [7]Не знаю!
У меня получается так:
LB1 LB2 LB3
1 as q
<2> <zx> <w>
3 cv e
4 fg r
5 hj t
Ed1 Ed2 Ed2
w 2 zx
то есть;
LB3->Ed1
LB1->Ed2
LB2->Ed3
← →
Ольга (2002-01-18 13:24) [8]> Andrey
Спасибо
А в каком Delphi он у тебя написан, а то он мне ошибку выдает:
Invalid Stream Format
← →
Ольга (2002-01-18 13:27) [9]> Serghei
У меня они вот как распологаются
Edit2 Edit3 Edit1
LB1 LB2 LB3
LB3->Ed1
LB1->Ed2
LB2->Ed3, все правильно, и в проге все передается правильно, но вот такой глюк...
← →
Andrey (2002-01-18 13:31) [10]> Ольга
D5
Опять мыло посмотри.
← →
Ольга (2002-01-18 13:38) [11]>Andrey
Он мне вот что пишет:
Error reading Form1.OldCreateOrder^ Property does not exist/ Ignore the error and continue? и так далее
← →
Ольга (2002-01-18 13:40) [12]>Andrey
В принципе работает, но у меня все так же, просто 3 едита и тот по которому кликать - не передает значение, а если еще раз кликнуть то передает со второго раза
← →
Andrey (2002-01-18 13:45) [13]> Ольга
Чтоб с первого раза есть событие OnClick
Чтоб со второго OnDblClick
← →
Ольга (2002-01-18 13:50) [14]>Andrey
У меня с OnClick - строка выделяется
а с OnDBClick - данные переносятся
и переносятся во все едиты после двойного DBClick
← →
Ольга (2002-01-18 13:54) [15]
edit1.text := ListBox3.Items[Listbox1.ItemIndex];
edit2.text := ListBox1.Items[Listbox1.ItemIndex];
{edit3.text := ListBox2.Items[Listbox1.ItemIndex];}
ListBox2.ItemIndex:=ListBox1.ItemIndex;
ListBox3.ItemIndex:=ListBox1.ItemIndex;
Вот так работает, а вот так не работает и пишет ошибку listbox out of bounds
edit1.text := ListBox3.Items[Listbox1.ItemIndex];
edit2.text := ListBox1.Items[Listbox1.ItemIndex];
edit3.text := ListBox2.Items[Listbox1.ItemIndex];
ListBox2.ItemIndex:=ListBox1.ItemIndex;
ListBox3.ItemIndex:=ListBox1.ItemIndex;
← →
Serghei (2002-01-18 14:19) [16]2 Ольга
А ты попробуй сделать проверку на совпадение количества строк в листбоксахб если они разные.
← →
Serghei (2002-01-18 14:22) [17]2 Ольга
У себя заметил недоработку - может мается и у тебя - когда первый раз кликаю по ЛистБокс1 на первую строку, в едитах появляются нужные значения а вот остальные ЛистБоксы не селектятся! Если начинаю со 2, 3 ... строки усе в порядке!
← →
yaJohn (2002-01-18 14:26) [18]Poprobuyte moy kod, rabotaet use, proverenno.... Sm vishe.
← →
Serghei (2002-01-18 14:28) [19]2 Ольга
Посмотри на мыло - послал свой проект (сделан в Д4)
← →
Serghei (2002-01-18 14:33) [20]2 yaJohn
I u menia rabotaiet normalino - ne znaiu pocemu takie trabli!
← →
Ольга (2002-01-21 12:26) [21]> yaJohn
Попробовала, как ты написал, все время ставит на первую запись
← →
yaJohn (2002-01-21 13:22) [22]>Попробовала, как ты написал, все время ставит на первую запись
U vseh ListBox OnClick=ListBox1Click???
← →
Ольга (2002-01-21 13:33) [23]> yaJohn
Да на всех...
← →
yaJohn (2002-01-21 13:46) [24]U menia rabotaet 8(
OnCreate otrabativaet???
Poprobuy v novom proekte.
← →
MBo (2002-01-21 13:54) [25]при условии, что уоличество строк одинаково, и 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;
← →
Ольга (2002-01-21 14:17) [26]Блин!
Сделала как MBo сказал, в конце 2 едита работают, а третий глючит
← →
yaJohn (2002-01-21 14:22) [27]Upakuy tvoy proekt v zip (rar,arj) i vishli na milo.
← →
MBo (2002-01-21 14:26) [28]каким образом глючит?
попробуй сделать с нуля, 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;
← →
Ольга (2002-01-21 14:45) [29]У меня данные берутся из таблицы, при загрузке проги
← →
yaJohn (2002-01-21 15:03) [30]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 15:08) [31]Сначала должны данные передаться в Edit -ы, а потом происходить фильтрация...
← →
yaJohn (2002-01-21 15:16) [32]>Сначала должны данные передаться в 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:19) [33]Ну да, после изменения Edit -а, ланные подстанавливаются в Edit-ы, их значение меняется, и происходит событие EditOnChange
← →
Ольга (2002-01-21 15:27) [34]Вообщем, мне надо сначала как-то отключить OnChange, а потом включить, только как?
← →
Alx2 (2002-01-21 15:30) [35]OnChange := Nil ?
← →
yaJohn (2002-01-21 15:31) [36]>Ну да, после изменения 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 vseh ListBox_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 svoy Edit.
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?
← →
Ольга (2002-01-21 15:34) [37]Ребята!!!!
Круто!!!
Все получилось!!!!
ОГРОМНОЕ СПАСИБО!!!
← →
yaJohn (2002-01-21 15:37) [38]>Вообщем, мне надо сначала как-то отключить 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:48) [39]А как мне обратно ONChange подключить или его заново надо писать?
>yaJohn
У меня база данных паролей организации (ну так еще все в разработках), 1 ЛистБокс - отдел, 2 Листбокс - сотрудник, 3 ЛистБокс - пароль, который генерируется и сохраняется, для быстрого поиска на Едитах происходит фильтрация, она осуществляется при изменении Значения Едита, но если мне надо выбрать строку для удаления (для помещения ее в Едиты) происходит преждевременная фильтрация, я ее сделала в nil и она больше не работает, надо заново прописывать?
← →
Ольга (2002-01-21 16:00) [40]В принципе, подставила Edit2Change - заработало...
Страницы: 1 2 вся ветка
Форум: "Основная";
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.005 c