Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.05.2009, 17:09
gadmaker gadmaker вне форума
Прохожий
 
Регистрация: 19.04.2009
Сообщения: 49
Репутация: 10
По умолчанию Событие для кнопки в консоли

Здравствуйте, подскажите пожалуйста:
Делаю программу которая будет запускаться из консоли, поэтому все Win элементы будут создаваться за счёт кода. Не знаю как задать событие для кнопки, или вообще для любого элемента.
Делал так, не работает!

procedure Clicked();
begin
Win.Close;
end;

//
// Остальной код
//

ButtonOpt:=TButton.Create(Win);
ButtonOpt.Parent:=Win;
ButtonOpt.Left:=1;
ButtonOpt.Top:=1;
ButtonOpt.Width:=52;
ButtonOpt.Height:=20;
ButtonOpt.Caption:='Выход';
ButtonOpt.Click:=Clicked();

Последний раз редактировалось gadmaker, 11.05.2009 в 17:11.
Ответить с цитированием
  #2  
Старый 11.05.2009, 19:26
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Прежде чем что-то советовать, поясите что вы хотите сделать?
Что вы хотели сказать фразой "...будет запускаться из консоли..."
Причем здесь кнопки?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 11.05.2009, 23:19
Аватар для Rokuell
Rokuell Rokuell вне форума
Активный
 
Регистрация: 27.12.2006
Адрес: Псков
Сообщения: 274
Версия Delphi: Delphi 7
Репутация: 497
По умолчанию

Вариант 1. Если у тебя описан класс формы, то добавляешь в него описание события:
Код:
  TForm1 = class(TForm)
    ButtonOpt: TButton;
    procedure Clicked(Sender: TObject);
  private
    ...
  public
    ...
  end;

var Win:TForm1;

procedure TForm1.Clicked(Sender: TObject);
begin
  Win.Close;
end;
а потом присваиваешь соответствующему событию у кнопки:
Код:
  ButtonOpt.OnClick := Clicked;

Вариант 2. Шаманство описываешь процедуру так:
Код:
procedure Clicked(Sender: TObject);
begin
  Win.Close;
end;
А потом, при создании формы например:
Код:
type TNotifyEvent = procedure(Sender: TObject) of object;
     TMethod = record
      Code, Data: Pointer;
     end;

var pmethod : TMethod;

begin
...
 pmethod.Code := @Clicked; // указатель на код
 pmethod.Data := Win; // указатель на объект, методом которого является данная процедура.
 ButtonOpt.OnClick := TNotifyEvent(m1);
...
end

Теория: Идентификатор обычной процедуры, к примеру Clicked - это просто указатель на код, который нужно выполнить.
А идентификатор метода класса - это запись, состоящая уже из двух указателей - указатель на код и указатель на объект методом которого данная процедура является.
__________________
Велик и могуч наш Object Pascal !
ICQ: 357-591-887
Ответить с цитированием
  #4  
Старый 12.05.2009, 13:49
gadmaker gadmaker вне форума
Прохожий
 
Регистрация: 19.04.2009
Сообщения: 49
Репутация: 10
По умолчанию

Интересно узнать возможна ли такая конструкция:

Check := Check_Command(); // Определение индекса нажатой в данный момент кнопки.

if Check=Button1 then ...
if Check=Button2 then ...
if Check=Button3 then ...

Только с поправкой на правильный синтаксис.
Ответить с цитированием
  #5  
Старый 12.05.2009, 21:17
Аватар для 0nni
0nni 0nni вне форума
Начинающий
 
Регистрация: 13.12.2008
Адрес: Туапсе
Сообщения: 161
Репутация: 20
По умолчанию

Код:
if (SendMessage(Button1.Handle, BM_GETSTATE, 0, 0) and BST_PUSHED) = BST_PUSHED	 then Beep;
__________________
...сказал, и загрустил от бесспорной своей правоты
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:10.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter