|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.08.2007, 16:40 | #1 |
Пользователь
Регистрация: 08.01.2007
Сообщений: 30
|
DLL:переменная-ссылка на компонент формы
Это опять я.
Граждане! У меня такая проблемма: пишу программу с использованием DLL-библиотеки(dll-ку хочу сделать универсальной для всех моих программ), в принципе всё что задумал почти всё выполнил, но работа библиотеки заключается в управлении компонентами на форме, к которой она подключена. Так как же мне всё таки передать в подключаемую функцию компонент или ссылку на него, чтобы все его свойства и методы были доступны и там
Я не волшебник, я только учусь!
|
02.08.2007, 16:58 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Создай в ДЛЛ переменку типа TFormXX (как в юните) и передавай ей через Поинтер, которй потом разименовывай.
I'm learning to live...
|
02.08.2007, 17:21 | #3 | |
детский тренер
Форумчанин
Регистрация: 08.06.2007
Сообщений: 532
|
Цитата:
function Sum(x,y:integer): integer;Stdcall; В самой dll делаешь exports sum или можно еще индекс влупить (exports sum index 11), после чего обращение по индексу, а не по имени..... В главной форме после implemention объявляешь : function Sum;external 'имя ДЛЛ .dll' name Sum.... Тут ты говоришь, что функция внешняя и берется из dll .... указываешь имя dll... Ну а в саму функцию передавай нужные переменные....
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp
Последний раз редактировалось Pitbull; 02.08.2007 в 17:23. |
|
02.08.2007, 17:26 | #4 | |
детский тренер
Форумчанин
Регистрация: 08.06.2007
Сообщений: 532
|
Цитата:
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp
|
|
02.08.2007, 17:33 | #5 | |
Пользователь
Регистрация: 08.01.2007
Сообщений: 30
|
Цитата:
Или я что-то не понял?
Я не волшебник, я только учусь!
Последний раз редактировалось Саня; 02.08.2007 в 17:45. Причина: Не дописал |
|
03.08.2007, 08:48 | #6 |
детский тренер
Форумчанин
Регистрация: 08.06.2007
Сообщений: 532
|
Ну , TFormXX - это ссылка на твою форму, которая будет передавать данные.... Например , TForm1.....
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp
|
03.08.2007, 09:15 | #7 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Вот смотри примерно так :
Это форма: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; procedure q(rr:Tform1); external 'Project2.dll'; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin q(form1); end; end. А Это Библа : library Project2; uses unit1, SysUtils, Classes; {$R *.res} procedure q(rr:Tform1); begin rr.Caption:='ss'; end; exports q; begin end. Попробуй так. Ну а насчет указателей это зависит от задачи.
I'm learning to live...
|
03.08.2007, 09:51 | #8 |
детский тренер
Форумчанин
Регистрация: 08.06.2007
Сообщений: 532
|
Там еще б stdCall не помешало...Просто Вашу Dll могут юзать Visual С++ программеры ... И у них могут возникнуть проблеммы с вызовом такой dll..... Для избежания - stdcall
unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; procedure cap(r:Tform);stdcall; var Form1: TForm1; implementation procedure cap(r:Tform); external 'Project3.dll'; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin cap(form1); end; end. library Project3; uses SysUtils, Classes,unit2; procedure cap(r:TForm1);stdCall; begin r.caption:='dfdfdfd'; end; exports cap; {$R *.res} begin end.
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp
Последний раз редактировалось Pitbull; 03.08.2007 в 09:54. |
03.08.2007, 10:18 | #9 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Согласен. Лень, батенька, чтука сильная, особенно когда руками по Клаве...
I'm learning to live...
|
03.08.2007, 10:38 | #10 |
Пользователь
Регистрация: 08.01.2007
Сообщений: 30
|
Огромное, просто огромное спасибо!!!
Всё работает! Есть пару ньюансов с подключением собственных модулей, но я разберусь.
Я не волшебник, я только учусь!
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Динамическая переменная | kezman | Общие вопросы C/C++ | 1 | 29.07.2008 13:49 |
Как программно удалить компонент от формы или другого компонента (контейнера)? | SkAndrew | Общие вопросы Delphi | 3 | 27.05.2008 15:20 |
Перемещение формы за компонент | Zeraim | Общие вопросы Delphi | 2 | 20.05.2008 09:26 |
Как убрать/уничтожить с формы компонент TImage? | ZhekON | Общие вопросы Delphi | 11 | 11.03.2008 17:28 |