![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать обработчик события в консоли?
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]
> где это писать?
Где больше нравится, там и пиши. Но пора программиста нанимать.