Форум: "Базы";
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];
Внизпрошу подсказку Найти похожие ветки
← →
Timka (2002-04-02 08:59) [0]Подскажите пожалуйста: есть несколько компонентов ТТable и по одному TDBGrid и TControlTab, при переключении с закладки на закладку выполняются практически одни и те-же действия для вывода данных из таблиц в TDBGrid, я решил это через оператор case, но у меня масса таблиц и кнопок, для каждой структура в основном повторяется и в принципе единственное, что меняется, это TDBDrid.DataSource и TTable.IndexNameField. Для кнопок, типа вставить запись, удалить и т.п. тоже приходится использовать CASE, что при десятке таблиц мягко говоря расстраивает, не говоря уже о том, что загромождает текст, увеличивает вероятность ошибки и затрудняет переделку. А теперь вопрос: можно ли пойти каким-либо другим путём, что-бы применить что-то типа Sender as... или т.п.? (все TTable в DataModule, многие таблицы взаимосвязаны...)
← →
deleon (2002-04-02 09:11) [1]Опиши массив типа, который будет содержать в себе указатели на события кнопок, DataSet"ы и др. информацию, затем сделай процедуру типа LoadPage(); в которой опиши действия по чтению данных из соответствующего элемента массива(соответствующего закладке) и присвоения этих данных куда надо, IndexName, DataSet...При правильной организации массива и процедуры загрузки, все будет работать без глюков...Это один из вариантов, как это можно сделать :)))
← →
Johnmen (2002-04-02 09:31) [2]Или написать необходимые процедуры и ф-ии, параметрами которых будут указатели на необходимые объекты...
← →
Timka (2002-04-02 12:50) [3]гмм... я, конечно, жутко извиняюсь, но не очень представляю, как именно выглядят указатели на объекты , а тем более на события этих объектов. Не могли бы Вы привести прмерчик? и если можно, подскажите, где это можно подробнее посмотреть? Плиииз...
← →
deleon (2002-04-02 12:59) [4]type
IPage = record
DataSource: TDataSource;
AddProc: TNotifyEvent;
EditProc: TNotifyEvent;
DelProc: TNotifyEvent;
end;
function DataSource1: TDataSource;
function DataSource2: TDataSource;
function DataSource3: TDataSource;
const
IPageArray[0..2]of IPage =
((DataSource: DataSource1; AddProc: Button1Click; EditProc:
Button2Click; DelProc: Button3Click),
......................
implementation
function DataSource1: TDataSource;
begin
Result := MainForm.SuperDataSource1;
end;
Все приблизительно так...фух, аж устал :)))
← →
Aleksandr (2002-04-02 13:06) [5]Ну, а не проще через свойство Tag использовать все? На то параметр Sender в методах и есть, чтобы неявно обращаться... Хотя, может, я чего-то недопонимаю, но у меня в одной программе аналогичный механизм с кучей таблиц и TabControl... Правда, я там не плодил пачку компонент, а в зависимости от закладки заполнял TQuery...
← →
VAleksey (2002-04-02 15:50) [6]Ха, можно по моему еще проще:
в юнете формы в разделе Public пиши: MyTable:TTable;
При перемещении по TabSheet - ам делай следующее
MyTable:=Table1;
И вызывай для MyTable какие хочешь методы и действия !!!!
В данном случае все будет применятся для Table1 !
← →
Timka (2002-04-03 19:26) [7]to deleon :
БОЛЬШОЕ СПАСИБО ЗА ПРИМЕР!!! чувствую, эта метода мне ещё здорово пригодится... :)))
to VAleksey :
круто. Ж:( сижу у зеркала, ощупываю уши... прикидываю длину...
ВСЕМ ОГРОМНОЕ СПАСИБО ЗА ПОМОЩЬ!!!
кстати, товарищи Мастера, не подскажете ли, в целях дальнейшего повышения образованности :), почему может происходить следующее :
перенёс из dbf в парадокс с помощью BathMove записи, сделал сортировку для табле по текстовому полю по типу хелпа дельфи.
работает в 95процентах случаев. только. Симптомы :
есть запись СОЛЬ - отсортировывается только если первая буква - латиницей
запись ОГУРЦЫ - никак не отсортировывается, (впереди пробела нет)
если изменяю в через DBGrid - всё нормально. Пока не закрою дельфи. При поторном открытии - всё возвращается обратно. при этом в одном сеансе всё нормально,разные проекты видят изменение. через SQL explorer - изменения в таблицах постоянные.
хорошо что таблица маленькая, случайно заметил. а если не 100 а 1000 записей? как с этим бороться?
или этот вопрос лучше задать в другой ветке?
← →
VAleksey (2002-04-04 06:38) [8]Да в другой
← →
Timka (2002-04-04 11:51) [9]понял, спасибо
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c