Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизИспользование 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.049 c