Перейти к содержанию
Fire Monkey от А до Я

maxfad

Пользователи
  • Постов

    9
  • Зарегистрирован

  • Посещение

Посетители профиля

426 просмотров профиля

Достижения maxfad

  1. Та да...Действительно проглядел)))) Что как отмечается, по не опытности понял по своему)))))Спасибо!!!
  2. Очень интересное решение, сейчас попробую..))) Ну что тут сказать...Очень красиво. Все работает, поражает простота исполнения. Я об этом методе не знал. Спасибо большое!!!!
  3. Очень интересное решение, сейчас попробую..)))
  4. Item.Tag := DataSet.FieldByName('kateg').Value; DataSet в проекте не использовал....Для связи SQLite через FireDAC использую FDConnection, FDQuery, FDPhysSQLiteDriverLink. Вы предлагаете добавить компонент DataSet? Или это свойство? Простите,я с БД пока на "ВЫ"...
  5. ну так вы просто Item.Tag не заполняете при выводе первого listbox. если у вас будет 2 и более одинаковых наименования, то ваш код работать не будет! ListBox1 на первой форме заполняется из таблицы с тремя полями(ID,NAM1,kateg), поле NAM1 попадает в ListBox и значения там уникальные. Чем может быть заполнен Item.Tag при заполнении ListBox1 не представляю. Поле kateg с ListBox1 не связано. Я двумя руками за то чтоб этот код упростить, но красивый код не всегда работающий код...Подскажите как можно использовать конструкций i:=Item.Tag в TForm1.FormCreate.
  6. Проблема в том, что этот вариант в моем случае не работает. i := Item.Tag при нажатии возвращает 0, а во второй форме ListBox становится пустой. прикладываю скрин с откомпелированной программой под win-32. Среда DELPHI XE7. На Form1 положил Label1 чтоб видеть значение i...оно равно 0. Спасибо за внимание к моему проекту, но этот метод или не полный или не подходящий. А вот как оно в моем варианте:
  7. Проблема в том, что этот вариант в моем случае не работает. i := Item.Tag при нажатии возвращает 0, а во второй форме ListBox становится пустой. прикладываю скрин с откомпелированной программой под win-32. Среда DELPHI XE7. На Form1 положил Label1 чтоб видеть значение i...оно равно 0. Спасибо за внимание к моему проекту, но этот метод или не полный или не подходящий.
  8. Вопрос решил прибегнув к помощи еще одного 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
  9. Существует база данных 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 на первой форме.Помогите!
×
×
  • Создать...