Форум: "Начинающим";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];
ВнизПомогите составить обработчик для ListBox Найти похожие ветки
← →
vodvorezlaya (2006-09-28 12:08) [0]Доброго времени суток.
Создал ListBox и заполнил его списком компонентов DataSource:for i := 0 to Form1.ComponentCount-1 do
begin
if Components[i] is TDataSource
then ListBox1.AddItem(Components[i].Name,Components[i]);
end;
Теперь нужно по двойному щелчку на одном из элементов (компонентов DataSource) присвоить его свойству DBGrig.Dataset.
Спасибо.
← →
Elen © (2006-09-28 12:16) [1]типа :
procedure TForm1.ListBox1Click(Sender: TObject);
begin
DBGrig.Dataset:= form1.FindComponent(ListBox1.Items[ListBox1.itemindex]);
end;
← →
MsGuns © (2006-09-28 12:18) [2]Может, надо "перещелкивать" не датасорсы, а датасеты ?
Это вообще-то говоря совсем не одно и то же
← →
clickmaker © (2006-09-28 12:18) [3]procedure TForm1.ListBox1Click(Sender: TObject);
begin
DBGrig.Dataset:= TDataSource(ListBox1.Items.Objects[ListBox1.itemindex]).DataSet;
end;
← →
Elen © (2006-09-28 12:20) [4]
> clickmaker
Тогда нужно еще в листе связывать object. И это конечно же будет лучше
← →
ЮЮ © (2006-09-28 12:21) [5]FindComponent, пожалуй лишнее, объекты и так хранятся в списке.
DBGrig.DataSource := TDataSouce(ListBox1.Items.Objects[ListBox1.itemindex]);
← →
vodvorezlaya (2006-09-28 12:28) [6]Прошу прощения код немного другой (через AddObject):
for i := 0 to Form1.ComponentCount-1 do
begin
if Components[i] is TDataSource
then ListBox1.Items.AddObject(Components[i].Name,Components[i]);
end;
Чем вообще AddObject от Add отличается?
> Может, надо "перещелкивать" не датасорсы, а датасеты ?
> Это вообще-то говоря совсем не одно и то же
У меня 12 DataSource, и необходимо чтоб данные в DBGrid менялись по щелчку на ListBox.
А как это сделать, в принципе хорошо два варианта.
> Тогда нужно еще в листе связывать object. И это конечно
> же будет лучше
Теперь как?
← →
Palladin © (2006-09-28 12:31) [7]If ListBox1.Items.Objects[ListBox1.ItemIndex] is TDataSource Then DBGrig.DataSource := TDataSource(ListBox1.Items.Objects[ListBox1.ItemIndex]);
> Чем вообще AddObject от Add отличается?
параметрами
← →
MsGuns © (2006-09-28 12:40) [8]>vodvorezlaya (28.09.06 12:28) [6]
>Чем вообще AddObject от Add отличается?
TList,TObjectList + F1 и до посинения
>У меня 12 DataSource, и необходимо чтоб данные в DBGrid менялись по щелчку на ListBox.
Есть полпроцентная вероятность ошибиться, но все же выскажу предположение, что у Вас имеется не 12 "датасорс", а 12 таблиц, содержимое которых надо показывать в единой решетке, причем какую именно показывать должен выбирать пользователь.
Если дело обстоит именно так, то настоятельно рекомендую Вам повнимательнее вникнуть в суть механизма обмена информацией с БД. После чего Вам должны открыться некоторые очевидные вещи. Например, что один "датасорс" вполне может передавать гриду данные сколь угодно многих различных датасетов, в то время как один датасет не может содержать данные нескольких запросов. Или то, что не имеет смысла держать на клиенте 12 (а если завтра надо будет 120 или 1200 ?) открытых наборов данных только для того, чтобы пользователь мог посмотреть любой из них.
← →
vodvorezlaya © (2006-09-28 12:42) [9]
> Palladin © (28.09.06 12:31) [7]
А так можно:
If ListBox1.Items.Objects[ListBox1.ItemIndex] is TDataSource Then DBGrig.DataSource :=ListBox1.Items.Objects[ListBox1.ItemIndex] as TDataSource;
?
← →
Palladin © (2006-09-28 12:42) [10]
> TList,TObjectList + F1 и до посинения
:) неа, TStrings+F1 до посинения, то он уже читал по мотивам прошлой ветки (надеюсь)
← →
Palladin © (2006-09-28 12:45) [11]
> vodvorezlaya © (28.09.06 12:42) [9]
можно, но не нужно
http://delphimaster.net/view/2-1159423777/
← →
vodvorezlaya © (2006-09-28 12:49) [12]
> TList,TObjectList + F1 и до посинения
Да я уже красный.
> MsGuns © (28.09.06 12:40) [8]
Ты угадал.
Я так понял, создать 12 таблиц к ним 1 датасет, и через свойство DataSource менять источники?
Ты это имел ввиду?
DataSet - это полагаю набор данных, как его получить сразу с 12 таблиц.
Я читал о базах данных, правда книжка не очень.
Спасибо что помогаешь.
← →
clickmaker © (2006-09-28 12:51) [13]
> Я так понял, создать 12 таблиц к ним 1 датасет, и через
> свойство DataSource менять источники?
что значит "таблиц"? TTable? Так это и есть DataSet
Нужен один DataSource, который жестко привязан к гриду, а у датасоурса уже переключать датасет
← →
vodvorezlaya © (2006-09-28 13:39) [14]
> Нужен один DataSource, который жестко привязан к гриду,
> а у датасоурса уже переключать датасет
ТипаDataSource1.DataSet := Table1;
?
← →
Elen © (2006-09-28 13:42) [15]Удалено модератором
← →
Elen © (2006-09-28 13:43) [16]Ой Пардон. У меня Punto балуется :-)))
← →
Palladin © (2006-09-28 13:54) [17]а ничего так... экзотично и с намеком получилось...
← →
Elen © (2006-09-28 14:01) [18]Удалено модератором
← →
MsGuns © (2006-09-28 14:03) [19]>vodvorezlaya © (28.09.06 12:49) [12]
>Я так понял, создать 12 таблиц к ним 1 датасет, и через свойство DataSource менять источники?
>Ты это имел ввиду?
>DataSet - это полагаю набор данных, как его получить сразу с 12 таблиц.
Нет, не это. Я имел в виду, что иметь активный (т.е. "открытый" или, как говорят аксакалы,- "курсор") объект связи с БД (в общем случае наследник TDataSet), который не используется в текущем фрагменте алгоритма (не отображается, не перебирается (сканируется), не упорядочивается и т.д.) не правильно МЕТОДОЛОГИЧЕСКИ. Открывать (КАК открывать - другой вопрос) нужно только те наборы данных, которые нужны для решения текущей задачи.
Применительно к Вашему случаю надо показывать список таблиц текущей БД и, возможно, список полей с характеристиками для активной (в списке) таблицы. Ну и, возможно, содержимое активной таблицы. Хотя последнее окно я бы не советовал обновлять атоматически при смене текущей таблицы в списке таблиц - это может привести к жутким тормозилам и вообще будет сильно раздражать.
Если Вы собираетесь написать некий универсальный интерфейс для просмотра произвольных БД, советую запустить акцесс и посмотреть, как у него реализован интерфейс просмотра таблиц и их содержимого.
В любом случае постоянная "забота" о "сервере", т.е. о том, как бы поменьше его напрягать, сделает Ваши приложения более гибкими, легкими, шустрыми и в конечном счете более удобными в использовании.
← →
vodvorezlaya © (2006-09-28 15:52) [20]Удалено модератором
← →
Ketmar © (2006-09-28 15:54) [21]Удалено модератором
← →
vodvorezlaya © (2006-09-28 16:23) [22]Удалено модератором
← →
Elen © (2006-09-28 16:29) [23]Удалено модератором
← →
Ketmar © (2006-09-28 16:40) [24]Удалено модератором
← →
Игорь Шевченко © (2006-09-28 16:42) [25]"Просто потрепаться вы можете в соответствующей конференции"
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.062 c