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

Вниз

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

 
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 вся ветка

Форум: "KOL";
Текущий архив: 2009.02.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
2-1231004012
N_SSS
2009-01-03 20:33
2009.02.15
Помогите исправить ошибку! -Координаты Х, У для события DblClick


15-1229637458
Kostafey
2008-12-19 00:57
2009.02.15
Восстановление Windows


15-1229441014
ИванН
2008-12-16 18:23
2009.02.15
Генератор случайных чисел


3-1215370641
flaxe
2008-07-06 22:57
2009.02.15
DBF


15-1229364848
Anatoly Podgoretsky
2008-12-15 21:14
2009.02.15
Касперский спамит





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский