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

Вниз

Как сделать скрытую форму   Найти похожие ветки 

 
Barloggg   (2007-11-26 16:50) [0]

Пишу программу которая не должна быть видимой.
Но должна иметь форму.
Это часики для LCD дисплея на клавиатуре Logitech G15.
Запускается автоматом, и работает. При нажатии комбинации клавиш на экран выводится форма для настроек. Естественно форма нужна крайне редко.
Как ее не создавать при запуске программы, а создавать по требованию.
Более того, при закрытии формы программа должна продолжать работать, а форму можно уничтожить.

И как такую программу закрыть кстати? Если нет формы?

Как это сделать кашерно? (читай набросать мышкой на форму) или хотя бы полукашерно?


 
Barloggg   (2007-11-26 17:09) [1]

да и еще, а как в KOl дело обстоит с курсором мыши?
а точнее с его внешним видом, когда я последний раз эти заморачивался я делал это в VCL и все что надо было сделать это назначить цифру.
А здесь нужна иконка курсора.
Где и как ее взять?


 
Golem   (2007-11-26 21:56) [2]

создание формы в режиме рантайм по определению не может быть кашерным )))) все пишется ручками)))
например:

program NotKasherno;

uses
Windows,
Messages,
Kol;

type
PForm1 = ^TForm1;
TForm1 = object(TObj)
  Form, Btn: PControl;
public
  procedure DoClick(Sender: PObj);
end;

var
Form1: PForm1;

procedure NewForm1(var Result: PForm1; AParent: PControl);    //не кашерное создание формы
begin
New(Result, Create);
with Result^ do
begin
  Form := NewForm(AParent, "Form1").SetSize(300,300);
  Form.Add2AutoFree(Result);
  Applet := Form;
  Btn := NewButton(Form, "Button1").PlaceUnder.ResizeParentBottom;   //не кашерное создание кнопки на форме
  Btn.OnClick := DoClick;
end;
end;

{ TForm1 }

procedure TForm1.DoClick(Sender: PObj);     //не кашерное создание обработчика нажатия кнопки
begin
MessageBeep(mb_ok);
end;

//--------------------------------------------------------------------------
begin                  
Run(Applet);

//некоторый код
//код перехвата нажатия комбинации клавиш

NewForm1(Form1, nil);   //вызов формы

//некоторый код

end.


кстати, перехват  системных сообщений виндовс тоже не слишком кашерный ))))


 
Golem   (2007-11-26 21:58) [3]

опшипся маленько
прально так

begin                  

//некоторый код
//код перехвата нажатия комбинации клавиш

NewForm1(Form1, nil);   //вызов формы
Run(Applet);

//некоторый код

end.


 
Barloggg   (2007-11-27 09:25) [4]

нда, но у меня на форме много контролов получилось. делать это некашерно запарно. К тому же я как обычно что-нибудь доделываю и переделываю после релиза :)

гм. а я кстати нашел способ. даже два.
один это полукашерный.
на форму бросается апплет и в нем перекрывается onMessage.
а вокруг кода создания формы
а именно вот этой строчки
{$IFDEF KOL_MCK}
{$I KOLLCDG15Main_1.inc}
{$ENDIF}

делается обвязка
{$IFDEF KOL_MCK}
procedure NewForm1( var Result: PForm1; AParent: PControl );
{$ENDIF}
{$I KOLLCDG15Main_1.inc}
begin
if createform then begin NewForm1( Result, AParent );end;
end;
{$ENDIF}

таким образом можно вставить условие непосредственно перед созданием формы.  в данном случае через глобальную createform:boolean;

Есть одна сложность. МСК постоянно переделывает этот код вставляя {$ENDIF} при каждом ребилде.

А второй способ это создать два приложения...
но и тот и другой имеет недостатки.


 
Дмитрий К ©   (2007-11-27 09:35) [5]

Applet + форму убрать из автоматически создаваемых.


 
Barloggg   (2007-12-06 15:23) [6]

гм. при создании формы приложение через раз подвисает. И выдает на экран недорисованное окно. чтобы это значило? причем сообщение о ошибке не выводит.


 
FreGL ©   (2007-12-10 17:39) [7]

помоему тут проще надо делать через сервис
основное приложение делается как системная служба,
а второе приложение делается как форма, которая имеет доступ к настройкам, либо же, в первом приложении сделать хук на отлов какой то комбинации клавиш, и уже в этом обработчике сделать рантайм форму, отобразить, принять данные и уничтожиться. форму мона в дллку закинуть.
можно конечно через КОМ обьекты , но во первых в них я тебе не советчик, во вторых скорее всего это муторное дело в КОЛе...



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

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

Наверх




Память: 0.49 MB
Время: 0.012 c
2-1231303960
Лазарь
2009-01-07 07:52
2009.02.15
Как заставит программу работать автоматически?!


15-1229778455
Knight
2008-12-20 16:07
2009.02.15
Turbo Delphi... что за шляпа...


2-1231224543
Igor'
2009-01-06 09:49
2009.02.15
Как узнать название поля DBGridEh -где изменилось значение?


15-1228987015
ЗапомниСынок
2008-12-11 12:16
2009.02.15
DLINK DIR-400


15-1229799253
fil
2008-12-20 21:54
2009.02.15
Выделение "компонентов"