| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Как передать управление другой процедуре? |
| Автор: AlexSn 14.12.2004, 06:12 |
| Delphi. В одной процедуре выполняется цикл - перебор символов в dbedit. При нахождении какого-то символа - например порбела, нужно передать управление другой процедуре, а цикл остановить. Подскажите как?? Буду примного благодарен |
| Автор: Alex 14.12.2004, 09:07 | ||
Где-то так:
|
| Автор: Mde 15.12.2004, 00:30 | ||
Ну или еще один вариант
Изиняюсь за воровстово кода нео писать то же ленно... |
| Автор: SlaUr 15.12.2004, 07:12 | ||
Ну тогда еще вариант:
|
| Автор: AlexSn 15.12.2004, 08:14 |
| А у меня процедура такая: procedure TForm2.DBEditEh2EditButtons0Click(Sender: TObject; var Handled: Boolean); begin DBEditEh2.EditMask := ''; DBEditEh2.EditMask := '000\-000\-000\ 00;1;x'; end; в неё нужно передать управление. За место call ставить TForm2.DBEditEh2EditButtons0Click ??? |
| Автор: Bes 15.12.2004, 09:05 |
| DBEditEh2EditButtons0.Click; или DBEditEh2EditButtons0Click(nil); или DBEditEh2EditButtons0.OnClick(nil); А вообще на мой взгляд было бы грамотнее вынести процедуру за кнопку. procedure Call; begin DBEditEh2.EditMask := ''; DBEditEh2.EditMask := '000\-000\-000\ 00;1;x'; end; и вызов положить в кнопку procedure TForm2.DBEditEh2EditButtons0Click(Sender: TObject; var Handled: Boolean); begin Call; end; а дальше как в примерах выше, только мне больше нравится Repeat, т.е. procedure FindEdit; var n: Integer; begin n:= 1; Repeat if dbEdit1.Text[n] = ' ' then begin Call; inc(n); Until (n>Length(dbEdit1.Text)) or (dbEdit1.Text[n] = ' ') end; Он как-то гибче чтоли?... Хотя это дело вкуса. |
| Автор: SlaUr 15.12.2004, 10:43 | ||
| Bes Неправильный код (прибавление n идет перед until) Во вторых при пустой строке будет ошибка
|
| Автор: Bes 15.12.2004, 10:56 |
| 2SlaUr: Ну если честно я не компилировал так набросал. А какая разница где прибавлять? Ну у тебя росто с нуля начинается у меня с 1 просто везде выше начиналось с единицы. А.. попробовал - понял согласен - накосячил. на выходе надо дописать было n-1 и проверочку конечно.. :-) |
| Автор: SlaUr 15.12.2004, 11:02 |
| BesОшибки делают все .Я просто поправил и все ,так что все нормально. |
| Автор: AlexSn 15.12.2004, 12:08 |
| круто!:) спасибочки!!! |
| Автор: AlexSn 15.12.2004, 12:52 |
| Последний вопросик., простите если глупый. Где и как объявить процедуру call? Потому что в нутри процедуры ничего не работает! Вываливаются ошибки: undeclared identifier edit1 missing operator or semicolor ...... |
| Автор: Bes 15.12.2004, 13:16 |
| Сделать так берешь и пишешь м/у строчками type TForm1 = class(TForm) private { Private declarations } public { Public declarations } Procedure Call; end; var Form1: TForm1; потом нажимаешь волшебную комбинацию клавиш Ctrl+Shift+C и у тебя должна появиться такая вот заготовочка. procedure TForm1.Call; begin Сюда и пишешь что тебе заблагорассудится. end; да и почему Edit если у тебя был dbEdit? |
| Автор: AlexSn 15.12.2004, 13:34 |
| вообщето Edit, но ведь разницы нет в моём случае |
| Автор: SlaUr 15.12.2004, 13:37 | ||
Можно и по другому
|