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

Вниз

Вопрос по обработчику событий EditXChange   Найти похожие ветки 

 
Алексей   (2004-02-11 16:38) [0]

Здравствуйте, уважаемые программисты.
У меня на форме много edit"ов. (Много = сотни). И для каждого ОДИНАКОВАЯ обработка при вводе в них информации. Обработка навороченная. Пока делаю вот так:

Procedure proc(bmw:tedit);
begin
....
....
{обработка типа bmw.selstart:=pos(",",bmw.text)-1; и т.п.}
....
....
end;


А потом делаю:

procedure TForm1.Edit1Change(Sender: TObject);
begin
proc(edit1);

end;

procedure TForm1.Edit2Change(Sender: TObject);
begin
proc(edit2);
end;

procedure TForm1.Edit3Change(Sender: TObject);
begin
proc(edit3);
end;

и:

procedure TForm1.Edit1Enter(Sender: TObject);
begin
edit1.selstart:=pos(",",edit1.text)-1;
end;

procedure TForm1.Edit2Enter(Sender: TObject);
begin
edit2.selstart:=pos(",",edit2.text)-1;
end;

procedure TForm1.Edit3Enter(Sender: TObject);
begin
edit3.selstart:=pos(",",edit3.text)-1;
end;


Если edit"ов не 3, а 100, то код становится гигантским! Нельзя ли как-нибудь в цикле это сделать? Или через переменную (типа TForm1.EditXChange, где в место Х подставляется каким-нибудь образом номер текущего edit"a)

Помогите пожалуйста..


 
Тимохов ©   (2004-02-11 16:39) [1]

Назначь им все один и тот же ивент.
От кого реально пришел ивент анализируй по Sender


 
Семен Сорокин ©   (2004-02-11 16:41) [2]

procedure TForm1.EditChange(Sender: TObject);
begin
proc(TEdit(Sender));
end;

procedure TForm1.EditEnter(Sender: TObject);
begin
TEdit(Sender).selstart:=pos(",",TEdit(Sender).text)-1;
end;


 
Юрий Зотов ©   (2004-02-11 16:44) [3]

procedure TForm1.EditChange(Sender: TObject);
begin
with TEdit(Sender) do
begin
...
end
end;

И не надо никаких Proc.


 
Тимохов ©   (2004-02-11 16:45) [4]

Я бы еще is TEdit написал имхо


 
Sandman25 ©   (2004-02-11 16:47) [5]

Возможно, стоит заменить все эти TEdit"ы на один TStringGrid...


 
Семен Сорокин ©   (2004-02-11 16:47) [6]

У меня на форме много edit"ов. (Много = сотни). И для каждого ОДИНАКОВАЯ обработка при вводе в них информации. Обработка навороченная.
а когда-то ведь за количество строк платили :)) (а может и сейчас где-нить в штатах платят).


 
snake1977   (2004-02-11 16:48) [7]

А вот вопрос, честно говоря не представляю себе на форме СОТНИ edit"ов :)
может просче использовать Grid ??


 
Тимохов ©   (2004-02-11 16:49) [8]


> а когда-то ведь за количество строк платили :)) (а может
> и сейчас где-нить в штатах платят).

Я бы богаче била был.

Автору.
Может ну их на фиг эти едиты - замени действительно на грид.


 
Алексей   (2004-02-11 17:04) [9]

Спасибо, всё работает! Вместо 1000 строк, получилось 100:).
Красиво.

2 Тимохов ©:
"Я бы еще is TEdit написал имхо"
Это как и зачем?

2 Sandman25 ©, snake1977, Тимохов ©:
"Может ну их на фиг эти едиты - замени действительно на грид."
С гридом сложнее. В эдитах легче обрабатывать ввод данных. По крайней мере на моём уровне знаний и умений. Хотел грид, честно. Но не задалось как-то.. Начальство указало:)

Да с вашей помощью и с эдитами всё изящно получилось. Кстати, если кучу едитов друг к дружке придвинуть - получается грид:). Понимаете теперь почему сотни?;)


 
Тимохов ©   (2004-02-11 17:06) [10]

Алексей (11.02.04 17:04) [9]
is команда такая.
Почитай в хелпе, т.к.
1. просто полезно
2. обязательно надо знать
3. в данном случае увеличит надежность кода


 
VLAD-MAL   (2004-02-11 17:06) [11]

Кстати, если кучу едитов друг к дружке придвинуть - получается грид:).

Учти - (почти на 110) процентов придется переделывать...
Тебе что, готовых гридов мало?

Не ходи ты, Данила, по энтой половице...


 
Семен Сорокин ©   (2004-02-11 17:08) [12]

Да с вашей помощью и с эдитами всё изящно получилось. Кстати, если кучу едитов друг к дружке придвинуть - получается грид:). Понимаете теперь почему сотни?;)
это-же сколько окон дополнительно создается, на медленных машинах возможны тормоза при создании.


 
Sandman25 ©   (2004-02-11 17:10) [13]

[9] Алексей (11.02.04 17:04)

Дело хозяйское. Но вот легче не совсем подходящее слово ИМХО.
Посмотрите OnSetEditText - полный аналог OnChange у TEdit.
OnSelectCell - полный аналог OnEnter.
OnKeyDown/OnKeyPress тоже есть.


 
Алексей   (2004-02-11 17:18) [14]

А чем готовый грид лучше?
Если мой "рукотворный" - полный аналог. Даже лучше (если менять св-ва отдельных ячеек, то только через канву, насколько я понимаю.. а тут прямой доступ). Поясните пожалуйста.
И что за 110 процентов переделки?


 
Amoeba ©   (2004-02-11 17:21) [15]


> А чем готовый грид лучше?

Всегда лучше нежели 100 Edit"ов


 
Sandman25 ©   (2004-02-11 17:21) [16]

[14] Алексей (11.02.04 17:18)

StringGrid.Cells[...] и никакой канвы.
Каждый TEdit требует Handle, уже не говоря о времени создания/удаления


 
Sandman25 ©   (2004-02-11 17:23) [17]

Кстати, если Вам понадобится изменить значение ряда/столбца едитов, будете FindComponent вызывать??? Или хранить ссылки в динамическом массиве???


 
Тимохов ©   (2004-02-11 17:23) [18]


> Amoeba © (11.02.04 17:21) [15]
> Sandman25 © (11.02.04 17:21) [16]

Он же сказал, так ему проще.
И даже достинства своего подхода выдал - типа свойства каждой ячейки менять может - тоже хорошо.
С гридом, согласитесь, все-таки сложнее работать для новичка.


 
VLAD-MAL   (2004-02-11 17:33) [19]

Давай-давай, лучше по-быстрому телегу сколотить, чем на курсы вождения ходить, техчасть учить, правила вождения...
Зато какие возможности по дизайну и полный контроль! И никаких тебе Protected - членов... А то - акселераторы/тормоза/сцепление какие-то...


 
Алексей   (2004-02-11 18:18) [20]

народ, может вы все и правы... Следующие вопросы будут по гриду:). А пока - суровая действительность. Время поджимает, нет времени на курсы вождения ходить. Хоть что-то сделать надо (смысл проекта - занести в БД данные).
"С гридом, согласитесь, все-таки сложнее работать для новичка."
Угу... Хотя, с гридом работать приходилось. Но не на том уровне, каковы требования сейчас.

Ещё раз всем спасибо.



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

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

Наверх




Память: 0.51 MB
Время: 0.023 c
3-79543
valerchik
2004-02-02 23:53
2004.02.25
ADOQuery и строка


14-80207
Cobalt
2004-01-30 17:31
2004.02.25
Функция возвращения короля


7-80302
~GaMeRd~
2003-12-06 16:39
2004.02.25
Работа с Вебброузер(вб)


14-80296
vopros
2004-02-03 11:44
2004.02.25
Я не понимаю Локомотив. Зачем брать Сычева было?


9-79539
Camedia
2003-08-12 20:06
2004.02.25
Тайлы для игры