Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.006 c
3-80787
Master Denis
2002-04-04 17:35
2002.04.25
Как изменить имена полей в DBStringGrig


1-80972
Jony
2002-04-12 09:55
2002.04.25
Где разместить ЕХЕ-шник?


7-81087
Ura
2002-01-23 12:46
2002.04.25
Определение принтера в системе (Повтор)


3-80783
ОлегМ
2002-04-03 15:33
2002.04.25
Запрос от результата запроса


14-81057
fliz
2002-03-20 09:22
2002.04.25
Если на машине нет и никогда не было установлено Access, то через BDE можно работать с аксесовской базой. Или я что-то путую?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский