Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.04 c
3-1081939231
31512
2004-04-14 14:40
2004.04.11
TClientDataSet.ApplyUpdates(0) & TClientDataSet.Refresh


3-1081689688
Smile)))
2004-04-11 17:21
2004.04.11
Выделить в DBGRID всю строку


3-1079035705
leonid2
2004-03-11 23:08
2004.04.11
Почему в DBGrid русские символы заменяются на ###. Что делать?


6-1075797279
cherep
2004-02-03 11:34
2004.04.11
ssh


7-1075907613
Falendysh
2004-02-04 18:13
2004.04.11
Работа с диском





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