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

Вниз

Использование TChart в DLL - ругается на Parent или ParentWindow   Найти похожие ветки 

 
TALLA ©   (2004-03-23 18:42) [0]

Parent присвоить нечего, поэтому юзаю ParentWindow:

ругается, что Canvas not allowed drawing (???)
Var Chart:TChart;

Chart:=TChart.Create(nil);
Chart.Name:="Chart";
Chart.ParentWindow:=Canvas.handle;

Как использовать Chart в таком случае???


 
Юрий Зотов ©   (2004-03-23 19:25) [1]

Canvas.Handle - это дескриптор контекста устройства (DC).
ParentWindow - это дескриптор ОКНА. Совсем другая вещь.

Что значит - "Parent присвоить нечего"? Есть же окно, на котором Chart должен быть дочерним? Видимо, есть. А у этого окна есть тот самый Handle, который и нужен.


 
TALLA ©   (2004-03-23 22:09) [2]

То и значит, что в DLL(или CGI) вроде бы нечего присвоить для Parent.
подсовывал TBitmap.handle: System Error. Code: 1400. Invalid window handle.
создавал TWinControl: Control "" has no parent window.

Какой объект нужно создать с типом handle - HWND?


 
Юрий Зотов ©   (2004-03-23 22:18) [3]

> TALLA ©   (23.03.04 22:09) [2]

Форму Delphi или окно Windows.

На чем Ваш Chart лежать будет? Не в воздухе же болтаться? Вот это и есть его родительское окно.


 
TALLA ©   (2004-03-23 22:52) [4]

Ну не будет он ни на чем лежать, в первых же строчках видно:

Var Chart:TChart;

Chart:=TChart.Create(nil);

Смысл в том, чтобы сохранить картинку с Chart в файл. Отображать ни на чем не надо.


 
Юрий Зотов ©   (2004-03-23 23:19) [5]

> TALLA ©   (23.03.04 22:52) [4]

1. В первых строчках видно, что Owner=nil. Из этого вовсе не следует, что и лежать он ни на чем не будет. Owner и Parent - вещи совершенно разные.

2. Попробуйте
Chart.ParentWindow := GetDesktopWindow;


 
TALLA ©   (2004-03-23 23:56) [6]

Работает, но только если место на десктопе свободно:) если занята часть, то и график частичный:)
CreateWindow мне поможет?


 
Юрий Зотов ©   (2004-03-24 00:19) [7]

Поможет (только делать надо как положено, с RegisterClass и оконной процедурой).

Но Вы же хотите ничего не показывать? А уж если показывать, то гораздо проще будет создать форму и на нее водрузить Chart (все в коде, естественно).


 
TALLA ©   (2004-03-24 06:05) [8]

Форму создал Form:=TForm.Create(nil); ... Form.Release;
Задал Left,Top,Width,Height у Chart,  Width,Heigth у формы.
Изображение не создается - размеры задаются, но без содержимого.

Решил пойти путем WinExec(,SW_HIDE), FindWindow(,), SendMessage(,WM_CLOSE);
Т.е. запускать свою прогу с пустой формой, ее задавать ParentWindow, потом закрывать.


 
TUser ©   (2004-03-24 06:41) [9]

Как вариант - создать в DesignTime эту форму и кидать на нее график, но не показывать.

> Изображение не создается - размеры задаются, но без содержимого.

Что это значит? Чего там нет - чарта, точек на чарте или чего-то еще. Или точнее - что есть? Графику надо еще присваивать Parent:=Form1;


 
TALLA ©   (2004-03-24 13:11) [10]

>TUser
У меня нет формы.
Только пустое изображение с заданными размерами
>Юрий Зотов
Вариант с WinExec не пошел, если заставка запущена, или часть формы перекрыта, то график отсутствует.


 
Юрий Зотов ©   (2004-03-24 13:47) [11]

> TALLA ©   (24.03.04 13:11) [10]

Давайте так - обрисуйте задачу. Простыми русскими словами. Вот тогда и увидим, как ее лучше решать.


 
TALLA ©   (2004-03-25 12:59) [12]

Обрисовываю:
Пишу cgi приложение, которое выдает ContentType:="image/jpeg" браузеру клиента. Следовательно, я его должен сформировать. Для рисования выбрал TChart, пока тестировал на exe файле, все было ок.
При переходе на cgi, TChart потребовал себе Parent, который мне негде взять. Десктоп (да и другие пустые приложения) в качестве ParentWindow работает только если та область, на которой рисуешь, не закрыта (частично/полностью). Иначе изображение не формируется, хотя ошибок нет.



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

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

Наверх




Память: 0.5 MB
Время: 0.037 c
8-1071565731
Mad Devil
2003-12-16 12:08
2004.04.11
Наложение изображенией


1-1082462076
msgipss
2004-04-20 15:54
2004.04.11
Для чего нужен TEvent из модуля SyncObjs


9-1069692267
Barlok
2003-11-24 19:44
2004.04.11
Вопрос по выделению объекта в OpenGL в Delphi


14-1080143655
Piter
2004-03-24 18:54
2004.04.11
FAQ: Добавление иконки в SysTray


1-1082622131
Alexey
2004-04-22 12:22
2004.04.11
Как перегнать стринг из виндосовского формата в досовски