Главная страница
    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.008 c
6-44310
AlexRush
2003-02-22 12:39
2003.04.14
IP протоколы: Документация; сниферы.


1-44218
Zew
2003-04-01 17:56
2003.04.14
Стиль windows xp


4-44505
Xi2
2003-02-12 20:07
2003.04.14
Как узнать IP на компе


1-44137
Брат
2003-04-03 12:45
2003.04.14
Как в StringGrid e сделать активной какую-то ячейку?


1-44228
Danger
2003-04-02 00:28
2003.04.14
Поиск в Richedit





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