Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать обработчик события в консоли?


Страницы:   1 2

leklerk ©   (2012-04-13 13:45:00) 

Добрый день. Создаю в консоли форму с кнопкой и не могу сделать обработчик события OnClick кнопки. Как это сделать, помогите?


leklerk   (2012-04-16 08:52:00) [1]

Ладно, уже подсказали, вопрос снят. :)


leklerk   (2012-04-16 08:31:00) [2]


> OnClick := Form1.ButtonClickEvent;

Тогда другая ошибка: Undeclared identifier: 'ButtonClickEvent'.


sniknik   (2012-04-13 18:32:00) [3]

> Эту форму можно динамически создавать и показывать в нужный момент.
сделать проверку с выходом до создания главной формы в файле обычной программы... и вообще ничего больше не нужно менять.
уж точно не писать подобные "консоли".

> За последние год - полтора другого рода ответов (комментариев) от него не было
> :)
и, что характерно, все по делу...

+ ADO датасет без ADO коннекта,  программа без обработки ошибок,  еще преподнесет "пару сюрпризов".
к примеру сделай ошибку в строке коннекта.


Сергей М.   (2012-04-13 15:28:00) [4]


> Нанятый программист   (13.04.12 14:59) [19]


Тебе ли жить в печали ?)
Без работы уж точно не останешься - вон реклама тебе какая).. И что характерно - халявная)


Омлет   (2012-04-13 15:19:00) [5]


>           OnClick := TForm1.ButtonClickEvent;

OnClick := Form1.ButtonClickEvent;


Нанятый программист   (2012-04-13 14:59:00) [6]

> Плохиш ©   (13.04.12 13:51) [5]

Но пора программиста нанимать.
За последние год - полтора другого рода ответов (комментариев) от него не было
:)


Плохиш   (2012-04-13 14:56:00) [7]


> leklerk ©   (13.04.12 14:46) [15]
>
>

Чем MessageBox и MessageDlg не угодили?


Ega23   (2012-04-13 14:51:00) [8]


> OnClick := TForm1.ButtonClickEvent;


Вот тут ошибка


Сергей М.   (2012-04-13 14:50:00) [9]


> leklerk ©   (13.04.12 14:46) [15]


Что-то консолью тут не пахнет ..

Где волшебное слово "{$APPTYPE CONSOLE}" ?


leklerk   (2012-04-13 14:46:00) [10]


> Код покажите.


program Achtung_console;

uses
 Windows,
 Messages,
 SysUtils,
 Variants,
 Classes,
 Graphics,
 Controls,
 Forms,
 Dialogs,
 DB,
 ADODB,
 Grids,
 DBGrids,
 ExtCtrls,
 ActiveX,
 StdCtrls;

type

TForm1 = class(TForm)
private
procedure ButtonClickEvent(Sender: TObject);
end;

procedure TForm1.ButtonClickEvent(Sender: TObject);
begin
Caption := 'Button clicked';
end;

var ADO1: TADODataSet;
   Form1: TForm;
  Label1: TLabel;
   Button1: TButton;
   SH, SW: Integer;

begin
 { TODO -oUser -cConsole Main : Insert code here }
 try
   CoInitialize(nil);
   ADO1 := TADODataSet.Create(nil);
   with ADO1 do begin
     ConnectionString:='Provider=SQLOLEDB.1;Integrated Security=SSPI;'+
       'Persist Security Info=False;Initial Catalog=Work_pk;'+
       'Data Source=PROG\SQLEXPRESS';
     CommandType := cmdText;
     CommandText := 'select * from Табель where Корректировка=1';
     Open;
   end;
   if (not ADO1.IsEmpty) then begin
     SH := Screen.Height;
     SW := Screen.Width;
     try
       Form1 := TForm1.Create(nil);
       with Form1 do begin
         Position := poScreenCenter;
         Height := 400;
         Width := 400;
       end;
      Label1 := TLabel.Create(Form1);
       with Label1 do begin
         Parent := Form1;
         Caption := 'Вас ждут заказы!';
         Left := 120;
         Top := 50;
         Font.Size := 15;
         Font.Color := clRed;
       end;
       Button1 := TButton.Create(Form1);
       with Button1 do begin
         Parent := Form1;
         Left := 160;
         Top := 100;
         Caption := 'OK';
         OnClick := TForm1.ButtonClickEvent;
       end;      
       Form1.ShowModal;
     finally
       Form1.Free();
     end;
   end;
   finally
     ADO1.Free();
     CoUninitialize;
   end;

end.


Омлет   (2012-04-13 14:32:00) [11]


> несовместимые типы TNotifyEvent и Procedure.

Код покажите.


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

Возможно, вы не понимаете чего-то. Не нужно уничтожать форму в OnCreate. Динамическое создание и удаление модальной формы выглядит примерно так:

var
 MyModalForm: TMyForm;
begin
 MyModalForm := TMyForm.Create(nil);
 try
   MyModalForm.ShowModal;
 finally
   MyModalForm.Free;
 end;
end;


Ega23   (2012-04-13 14:32:00) [12]


> А нужно это потому, что сообщение должно выдаваться только,
>  если ADODataSet вернет хотя бы одну запись. Если делать
> в дизайнере форм, то пришлось бы уничтожать форму из события
> OnCreate.


Почему?


> несовместимые типы TNotifyEvent и Procedure.


Естественно. Тебе уже несколько раз сказали, что метод надо использовать. А не процедуру.


leklerk   (2012-04-13 14:28:00) [13]

Омлет, спасибо за помощь.


leklerk   (2012-04-13 14:27:00) [14]

Омлет, у меня ошибка: несовместимые типы TNotifyEvent и Procedure.
А нужно это потому, что сообщение должно выдаваться только, если ADODataSet вернет хотя бы одну запись. Если делать в дизайнере форм, то пришлось бы уничтожать форму из события OnCreate.


Омлет   (2012-04-13 14:11:00) [15]

Не совсем понятно - зачем вам динамическое надписей и кнопок на форме? Создайте форму, как обычно - в дизайнере форм. Разместите на ней все нужные компоненты, назначьте обработчики событий. Эту форму можно динамически создавать и показывать в нужный момент.


Омлет   (2012-04-13 14:07:00) [16]

TMyForm = class(TForm)
private
 procedure ButtonClickEvent(Sender: TObject);
end;

{ TMyForm }

procedure TMyForm.ButtonClickEvent(Sender: TObject);
begin
 Caption := 'Button clicked';
end;

...

begin
 ...
 FORM1 := TMyForm.Create(nil);
 ...
 Button1 := TButton.Create(Form1);
 with Button1 do
 begin
   Parent := Form1;
   OnClick := Form1.ButtonClickEvent;
 end;
 ...
end.


Anatoly Podgoretsky   (2012-04-13 14:02:00) [17]

> leklerk  (13.04.2012 13:53:06)  [6]

Сказали же - программиста.


Ega23   (2012-04-13 13:59:00) [18]


> Ega23, у меня ругается, что несовместимые типы.


Попробуй поменять местами.


leklerk   (2012-04-13 13:53:00) [19]

Ega23, у меня ругается, что несовместимые типы.


Плохиш   (2012-04-13 13:51:00) [20]


> где это писать?

Где больше нравится, там и пиши. Но пора программиста нанимать.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо