Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Как сделать обработчик события в консоли?   Найти похожие ветки 

 
leklerk ©   (2012-04-13 13:45) [0]

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


 
ProgRAMmer Dimonych ©   (2012-04-13 13:46) [1]

Form154231.OnClick := MethodName;

Так?


 
Плохиш ©   (2012-04-13 13:46) [2]

procedure blablabla(<parameters>) of object;


 
Ega23 ©   (2012-04-13 13:46) [3]

procedure Txxx.ButtonOnClick(Sender: TObject);
....

Button1.OnClick := ButtonOnClick;



 
leklerk ©   (2012-04-13 13:49) [4]

ProgRAMmer Dimonych, Плохиш, где это писать?


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


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

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


 
leklerk ©   (2012-04-13 13:53) [6]

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


 
Ega23 ©   (2012-04-13 13:59) [7]


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


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


 
Anatoly Podgoretsky ©   (2012-04-13 14:02) [8]

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

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


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

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.


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

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


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

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


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

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


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


> несовместимые типы 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) [14]


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


Почему?


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


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


 
leklerk ©   (2012-04-13 14:46) [15]


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


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:50) [16]


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


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

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


 
Ega23 ©   (2012-04-13 14:51) [17]


> OnClick := TForm1.ButtonClickEvent;


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


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


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

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


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

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

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


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


>           OnClick := TForm1.ButtonClickEvent;

OnClick := Form1.ButtonClickEvent;


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


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


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


 
sniknik ©   (2012-04-13 18:32) [22]

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

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

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


 
leklerk ©   (2012-04-16 08:31) [23]


> OnClick := Form1.ButtonClickEvent;

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


 
leklerk ©   (2012-04-16 08:52) [24]

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



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.059 c
15-1339878605
Юрий
2012-06-17 00:30
2013.03.22
С днем рождения ! 17 июня 2012 воскресенье


1-1298886494
harisma
2011-02-28 12:48
2013.03.22
Упаковка массива рекордов в олевариант


15-1352817812
bibi
2012-11-13 18:43
2013.03.22
C# RequiredFieldValidator &amp; RegularExpressionValidator


15-1345527113
ProgRAMmer Dimonych
2012-08-21 09:31
2013.03.22
Можно ли запретить CryptoAPI лезть в сеть?


15-1343378205
Phoenix_
2012-07-27 12:36
2013.03.22
Delphi -> Java/Android