Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];

Вниз

Переключение между формами   Найти похожие ветки 

 
V_Nik   (2002-04-02 12:12) [0]

Написал процедуру, работа которой зависит от того, с какой формы к ней идет обращение.

procedure myproc (rabfrm:TForm);

begin
with rabfrm.Table1 do begin
…………
…………
end;

Обращаюсь к ней:

myproc(Form1);

Не работает.
Form1 не воспринимается.

Что не так?


 
gek   (2002-04-02 12:17) [1]

< procedure myproc (rabfrm:TForm);

begin
with rabfrm.Table1 do begin
…………
…………


Есть ли на других формах таблица?


 
V_Nik   (2002-04-02 12:49) [2]

<gek
Имена таблиц на всех формах разные


 
Anatoly Podgoretsky   (2002-04-02 12:57) [3]

А модуль про Form1 что нибудь знает?
Приведи uses


 
Владислав   (2002-04-02 13:04) [4]

Как не воспринимает? Говорит, что отказывается работать с Form1? Может причины какие-нибудь объясняет?


 
V_Nik   (2002-04-02 14:19) [5]

<Anatoly Podgoretsky
Модуль знает про все формы

<Владислав
[Error]: Undeclared identifier: "Table1
[Error]: Undeclared identifier: "First""
[Error]: Undeclared identifier: "FieldByName"

Если я вместо rabfrom ставлю Form1, то все ОК.


 
gek   (2002-04-02 14:32) [6]

Ну сделай

uses
Db, DBTables;

procedure myproc (Tbl:TRable);
.....................
если только с таблицей работаешь
и
myproc(Form1.Table_yaur_name);


 
yaJohn   (2002-04-02 14:34) [7]

>procedure myproc (rabfrm:TForm);
>begin
>with rabfrm.Table1 do begin

Мил человек, да с чего ему работать-то? Где у TForm есть свойство Tabel1???
А у Форм1 такое свойство как раз есть, поскольку на нее (Форм1) ее (Табел1) поместили.

ИМХО лучше procedure MyProc(Table: TTable);


 
Alx2   (2002-04-02 14:37) [8]

В класс TForm не водят поля или методы с именем Table1.
Чтобы заработало, надо исправить
procedure myproc (rabfrm:TForm);
на
procedure myproc (rabfrm:TForm1);
Или какого там типа Form1?




 
Anatoly Podgoretsky   (2002-04-02 15:06) [9]

V_Nik (02.04.02 14:19)
Вот теперь другое дело.

Form1 воспринимается
Только у rabfrm нет таких свойств, надо
procedure myproc (rabfrm:TForm1);

Вот у Form1 они есть
Но вероятнее всего у тебя неверная постановка задачи, наверно надо делать по другому.


 
Бурундук   (2002-04-02 15:27) [10]

а почему не сделать myproc методом TForm1?


 
V_Nik   (2002-04-02 17:36) [11]

<Anatoly Podgoretsky
Да, скорее всего, я что-то делаю не так.
Задача-то простая. У меня есть несколько разных форм с таблицами, одинаковыми по названию, но разными по содержанию. Хотелось бы иметь для них одну процедуру обработки (например, вывода каких-то одинаковых для всех таблиц (по названию полей) данных в Word). Как передать в процедуру название той формы, таблицу с которой ей следует обрабатывать? Или как по-другому решить эту задачу?


 
Anatoly Podgoretsky   (2002-04-02 17:42) [12]

Передавай таблицу, а не форму


 
olookin   (2002-04-02 17:43) [13]

А попробуйте так. Задайте для всех форм таги от 0 до номера последней формы. Надо понимать, процедура myproc вызывается при каком событии на форме-sender-е. Тогда введите глобальную переменную globalTag и приравняйте ее тагу формы, которая в данный момент вызывает myproc. Затем используйте:

for i:=0 to Application.ComponentCount-1 do
if (Application.Components[i] is TForm) and
(Application.Components[i] as TForm).Tag=globalTag then
with (Application as TForm).Table1 do begin
...(то, что является аналогом myproc)
end;



 
yaJohn   (2002-04-02 17:44) [14]

>Хотелось бы иметь для них одну процедуру обработки
Лингвистический анализ. Для форм или для таблиц???
ИМХО - правильное решение - передавать как параметры сами таблицы, которые надо обрабатывать. Если надо именно формы - только через РТТИ, а это заморочка еще та, и вообще не красиво.
procedure MyProc(Table: TTable);




 
yaJohn   (2002-04-02 17:48) [15]

2 olookin
>(Application as TForm).Table1
А если подумать? Или попробовать...



 
olookin   (2002-04-02 17:59) [16]

Да, конечно, здесь также ввести проверку на наличие объекта по аналогу с Application, т.е.

for i:=0 to
(Application.Components[i] as TForm).ComponentCount-1 do
if (Application.Components[i] as TForm).Components[i] is TTable

и т.д.


 
Бурундук   (2002-04-02 18:07) [17]

TForm1.Table1 и TForm2.Table1 - вещи совершенно разные,
и обратиться к ним в общем случае можно разве что через имя
(FindComponent)


 
olookin   (2002-04-02 18:10) [18]

Бурундук, неправда. Не надо искать имя, достаточно найти этот компонент на исходной форме так, как я и делаю (и как привел на примере).


 
Владислав   (2002-04-02 18:23) [19]

Один из вариантов.

Создай форму (скажем TfrmCommon). Помести на нее TTable (например, tblCommon: TTable). Сделай процедуру обработки этих таблиц методом этой вновь созданной формы. Дальше, используя визуальное наследование форм, создай унаследованные (от TfrmCommon) формы (File|New...; Вкладка AppName; frmCommon; OK. Где AppName - название твоего проекта). Измени их, как тебе нужно. В своем методе обработки можешь обращаться к к компоненту-таблице - tblCommon.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.008 c
1-46412
sdram
2002-04-02 16:41
2002.04.15
Как вывести в отчете значения формул из базы.


14-46494
--Reporter--
2002-03-06 13:50
2002.04.15
Проблема с рускими буквами в WinAmp 2.5 :-(


1-46388
Xpyctuk
2002-03-26 11:58
2002.04.15
Кто-нибудь знает как работать с компонентой IdBase64Encoder


3-46234
Immortal
2002-03-24 13:07
2002.04.15
Table.Filter


1-46341
Schummi
2002-04-02 07:44
2002.04.15
Цвет в StringGrid





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский