Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.02.10;
Скачать: [xml.tar.bz2];

Вниз

Взаимодействие объектов   Найти похожие ветки 

 
Николай В.   (2003-01-31 14:06) [0]

Уважаемые Мастера!
Подскажите, пожалуйста как реализовать следующее.
Есть MainForm из нее вызывается некая функция из подключенной моей DLL.
Как на MainForms показать прогресс выполнения этой функции (как передать значение из DLL в MainForms.ProgressBar)?
Зарание благодарен.


 
malkolinge   (2003-01-31 14:33) [1]

Говорят есть функции обратного вызова !


 
Николай В.   (2003-01-31 15:50) [2]

Как можно обратиться к компоненту через указатель?
Или как иначе?


 
malkolinge   (2003-01-31 16:06) [3]


> Как можно обратиться к компоненту через указатель?

Запрсто :) просто если передавать указатель в длл будет много беды :
надо либо БПЛ использовать, либо ШареМем включать.....короче сам не знаю толком :)


 
Набережных С.   (2003-01-31 18:23) [4]

Описываешь прототип функции обратного вызова:

TProgressCallback = function(Percent: DWORD; Value: Pointer): bool; stdcall;

Из DLL экспортируешь процедуру:

procedure SomeProcedure(Param1, Param2: DWORD; CallbackPrc, Value: Pointer); stdcall;
var
Percent: DWORD;
begin
Percent:=0;
//Что-то делаешь
Percent:=//Вычисляешь процент
if not TProgressCallback(CallbackPrc)(Percent,Value) then Exit;

//Что-то делаешь
Percent:=//Вычисляешь процент
if not TProgressCallback(CallbackPrc)(Percent,Value) then Exit;

// и т.д.
end;

В приложении пишешь функцию:

function MyCallback(Percent: DWORD; Value: TProgressBar): bool; stdcall;
begin
Value.Position:=Percent;
Application.ProcessMessages;
Result:=not Application.Terminated;
end;

И вызываешь процедуру из DLL:

begin
ProgressBar.Position:=0;
SomeProcedure(Mydata1,Mydata2,@MyCallback,ProgressBar);
end;


 
Anatoly Podgoretsky   (2003-01-31 18:36) [5]

Вся виндоуст построена на событиях, почему бы и тебе так не поступить?



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

Форум: "Основная";
Текущий архив: 2003.02.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.01 c
1-28742
Wolfhound
2003-02-01 00:29
2003.02.10
Почта


1-28755
race1
2003-02-01 11:28
2003.02.10
vcl50


1-28772
Alex
2003-02-01 14:14
2003.02.10
TStringgrid


7-29115
D.V.K
2002-11-28 15:34
2003.02.10
Как ускорить чтение и обработку данных из больших файлов


14-29001
Supreme
2003-01-23 23:59
2003.02.10
Фильмосоздание





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