Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.036 c
1-79981
zac
2004-02-13 11:11
2004.02.25
Как отключить меню в WebBrowser?


1-79701
kentavr
2004-02-12 20:29
2004.02.25
EXE


4-80380
Magic_CT
2003-12-19 19:44
2004.02.25
Hooks


3-79637
ИМХО
2004-01-31 10:03
2004.02.25
TDBGrid с dgMultiSelect


1-79751
Alex*
2004-02-12 09:32
2004.02.25
PasteSpecial в Excele.





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