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

Вниз

Можно ли в качастве переменной использовать компонент?   Найти похожие ветки 

 
grusty   (2003-04-01 16:24) [0]

Можно ли в качастве переменной использовать компонент (например Table) и чтобы эта переменная унаследовала все свойства соответствующего компонента?
Заранее благодарен!


 
Соловьев   (2003-04-01 16:26) [1]

create


 
Skier   (2003-04-01 16:30) [2]

Давай подробнее : цель какая ?


 
han_malign   (2003-04-01 16:37) [3]

Table1:=Table2;
(pointer(Table1)=pointer(Table2)) - true

class - это тот же object + RTTI, и все лишнее спрятано в compiler magic
если утрировано - пишем My: TMyClass, подразумеваем pMy: PMyObject (если это о чем то говорит)

procedure ProcessTable(aTable: TTable);
begin
aTable. .....
end;

ProcessTable(Table1);//aTable=Table1
ProcessTable(Table2);//aTable=Table2


 
grusty   (2003-04-01 16:40) [4]

Ситуация такая:
Существует 2 таблицы и в зависимости от определенной ситуации необходимо использовать либо первую таблицу, либо вторую. И дабы не писать в каждой ситуации одни и те же процедуры над разными таблицами, то хотелось бы вместо таблиц использовать переменную.


 
Skier   (2003-04-01 16:42) [5]

Тогда смотри procedure ProcessTable(aTable: TTable);
от han_malign © (01.04.03 16:37)


 
han_malign   (2003-04-01 16:44) [6]

WARNING:
- только не надо использовать, в качестве переменной, компонент положенный на форму в design time, надо просто объявить поле компонентного типа, в любой секции кроме published, либо описать локальную переменную метода.
private
FTempTable: TTable;

procedure .....
var tempTable: TTable;

З.Ы. И следи что-бы не сделать лишний раз Free, т.к. эта переменная будет второй ссылкой на один и тот-же экземпляр...


 
grusty   (2003-04-01 16:46) [7]

Хорошо, а если компоненты разные (например TTable и TMemoryTable)?


 
grusty   (2003-04-01 16:47) [8]

--> han_malign

И мне необходимо использовать компоненты, которые расположены на форме...


 
Skier   (2003-04-01 16:50) [9]

Примерно так :


ProcessTable(ADataSet: TDBDataSet);
begin
if Assigned(ADataSet) then begin
if ADataSet is TTable then begin
//...process ADataSet as TTable...
end //if
else if ADataSet is TMemoryTable then begin
//...process ADataSet as TMemoryTable ...
end //if
else begin
ShowMessage("Работать отказываюсь !");
end; //else
end; //if
end;


 
han_malign   (2003-04-01 16:57) [10]

> И мне необходимо использовать компоненты, которые расположены на форме...
только не надо использовать, в качестве переменной
- а вот в качестве значения этой переменной, очень даже, надо...

> а если компоненты разные
- а тогда надо почитать про полиморфизм и базовые(абстрактные) интерфейсы...


 
grusty   (2003-04-01 17:28) [11]

А нельзя использовать что-то типа:

...
procedure Form.Show(Sender: TObject);
var
tbl: TComponent:
begin
...
if i=0 then tbl:=Table1 as TComponent else tbl:=Table2 as TComponent;
...
end


 
grusty   (2003-04-01 17:30) [12]

А нельзя использовать что-то вроде:

...
procedure Form.Show(Sender: TObject);
var
tbl: TComponent:
begin
...
if i=0 then tbl:=Table1 as TComponent else tbl:=Table2 as TComponent;
...
end



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

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

Наверх





Память: 0.46 MB
Время: 0.009 c
1-44138
Антон
2003-04-03 13:18
2003.04.14
освобождение памяти распределенной в dll


1-44087
Sirus
2003-04-01 09:51
2003.04.14
Пакеты (Package) и библиотеки DLL в Delphi...


3-44026
Gaber
2003-03-25 17:45
2003.04.14
Транзакция (уровень изоляции)


1-44144
Ш-К
2003-04-03 14:27
2003.04.14
Как от даты получить день недели?


6-44294
h@1f-e1f
2003-02-20 14:59
2003.04.14
Просмотр HTML из под программ на Delphi





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