Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.092 c
15-1334225125
REAn
2012-04-12 14:05
2013.03.22
Компиляция BPL


2-1333447731
Цукор5
2012-04-03 14:08
2013.03.22
Объединение мелких файлов в один большой


15-1342444836
картман
2012-07-16 17:20
2013.03.22
точка пересечения двух графиков


2-1328461488
Xmen
2012-02-05 21:04
2013.03.22
архивация открытого документа


15-1331145882
Dimka Maslov
2012-03-07 22:44
2013.03.22
Чё то до меня не доходит?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский