Форум: "Основная";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];
ВнизВопрос по обработчику событий 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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.054 c