Вопрос № 18232: Здравствуйте!
Есть ДЛЛка в которой находится форма. И есть приложение которое должно получить данные от формы.
Главное приложение > данные > DLL > перенаправление данных в форму DLL (выполняет в форме несколько процедур, работает с ...Вопрос № 18238: Ув. Эксперты!
Пишу на Delphi6.
Дано- по заданным значениям массива строится Series
Надо- На RunTime, кликая по Series, выделить какую-либо точку Series, удерживая нажатой кпопку мыши, изменить положение выделенной точки Series. При отпуск...Вопрос № 18256: Не подскажете, как сохранить массив картинок (битмапов)?
Я пытался объявить массив состоящий из TBitmap и сохранять его через
write(Файл, номер элемента в массиве), но ничего не сохраняется, возможно, я просто не знаю, что из этого класса (TB...
Вопрос № 18232
Здравствуйте!
Есть ДЛЛка в которой находится форма. И есть приложение которое должно получить данные от формы.
Главное приложение > данные > DLL > перенаправление данных в форму DLL (выполняет в форме несколько процедур, работает с компонентами формы) > форма обрабатывает данные > передает данные приложению.
Помогите пожалста с этим разобраться. ОЧЕНЬ НУЖНО!
Заранее Спасибо!
Отправлен: 13.03.2005, 19:00
Вопрос задал: John (статус: Посетитель)
Всего ответов отправлено: 4
Отвечает: Malish
Здравствуйте, John!
Я так понимаю, что есть *.dll, уже написанная и есть описание. Тогда все просто надо проинициализировать функции *.dll в приложении это делается так :
procedure(function) <название> (переменные если есть) ; external '*.dll' и можно с ними работать какбуд-то они уже у тебя в проге
но важно что бы эти функции или процедуры бали открыты в самой *.dll, а это делается так:
после всех функций, перед begin и end, были записаны exports <имя процедуры>.
Ответ отправил: Malish (статус: 2-ой класс)
Отправлен: 13.03.2005, 19:47
Отвечает: Delphin
Здравствуйте, John!
Вызвать функциию программы из DLL нельзя. Можно просто сделать в DLL'ke функцию и ввиде результата её получать данные. Или можно попробовать использовать WM_USER+*
сообщения. Это сообщения виндовс я не помню но вроде максимум может нести в себе 3 результата.
Ответ отправил: Delphin (статус: 1-ый класс)
Отправлен: 13.03.2005, 20:09
Отвечает: sir henry
Здравствуйте, John!
Непонятно, что конкретно нужно?
Запустить форму из DLL?
Вы не умеете работать с формой?
Передача данных между компонентами одного и того же приложения?
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 14.03.2005, 07:01
Отвечает: Boriss
Здравствуйте, John!
Есть такая статья по работе с библиотеками "Использование и создание DLL в Delphi". Видели?
http://www.delphimaster.ru/articles/usedll/index.html
Там есть раздел "Пример 4. Размещение формы в DLL"
Ответ отправил: Boriss (статус: Профессор)
Отправлен: 15.03.2005, 14:59
Вопрос № 18238
Ув. Эксперты!
Пишу на Delphi6.
Дано- по заданным значениям массива строится Series
Надо- На RunTime, кликая по Series, выделить какую-либо точку Series, удерживая нажатой кпопку мыши, изменить положение выделенной точки Series. При отпускании кнопки мыши, новое положение точки изменяет значение соответствующего элемента
в массиве.
Вопрос- Какое свойство Series отвечает за выделение и изменение
положения точки Series. Если такого св-ва нет, подскажите как
переписать Series для получения нужного результата.
P.S. Подскажите ссылки на сайты, где рассматриваются численные методы решения задач физики.
Отправлен: 13.03.2005, 20:28
Вопрос задал: JStudent (статус: Посетитель)
Всего ответов отправлено: 2
Отвечает: Malish
Здравствуйте, JStudent!
Есть предложение сделать так:
Chart>Events>OnMouseDown> появляется процедура.
есть такая функция Series1.GetCursorValues(a,b); где a,b : double;
можешь получить кординаты точкии запомнить, при повторном нажатии получаешь новые координаты и подставляешь в массив вместо уже имеющейся и перерисовываешь Series1.Update. Вот только эффекта таскания точки не будет.
Ответ отправил: Malish (статус: 2-ой класс)
Отправлен: 13.03.2005, 21:08
Отвечает: Boriss
Здравствуйте, JStudent!
1) Готового нет (как в Excel), но ведь можно отслеживать перемещение мыши с тех пор, как она была нажата на точке (с радиусом захвата некоторым) - а потом, используя масштаб пересчитываешь, записывешь в исходные данные - и обновляешь серию
2) А что именно интересует, какие разделы - ведь математика-то одна и та же, "массы" разные. Кстати, "сколькимерное" моделирование Вас интересует? Если есть возможность, то посмотрите Matlab - там есть PDETool - и к нему справка с подробным описанием применения пакета решения уравнений в частных производных (PDE) для нескольких проблем физики
Ответ отправил: Boriss (статус: Профессор)
Отправлен: 15.03.2005, 14:25
Вопрос № 18256
Не подскажете, как сохранить массив картинок (битмапов)?
Я пытался объявить массив состоящий из TBitmap и сохранять его через
write(Файл, номер элемента в массиве), но ничего не сохраняется, возможно, я просто не знаю, что из этого класса (TBitmap) сохранять (я пытался сохранить весь TBitmap).
В TBitmap вроде есть сохранение картинки в файл, конкретный файл, но я хотел бы сохранить массив одинаковых (по ширине, длине, глубине - размеру) картинок в одном файле.
Как мне быть?
В Help написано, как объявлять картинки, загружать, выгружать, сохранять, выводить, но по одной картинке. Написано, как создавать картинки в ресурсах программы (но мне неизвестны картинки, которые понадобятся в процессе работы программы).
Есть еще ImageList, состоящий из картинок, но его содержимое ведь нельзя выгрузить в один файл (я не знаю, как).
Отправлен: 14.03.2005, 09:29
Вопрос задал: Большаков Сергей Владимирович (статус: Посетитель)
Всего ответов отправлено: 4
Отвечает: Bochvarov NikB
Здравствуйте, Большаков Сергей Владимирович!
Посмотри:
SerieMouseEnter(
SerieMouseLeave(
SeriesArray[1].XScreenToValue(x);
CalcXPos(
CalcYPos(
GetVertAxis.CalcYPosValue(
unit TeEngine;
-----------------
Приложение:
Ответ отправил: Bochvarov NikB (статус: 1-ый класс)
Отправлен: 14.03.2005, 11:20
Отвечает: sir henry
Здравствуйте, Большаков Сергей Владимирович!
Может быть мой совет и не совсем то, что Вам нужно, но попробуйте так:
1. Создать TImageList
2. Загрузить в него картинки с помощью метода Add()
3. Создать файл типа TImageList
4. С помощью Write выгрузить в него TImageList
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 14.03.2005, 11:36
Отвечает: Malish
Здравствуйте, Большаков Сергей Владимирович!
Есть такое предложение - создать диафильм.
Делается это просто:
делаешь новый BitMap - массив
Bitmap_All:= TBitmap.Create;
Bitmap_All.Height:=M; //М- высота картинки
Bitmap_All.Width:=N*n; //N - ширина картинки, n - кольчество картинок
Bitmap_All.IgnorePalette := true;
//=====самое интересное===========
//совмещаем массив BitMap-массивов в один
for i:= 0 to n-1 do
begin
for X:=0 to N-1 do
for Y:=0 to M-1 do
Bitmap_All.Canvas.Pixels[X+i*N,Y]:= Bitmap[i].Canvas.Pixels[X,Y]; //X,Y - координаты
end;
Все, а сохранять через SavePictureDialog и у тебя получается много картинок в одной ;)
Удачи!!!!!!!!
Ответ отправил: Malish (статус: 2-ой класс)
Отправлен: 14.03.2005, 19:42
Отвечает: Shizuku Tsukishima
Здравствуйте, Большаков Сергей Владимирович!
Попробуйте следующий алгоритм.
Перед сохранением, картинки извлекаются из массива и склеиваются в одну (такая операция называется split), получается картинка наподобие мозаики.
Не забудьте создать новый TBitMap для этой "большой" картинки.
Теперь смело используйте стандартный метод этого нового BitMap для сохранения его содержимого на диск.
-----
Используя то, что все элементы нашей мозаики одинаковой размерности, легко повернуть процесс вспять: читаем наш большой bmp в TBitMap и пользуясь стандартными фукциями и методами по обработке BitMap.Canvas "разрезаем" картинку на прямоугольники исходных картинок (копируем/вставляем). Заполняете свой массив. Всё.
Ответ отправила: Shizuku Tsukishima (статус: 3-ий класс)
Отправлен: 15.03.2005, 13:01