Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Выполнить процедуру


Автор: SlaUr 11.6.2004, 09:52
Как мне из другого места программы выполнить процедуру типа
TForm1.Button1Click(Sender: TObject);

Сейчас я делаю так - Создаю отдельную процедуру ,в TForm1.Button1Click прописываю ее и из другого места программы тоже вызываю эту новую процедуру.А можно ли как-то вызвать сразу TForm1.Button1Click?
Вот пример того как делаю подобные вещи я:
Код

Procedure Butt1;
begin;
ShowMessage('Press Button1');
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Butt1;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Butt1;
end;

А можно ли из Button2Click вызвать Button1Click?

Автор: ~FoX~ 11.6.2004, 10:04
Код

Procedure Form1.Button2Click(Sender: Tobject);
begin
 Button1Click ();
end;

Читайте хелп!!!

sneaky2.gif
Блин я плакаль!!!

Автор: SlaUr 11.6.2004, 10:21
~FoX~ Вы плакали :-) а я об этом не знал - я вообще еще многие простые вещи не знаю . Спасибо за ответ.
Иногда стыдно задавать может элементарные вопросы,но что делать приходится (спросить то больше не у кого - только в форуме) .
Не видел книг по вот таким элементарным вещам,во всех книгах в основном расматриваются VCL и например Базы данных.


Автор: SlaUr 11.6.2004, 10:33
~FoX~
Код
Procedure Form1.Button2Click(Sender: Tobject);
begin
Button1Click ();
end


Ваш код не компелируется .

Автор: AriX 11.6.2004, 10:35
~FoX~
че ты плачешь? код-то вообще неправильный... надо в скобочках параметр передавать smile.gif))
SlaUr
можешь сделать так

Button1.Click;

проще будет и лучше по-моему

Автор: Girder 11.6.2004, 10:53
Button1Click(Self);

Автор: SlaUr 11.6.2004, 10:56
AriX Спасибо , решение действительно очень простое и действенное.Но все же как запустить Button1Click () с передачей параметров ?

p.s. Пока писал вопрос Girder уже писал ответ .Вопрос снимается .Всем спасибо.

Автор: ~FoX~ 11.6.2004, 11:09
2All
Люди вы вообще о чем говорите то!???
Если человек не умеет вызывать процедуру..........ему не на делфи писать надо!!!
2SlaUr
1. Книги?? Да в делфи хелп встроенный обширный!!!
2. В жизни не поверю, что в книге по программированию нет примера вызова процедуры\функции (с параметроми и без)!!!
3. Собственную процедуру вызвать можешь, а чужую с единственным параметром - не можешь?
=========================================================
Да и вообще все куда проще - в объект инспекторе на событие OnClick у Button2, выбрсть Button1OnClick. Уж это то можно было допереть своими мОзгами!!!
З.Ы. Прошу прощения за излишнюю эмоцианальность! Ни кого не хотел обидеть!

Автор: SlaUr 11.6.2004, 11:23
~FoX~ Про Button1Click я спросил так для примера , мне было нужно было знать как вообще вызывать процедуры с входными параметрами (Sender: Tobject) вот и все.Сами подумайте зачем мне дублировать кнопки?

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

Автор: Shishkin 12.6.2004, 14:37
B инспекторе обьектов зайди в закладку events, а в ней найди onclick. Там будет ниспадающий список из возможных процедур, выбери Button1Click

Автор: youri 12.6.2004, 14:51
~FoX~
Ты же сам не знал, как это сделать, а выпендриваешься

Автор: Jey_k 13.6.2004, 21:30
Цитата(SlaUr @ 11.6.2004, 11:23)
Сами подумайте зачем мне дублировать кнопки?


Иногда вызов тела процедуры по нажатию кнопки бывает нужен другой процедуре.
Часто сталкивался. Не переписывать же код в самом-то деле, а Label и goto стараюсь не использовать SUX это smile.gif

Автор: x77 13.6.2004, 22:59
по моему скромному мнению, Slaur делал изначально абсолютно правильно. если у меня обработчики используют один и тот же код, я всегда выношу его в отдельную процедуру и вызывают её в обработчиках. использовать один и тот же обработчик - не совсем удобно. может понадобиться потом добавить в один из них что-то индивидуальное. при выносе кода в отдельную процедуру, это делается без проблем. а вот при использовании одного обработчика на всех - придётся либо извращаться, либо опять таки, выносить общий код отдельно.

Автор: Monty 13.6.2004, 23:00
Цитата
2All
Люди вы вообще о чем говорите то!???
Если человек не умеет вызывать процедуру..........ему не на делфи писать надо!!!

НЕ тебе решать на чем ему писать! mad.gif ... человек учится как хочет или как может ... я лично всему сам научился без книг, достаточно было исходников или метода тыка smile.gif
Цитата
И вообще в форуме люди могут задать любой вопрос.Если вам вопрос кажется слишком примитивным можете не отвечать.Найдутся другие люди которые обьязательно помогут.Ищите для себя вопросы ,достойные ваших обширных знаний.

Что верно, то верно smile.gif ...
Добавлено @ 23:03
Цитата(x77 @ 13.6.2004, 21:59)
по моему скромному мнению, Slaur делал изначально абсолютно правильно. если у меня обработчики используют один и тот же код, я всегда выношу его в отдельную процедуру и вызывают её в обработчиках. использовать один и тот же обработчик - не совсем удобно. может понадобиться потом добавить в один из них что-то индивидуальное. при выносе кода в отдельную процедуру, это делается без проблем. а вот при использовании одного обработчика на всех - придётся либо извращаться, либо опять таки, выносить общий код отдельно.

я выношу это когда у меня одно и тоже более трех раз используется smile.gif ... ну не очень я люблю разброс по коду smile.gif .... если взять такой стааарый проект (причем большой), то прийдется изрядно по нему попрыгать smile.gif

Автор: x77 13.6.2004, 23:03
я программлю уже больше шести лет. профессионально, я имею в виду, т.е. за деньги. а балуюсь вообще со школы, т.е. уже лет 8-10. и вот на днях узнал, что к элементу набора данных можно при желании обратиться по индексу.... smile.gif был в шоке.

все мы пальцы гнуть умеем, и рассуждать кому на чём писать.... если я знаю ответ, я его пишу, даже если он 100 раз был в факе или ещё где-то.

Короче. ~FOX~, будь проще, и коллектив к тебе потянется smile.gif

Автор: Jey_k 14.6.2004, 10:17
Осуждать мы все умеем, вот толко помочь не всегда.
И кстати дельфя и для начинающих подходит чего о сях не скажешь

Автор: SlaUr 15.6.2004, 07:44
Программирую от случая к случаю лет 7 (в delphi 2 года),полностью самоучка, и все недосуг было разобраться как запускать процедуры у которых параметр
(Sender: TObject).В общем то меня только это и интересовало (может надо было задать конкретно такой вопрос а не приводить пример с кнопками).

Кстати делая последнюю прогу пришел к выводу что все таки я делал правильно (как уже сказал X77)- выносил общие процедуры в отдельные , потому что например решил переделать назначение кнопки и обнаружил что вызов процедуры этой кнопки используется в других местах-пришлось все переделывать.

p.s.О последней моей прогрмме (может кому пригодится) http://slaur.narod.ru/delphi/button/mybutton.rar
Программа служит для просмотра и выбора кнопок из вашей коллекции (формата BMP) (стандартными средствами мне надоело это делать).Имеет возможность отыскивать и удалять одинаковые файлы .Она простенькая но по моему полезна.

p.p.s А вобще этот вопрос скорее для просвещения , программист всегда сможет вывернутся даже не зная как делать правильно.Например делая последнюю прогу я вывернулся-программа работает ,но меня интересует может существует более правильный путь и поэтому я создал новый топик в форуме http://forum.vingrad.ru/index.php?act=ST&f=2&t=24478&unread=1

Автор: Calypso 30.6.2004, 11:54
Гениально!!!!!!!! thumbs-up.gif Столько шума и пыли а всего - го требовалось:
Form1.ButtonXClick(nil);

Автор: Guest 30.6.2004, 14:43
Действительно гениально!!!! Особенно если внутри что-то типа:

if Sender is TXXXXX then

Гениальней не придумаешь. hehe.gif
Calypso, ты про наследование и полиморфизм что-нибудь слышал????

Автор: decoder 1.7.2004, 11:19
А что, если симитировать нажатие кнопки SendMessage'эм - глюпо, но тоже вариант...

P.S. Правильно фокси! С такими мозгами надо не на Delphi писать... а сразу на машинном коде - зачем тратить драгоценные ресурсы своих мозгов на изучение какого-то там дэлфи. Дэлфи для амматоров, ну а какой слаур амматор-семь лет программировать: уже вызывает уважение. А вообще, будущее именно за такимиодиночками: в то время, как монополистические организации - та же Майкрософт - лишь замедляют прогресс, безкорыстная молодёжь восполняет эти утраты в "скорости прогрессирования".

P.P.S. Я вообще программирую всего год, большую часть которогоя потратил на изучение этого злосчастного ВэБэ. Но на мои вопросы, как бы глупо они не звучали, отвечают и не кривятся. А вообще, errare humanum est, что в переводе с латинского означает: человеку свойственно ошибаться...

Автор: dr.ZmeY 1.7.2004, 11:52
Модератор: 2all все эмоции во флейм или в личную переписку, ответ на поставленный вопрос был дан исчерпывающий, и прошу модератора раздела закрыть тему...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)