maxfad
Пользователи-
Постов
9 -
Зарегистрирован
-
Посещение
Весь контент maxfad
-
Та да...Действительно проглядел)))) Что как отмечается, по не опытности понял по своему)))))Спасибо!!!
-
Очень интересное решение, сейчас попробую..))) Ну что тут сказать...Очень красиво. Все работает, поражает простота исполнения. Я об этом методе не знал. Спасибо большое!!!!
-
Очень интересное решение, сейчас попробую..)))
-
Item.Tag := DataSet.FieldByName('kateg').Value; DataSet в проекте не использовал....Для связи SQLite через FireDAC использую FDConnection, FDQuery, FDPhysSQLiteDriverLink. Вы предлагаете добавить компонент DataSet? Или это свойство? Простите,я с БД пока на "ВЫ"...
-
ну так вы просто Item.Tag не заполняете при выводе первого listbox. если у вас будет 2 и более одинаковых наименования, то ваш код работать не будет! ListBox1 на первой форме заполняется из таблицы с тремя полями(ID,NAM1,kateg), поле NAM1 попадает в ListBox и значения там уникальные. Чем может быть заполнен Item.Tag при заполнении ListBox1 не представляю. Поле kateg с ListBox1 не связано. Я двумя руками за то чтоб этот код упростить, но красивый код не всегда работающий код...Подскажите как можно использовать конструкций i:=Item.Tag в TForm1.FormCreate.
-
Проблема в том, что этот вариант в моем случае не работает. i := Item.Tag при нажатии возвращает 0, а во второй форме ListBox становится пустой. прикладываю скрин с откомпелированной программой под win-32. Среда DELPHI XE7. На Form1 положил Label1 чтоб видеть значение i...оно равно 0. Спасибо за внимание к моему проекту, но этот метод или не полный или не подходящий. А вот как оно в моем варианте:
-
Проблема в том, что этот вариант в моем случае не работает. i := Item.Tag при нажатии возвращает 0, а во второй форме ListBox становится пустой. прикладываю скрин с откомпелированной программой под win-32. Среда DELPHI XE7. На Form1 положил Label1 чтоб видеть значение i...оно равно 0. Спасибо за внимание к моему проекту, но этот метод или не полный или не подходящий.
-
Вопрос решил прибегнув к помощи еще одного FDQuery и ListBox1ItemClick обработал по иному procedure TForm1.ListBox1ItemClick(const Sender: TCustomListBox; const Item: TListBoxItem); var s:string; i:integer; begin s:=ListBox1.Items[ListBox1.ItemIndex]; //тут находил значение ListBox1 в переменную FDQuery2.Close; FDQuery2.SQL.Clear; FDQuery2.SQL.Add('select kateg from kategorii WHERE NAM1="'+s+'"'); // тут ее использовал FDQuery2.OpenOrExecute; i:=FDQuery2.FieldByName('kateg').AsInteger;// тут получал номер категории из того поля которое явно в ListBox не попадает Form2.Show; Form2.FDQuery2.Close; Form2.FDQuery2.SQL.Clear; Form2.FDQuery2.SQL.Add('select razdel.NAM2 from razdel WHERE razdel.kateg2='+IntToStr(i));// далее в Form2 в ListBox выводил раздел относящийся к категории из первой формы Form2.FDQuery2.OpenOrExecute; end; Zairkz, вариант с ListView посмотрю. Прикреплю исходник того что получилось, база в архиве, все работает. Спасибо за советы, попытаюсь применить на практике. В принципе вопрос решен. ProjectListBoxSQLite.zip
-
Существует база данных SQLite из двух таблиц: категории(kategorii) и разделы(razdel). В категориях три поля: ID.NAM1,kateg(Nam1 уникальные значения), разделы : ID.NAM2,KATEG2(категории одинаковы для одной группы разделов). Подключение SQLite через FDConnection1 и FDQuery1. Тут нормально. На Form1 лежит ListBox1 в него из таблицы kategorii добавлены данные NAM1 стандартным методом . procedure TForm1.FormCreate(Sender: TObject); begin try ListBox1.Items.Clear; FDQuery1.Close; FDQuery1.SQL.Clear; FDQuery1.SQL.Add('select * from kategorii'); FDQuery1.OpenOrExecute; while not FDQuery1.Eof do begin ListBox1.Items.Add(FDQuery1.FieldByName('nam1').AsString); FDQuery1.Next; end; except on e: exception do Showmessage(e.ClassName + ': ' + e.Message); end; end; В ListBox-e для примера Овощи, Фрукты, Страна, Звери.... Поле kateg имеет значения 1,2,3,4 соответственно. Вторая таблица для каждой категории из первой таб. имеет разделы : лук, чеснок,помидор, хрен...Поле KATEG2 для этих элементов равно 1. Для фруктов то же четыре наименования и KATEG2=2. Остальное по такому же принципу. Есть вторая форма: на ней тоже ListBox, Button-с процедурой Form2.Hide и FDQuery2; Необходимо: при процедуре TForm1.ListBox1ItemClick открывалась Form2 и в ListBox2 загружались данные относящиеся только к одной категории. С формой проблем нет: Form2.Show;Form2.FDQuery2.Close; Form2.FDQuery2.SQL.Clear; Form2.FDQuery2.SQL.Add('select razdel.NAM2 from razdel WHERE razdel.kateg2='+???????? Form2.FDQuery2.OpenOrExecute; Вопрос: как получить значение поля kateg первой таблицы что бы во втором ListBox были данные относящиеся к нажатому в первом листбоксе пункта.... Делал все то же самое но вместо ListBox1 в Form1 использовал Grid1. В нем через переменную i:=FDQuery1.FieldByName('kateg').AsInteger ; ....... Form2.FDQuery2.SQL.Add('select razdel.NAM2 from razdel WHERE razdel.kateg2='+IntToStr(i)); получал нужный результат и все работает, на телефоне выглядит нормально. Но меня этот вариант не устраивает. Нужно использовать ListBox на первой форме.Помогите!