Текущий архив: 2006.04.02;
Скачать: CL | DM;
ВнизVCL в библиотеке Найти похожие ветки
← →
Александр Б. (2006-03-16 09:58) [0]День добрый.
Столкнулся с проблеммой невозможности скрыть кнопку окна, для лучшего понимания приведу простой пример.
И так: создаю проект, на форму кладу кнопку, в событии кнопки выводу showmessage, запускаю - мессадж выводится модельно, на панели задач - онна кнопка - приложения.
Изменяю dpr файл следующим образом
library Project1;
uses
Forms,
Unit1 in "Unit1.pas" {Form1};
{$R *.res}
procedure x;
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
exports x;
end.
тоесть делаю из проекта библиотеку
делаю программу для запускаprogram xx;
procedure x; external "Project1.dll";
begin
x;
end.
запускаю, жму кнопку на форме, и ... вижу на понели задач две(!) кнопки :(
Тоесть для showmessage создалась еще одна кнопка! и так для каждого окна в моей библиотеке создается новая кнопка.
Возможноли решить данную проблемму, если да, то как?
← →
Александр Б. (2006-03-16 10:23) [1]Хотел бы уточнить, что библиотека будет впоследствии грузиться не из delphi приложения, такчто вариант с передачей объектов application и screen не подходит, как и использование bpl. Если возможно, хотелось бы попробывать другое решение.
← →
Сергей М. © (2006-03-16 10:29) [2]Что мешает передавать в ДЛЛ хэндл главного окна хост-приложения ?
см. справку
Handle property (TApplication)
> Application.Initialize;
Это следует делать в процедуре иниц-ции библиотеки, а не в теле эксп.ф-ции.
> Application.Run;
А это вообще убери.
← →
Александр Б. (2006-03-16 10:58) [3]
> Сергей М. © (16.03.06 10:29) [2]
Прочтите пожалуйста мое второе сообщение.
> > Application.Run;
>
> А это вообще убери.
Зачем? Оно так надо.
И ТАК ВОПРОС НЕ ЗАКРЫТ, БЕЗ ПЕРЕДАЧИ ХЕНДЛОВ и BPL РЕШИТЬ ПРОБЛЕММУ МОЖНО?
Просьба к модераторам переместить тему назад, с учетом второго моего уточнения.
← →
Сергей М. © (2006-03-16 11:04) [4]
> Прочтите пожалуйста мое второе сообщение
В нем идет речь о передаче объектов Application и Screen, а не о передаче хендлов (что вовсе не возбраняется при данных условиях).
> Зачем? Оно так надо
С какого перепугу ?
Ты вообще представляешь себе, что, как, почему и при каких условиях происходит в методе Run() ?
> БЕЗ ПЕРЕДАЧИ .. BPL
Никто не заставляет тебя передавать какие-либо BPL - библиотека, будучи собранная без ран-тайм пакетов, в них как правило не нуждается.
← →
Desdechado © (2006-03-16 11:05) [5]Application.Handlе явдяется вполне законным виндовым хэндлом, который может передаваться любой программой, а не только Дельфийской
← →
Александр Б. (2006-03-16 11:13) [6]
> Сергей М. © (16.03.06 11:04) [4]
>
> > Прочтите пожалуйста мое второе сообщение
>
> В нем идет речь о передаче объектов Application и Screen,
> а не о передаче хендлов (что вовсе не возбраняется при
> данных условиях
Сергей, я же просил прочитать, программа написана, не НА ДЕЛФИ, в хост приложении нет никаких обьектов апликейшен и скрин, потомучто программа написана не на делфи.
> > Зачем? Оно так надо
>
> С какого перепугу ?
> Ты вообще представляешь себе, что, как, почему и при каких
> условиях происходит в методе Run() ?
Вы бы пример изучили, я ведь код привел, там ведь все понятна, очередь сообщений находится в библиотеке...
> > БЕЗ ПЕРЕДАЧИ .. BPL
>
> Никто не заставляет тебя передавать какие-либо BPL - библиотека,
> будучи собранная без ран-тайм пакетов, в них как правило
> не нуждается.
Ну хоть за это спасибо :) если чесно то я просто конкретезировал условия задачи чтобы небыло ненужных телодвижений в неподхдящие мне стороны. :)
В любом случае Сергей спасибо за попытку помочь, хотя я рекомендовал бы в следующий раз быть внимательнее.
И так правильный ответ следующий, в экспортируемой функции надо было вызывать
Application.CreateHandle;
вот так вот...
← →
Александр Б. (2006-03-16 11:16) [7]
> Desdechado © (16.03.06 11:05) [5]
> Application.Handlе явдяется вполне законным виндовым хэндлом,
> который может передаваться любой программой, а не только
> Дельфийской
Опять 25, люди откуда передаваться то? :))) ну вы блин даете...
Ладно тема закрыта, всем спасибо.
PS читайте внимательнее, по русски ведь пишу, с ошибками но по русски :)
← →
Сергей М. © (2006-03-16 11:35) [8]
> Александр Б. (16.03.06 11:13) [6]
> я же просил прочитать, программа написана, не НА ДЕЛФИ,
> в хост приложении нет никаких обьектов апликейшен и скрин,
> потомучто программа написана не на делфи
Ну а кто ж от тебя требует, чтобы эти объекты там, в хост-приложении, обязательно были ? По-моему никто ..
Но если хост-приложение имеет главное окно, то ничто не мешает при вызове эксп.ф-ции передать в нее параметром хэндл этого окна, который может быть назначен безо всяких проблем св-ву Application.Handle в теле эксп.ф-ции... Это вместо того чтобы плодить лишние верхнеуровневые окна вызовом Application.CreateHandle
> очередь сообщений находится в библиотеке
Очередь сообщений находится не в библиотеке, не в хост-приложении и не наЛуне, а в системе... И не одна она там, а несколько их для каждого существующего окна ...
В приложении же, будь то EXE или DLL, находится цикл ожидания/выборки/диспетчеризации сообщений ... Согласись, очередь и цикл - вещи, мягко говоря, не совсем одинаковые ...
Я не вижу смысла в дан.контексте создавать собственное окно (для объекта Application) и организовавать упомянутый цикл, если таковые уже имеются в хост-приложении и их можно с легкостью задействовать передачей хэндла.
← →
Александр Б. (2006-03-16 12:37) [9]
> Но если хост-приложение имеет главное окно
"если"
у меня нет такого окна...
> Очередь сообщений находится не в библиотеке, не в хост-приложении
Давайте не будем демогогию разводить, я думаю вы меня поняли
> Я не вижу смысла в дан.контексте создавать собственное окно
> (для объекта Application) и организовавать упомянутый цикл,
> если таковые уже имеются в хост-приложении и их можно с
> легкостью задействовать передачей хэндла.
опять "если"
у меня этого цикла нет...
вот эти два если вы откдулато придумали :) на основании этих если придумали какието решения... а стоило всеголиш прочесть вопрос вимательно :)
← →
Сергей М. © (2006-03-16 12:57) [10]
> всеголиш прочесть вопрос вимательно
Да нет) .. Всего лишь стоило максимально подробно изложить свои ИД .. Мол, я знать не знаю ни про какие окна в хост-приложении, и вообще хост-приложение в общем случае может не являться GUI-приложением и не создавать никаких окон.
← →
Александр Б. (2006-03-16 13:17) [11]несогласен, но спорить не буду.
в потрепаться...
Страницы: 1 вся ветка
Текущий архив: 2006.04.02;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.041 c