Title: Simple Console Application
Question: Interaction between your Console applications and your forms
Answer:
{This code demonstrates how to combine console API with usual forms
Step 1 - Create a new - console application and save it as listing2
Step 2 - Copy the given code in to the console application
Step 3 - Create a form in the same project with name frmDialog1.dfm and dialog1.pas
Step 4 - In the form put three RadioButtons
Step 5 - Now build and run the application
Step 6 - Shift the focus to the console application and type 1 or 2 or 3
Based on the number typed the Radiobutton in the form will be clicked automatically
When u press ctrl + c the application exits}
program listing2;
{$APPTYPE CONSOLE}
uses
SysUtils, Windows, Messages, Forms,
Dialog1 in 'Dialog1.pas' {frmDialog1};
var
hInput : THandle;
inRec : TInputRecord;
dwCount : DWORD;
begin
{Create a Form in the usual way. The Forms unit ensures that
the Application object is around to "own" the form.}
Write('Creating the first Dialog Box...');
frmDialog1 := TfrmDialog1.Create(Application);
frmDialog1.Show;
Writeln('done.');
Writeln('Press 1, 2 or 3 to change the dialog box. Press Ctrl+ C to exit');
{Handle the Console input till the user cancels}
hInput := GetStdHandle(STD_INPUT_HANDLE);
{GetStdHandle - Returns handle for Standard input/output device}
while True do begin
{Avoid blocking on user input, so the forms have a chance
to operate as normal. If we had a message queue present, this
would be a normal message dispatch loop.}
Application.ProcessMessages;
if WaitForSingleObject(hInput,0) = WAIT_OBJECT_0 then begin
ReadConsoleInput(hInput, inRec, 1, dwCount);
if (inRec.EventType = KEY_EVENT) and inRec.Event.KeyEvent.bKeyDown then begin
case inRec.Event.KeyEvent.AsciiChar of
'1' : begin
Writeln('-1');
frmDialog1.RadioButton1.Checked := True;
end;
'2' : begin
Writeln('-2');
frmDialog1.RadioButton2.Checked := True;
end;
'3' : begin
Writeln('-3');
frmDialog1.RadioButton3.Checked := True;
end;
end;
end;
end;
end;
end.