procedure TMyForm.EditChange(Sender: TObject);
begin//---------------------end;
....
var
Edit: array [1..5] of TEdit;
for i:=1 to 5 do begin
Edit[i]:=TEdit.Create(Application);
Edit[i].Parent:=Form1;
Edit[i].OnChange := EditChange;
end;
— сколько программистов надо чтобы заменить сгоревшую лампочку?
— сколько не бери, а лампочку не поменять — проблема аппаратная, программным путем не решается...
Здравствуйте, _MarlboroMan_, Вы писали:
_MM_>Здравствуйте, Ozone, Вы писали:
_MM_> _MM_>
_MM_>procedure TMyForm.EditChange(Sender: TObject);
_MM_>begin
_MM_>//---------------------
_MM_>end;
_MM_>....
_MM_>var
_MM_> Edit: array [1..5] of TEdit;
_MM_>for i:=1 to 5 do begin
_MM_> Edit[i]:=TEdit.Create(Application);
_MM_> Edit[i].Parent:=Form1;
_MM_> Edit[i].OnChange := EditChange;
_MM_>end;
_MM_>
А как в процедуре EditChange узнать над каким именно 1..5 совершается действие
(просто мне нужно, чтобы при изм. 1-го данные заносились туда-то, при изм. 2-го туда-то, и т.д.)
Здравствуйте, Ozone, Вы писали:
O>А как в процедуре EditChange узнать над каким именно 1..5 совершается действие O>(просто мне нужно, чтобы при изм. 1-го данные заносились туда-то, при изм. 2-го туда-то, и т.д.)
тут есть несколько подходов.
1. поименовать создаваемые контролы.
2. использовать проперть Tag.
procedure TMyForm.EditChange(Sender: TObject);
begin
if not Sender is TButton then exit;
//первый подходif TButton(Sender).Name = 'Edit1'then
begin
end;
//второй подходcase TButton(Sender).Tag of
1:
begin
end;
end;
end;
....
var
Edit: array [1..5] of TEdit;
for i:=1 to 5 do begin
Edit[i]:=TEdit.Create(Application);
Edit[i].Name :='Edit' + InToStr(i); //поименовать создаваемые контролы.
Edit[i].Tag := i; // использовать проперть Tag.
Edit[i].Parent:=Form1;
Edit[i].OnChange := EditChange;
end;
— сколько программистов надо чтобы заменить сгоревшую лампочку?
— сколько не бери, а лампочку не поменять — проблема аппаратная, программным путем не решается...
Здравствуйте, _MarlboroMan_, Вы писали:
_MM_>Здравствуйте, Ozone, Вы писали:
O>>А как в процедуре EditChange узнать над каким именно 1..5 совершается действие O>>(просто мне нужно, чтобы при изм. 1-го данные заносились туда-то, при изм. 2-го туда-то, и т.д.)
_MM_>тут есть несколько подходов.
_MM_>1. поименовать создаваемые контролы. _MM_>2. использовать проперть Tag.
_MM_>
_MM_>procedure TMyForm.EditChange(Sender: TObject);
_MM_>begin
_MM_> if not Sender is TButton then exit;
_MM_> //первый подход
_MM_> if TButton(Sender).Name = 'Edit1'then
_MM_> begin
_MM_> end;
_MM_> //второй подход
_MM_> case TButton(Sender).Tag of//почему TButoo
_MM_> 1:
_MM_> begin
_MM_> end;
_MM_> end;
_MM_>
_MM_>end;
_MM_>....
_MM_>var
_MM_> Edit: array [1..5] of TEdit;
_MM_>for i:=1 to 5 do begin
_MM_> Edit[i]:=TEdit.Create(Application);
_MM_> Edit[i].Name :='Edit' + InToStr(i); //поименовать создаваемые контролы.
_MM_> Edit[i].Tag := i; // использовать проперть Tag.
_MM_> Edit[i].Parent:=Form1;
_MM_> Edit[i].OnChange := EditChange;
_MM_>end;
_MM_>
Но я изначально не знаю сколько будет Edit'ов. Как мне CASE организовать?
Здравствуйте, Ozone, Вы писали:
O>Но я изначально не знаю сколько будет Edit'ов. Как мне CASE организовать?
А как ты собрался в разные места данные отправлять, если ты даже количество едитов не знаешь??? Ты сначала с задачей определись, а потом уже и спрашивай.
... << RSDN@Home 1.0 beta 6 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
— сколько программистов надо чтобы заменить сгоревшую лампочку?
— сколько не бери, а лампочку не поменять — проблема аппаратная, программным путем не решается...
Просто количество Edit'ов всегда разное (зависит от опред. условий)
Но когда я их создал, то я конечно же знаю сколько их у меня.
Вопрос в другом: когда я нажимаю на какой-то из этих Edit'ов — выполняется процедура EditChage(Sender: TObject) (см. выше). И в этой процедуре мне просто нужно узнать Tag активного Edit'а.
Здравствуйте, Ozone, Вы писали:
O>Просто количество Edit'ов всегда разное (зависит от опред. условий) O>Но когда я их создал, то я конечно же знаю сколько их у меня. O>Вопрос в другом: когда я нажимаю на какой-то из этих Edit'ов — выполняется процедура EditChage(Sender: TObject) (см. выше). И в этой процедуре мне просто нужно узнать Tag активного Edit'а.
ну сделай набор IF ... THEN
еще рекомендую сделать несколько обработчиков и в зависимости от ситуации при создании контролов подсовывать нужный.
— сколько программистов надо чтобы заменить сгоревшую лампочку?
— сколько не бери, а лампочку не поменять — проблема аппаратная, программным путем не решается...