Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.11;
Скачать: CL | DM;

Вниз

Компонента как параметр процедуры.   Найти похожие ветки 

 
Talle   (2004-04-20 11:28) [0]

Подскажите пожалуйста, как передать в процедуру одну из компонент(label,button..), чтобы затем у переданной компоненты изменить свойство Font.


 
Тимохов ©   (2004-04-20 11:31) [1]

procedure changelabelfont(const aLabel: TLabel);
begin
  aLabel.Font....
end;

changelabelfont(lablel1);


 
Smithson ©   (2004-04-20 11:31) [2]

var Alabel: TLabel

Другое дело, что смена шрифта у стандартных компонент (прорисовкой которых занимается windows), дело не благодарное...


 
Тимохов ©   (2004-04-20 11:33) [3]


> Smithson ©   (20.04.04 11:31) [2]

А без var работать не будет? Ой-ли :)))))


 
Smithson ©   (2004-04-20 11:35) [4]

Будет, но так МНЕ понятнее, что в этой процедуре переданный компонент меняется. А const я пишу, когда он используется, но не меняется. Извини, привычка :)


 
Ega23 ©   (2004-04-20 11:36) [5]

procedure MyFunction(aButton:TButton);
begin
aButton.Font. ....
end;


 
Тимохов ©   (2004-04-20 11:36) [6]


> Smithson ©   (20.04.04 11:35) [4]

по var не все можно передать - например результат другой функции не передашь.
имхо не очень удобно.


 
Ega23 ©   (2004-04-20 11:38) [7]

Тимохов ©   (20.04.04 11:33) [3]
Я один раз столкнулся, что не работало без var  :-((( По крайней мере, если var - то уж точно "по ссылке".


 
Smithson ©   (2004-04-20 11:39) [8]

> Тимохов ©   (20.04.04 11:36) [6]
А смысл менять временную переменную? Которую тебе вернет функция... Ее как раз по const

:)) Флеймим.


 
Тимохов ©   (2004-04-20 11:42) [9]


> Ega23 ©   (20.04.04 11:38) [7]

Быть не может...
Значит в другом ошибка.


> Smithson ©   (20.04.04 11:39) [8]

Не флеймим, а обмениваемя опытом и подходами.
Да пишите, как хотите - все равно откажетесь, т.к. поймете, что так делать не удобно и не соответствует семантике дельфи.


 
Silver Alex ©   (2004-04-20 11:42) [10]

в данном случае будет работать и без const и без var, только ссылка увеличится.


 
Тимохов ©   (2004-04-20 11:43) [11]


> только ссылка увеличится.

какая сслыка?


 
Ega23 ©   (2004-04-20 11:44) [12]

Да пишите, как хотите - все равно откажетесь, т.к. поймете, что так делать не удобно и не соответствует семантике дельфи.

А я, между прочим, один раз всего var для объекта писал. В том самом случае.
После обеда поищу, может найду эту фишку.


 
Тимохов ©   (2004-04-20 11:46) [13]


> Ega23 ©   (20.04.04 11:44) [12]

не ищи - не найдешь.


 
Silver Alex ©   (2004-04-20 11:47) [14]


> Тимохов ©   (20.04.04 11:43) [11]

на обьект, наверное,  какая же еще :)


 
Тимохов ©   (2004-04-20 11:49) [15]


> Silver Alex ©   (20.04.04 11:47) [14]

т.е. ссылка увеличится (например на 1) и будет указывать уже не на объект, а фиг знает на что.

Про что речь то? Не поясните...
Я что-то не пойму о чем вы..


 
Григорьев Антон   (2004-04-20 11:57) [16]


> Другое дело, что смена шрифта у стандартных компонент (прорисовкой
> которых занимается windows),


Это с каких это пор прорисовкой TLabel"а занимается Windows?!


 
Reindeer Moss Eater ©   (2004-04-20 11:58) [17]

procedure MyFunction(var aButton:TButton);

Одно неосторожное движение в такой процедуре - и утечка памяти обеспечена.
Если только процедура не предназначена создавать новую кнопку и возвращать её в параметре


 
Talle   (2004-04-20 12:09) [18]

А можно ли как-либо определить тип параметра-компоненты процедуры, чтобы предавать в одну процедуру и метку,и кнопку?


 
Reindeer Moss Eater ©   (2004-04-20 12:10) [19]

передавай их общего предка, уже имеющего нужное тебе свойство


 
Тимохов ©   (2004-04-20 12:11) [20]


> Talle   (20.04.04 12:09) [18]

procedure Do(const aControl: TControl);
begin
  if aControl is TEdit then
  begin
     TEdit(aControl).Font....
  end else
  if aControl is TLabel then
  begin
     TLabel(aControl).Font....
  end else

end;


 
Talle   (2004-04-20 12:18) [21]

Всем большое спасибо


 
Jack128 ©   (2004-04-20 12:42) [22]


> Talle   (20.04.04 12:09) [18]
> А можно ли как-либо определить тип параметра-компоненты
> процедуры, чтобы предавать в одну процедуру и метку,и кнопку
Конкретно, для примера Тимохов © "a проще сделать так:

type
 TControlCrack = class(TControl)
 public
   property Font;
 end;

procedure Do(const aControl: TControl);
begin
 with TControlCrack(aControl) do
 begin
   Font...
 end
end;



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

Текущий архив: 2004.04.11;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.039 c
7-1080318300
Vadim
2004-03-26 19:25
2004.04.11
Перезагрузка


3-1081770754
Урмат
2004-04-12 15:52
2004.04.11
связь между таблицами


4-1075543721
__Alex__
2004-01-31 13:08
2004.04.11
сокращение имен


14-1079338777
IceBeerg
2004-03-15 11:19
2004.04.11
Help! Комп не включается


7-1075961892
SHS
2004-02-05 09:18
2004.04.11
Как вывести в TrayClock (TrayClockWClass) время в своём формате?