Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.25;
Скачать: CL | DM;

Вниз

Млин, не могу в LParam засунуть данные...   Найти похожие ветки 

 
Aleksandr ©   (2002-04-11 13:36) [0]

Суть в том, что ДатаСеты отправляют главной форме сообщения с информацией о наборе:

var
w : word;
begin
w:=Query.RecordCount;
w:=w shl 8;
w:=w OR Query.RecNo;
SendMessage(MainForm.Handle,WM_UpdateStatusBar,dfQuery,W)

а она это обрабатывает так:
case Message.Msg of
WM_UpdateStatusBar :
begin
if Message.WParam=dfQuery then begin
if Message.LParam=0 then
StatusBar.SimpleText:=""
else
StatusBar.SimpleText:=IntToStr(Message.LParamLo)+" : "+IntToStr(Message.LParamHi)
end
И нифига не получается - совсем не те цифры при "распаковке"... Чего я неправильно делаю?


 
Игорь Шевченко ©   (2002-04-11 13:56) [1]

День добрый,

LParam имеет размер не Word, а Cardinal.
LParamLo - это младший Word этого Cardinal"a, LParamHi - старший.
При вашем способе заполняется только LParamLo и то не лучшим образом, так как RecordCount и RecNo - это LongInt...

Лучше передавать адрес записи из двух LongInt, если посылающий и принимающий сообщения код находится в одном приложении.

С уважением, Игорь Шевченко


 
gek   (2002-04-11 13:59) [2]

Ну а так не получится ?
SendMessage(MainForm.Handle,WM_UpdateStatusBar,LParam(dfQuery),WParam(W))


 
PVOzerski ©   (2002-04-11 15:01) [3]

Значит, так.
Если в решаемой Вами задаче значения Query.RecordCount и Query.RecNo укладываются
в диапазон word (а в общем виде это далеко не гарантировано), то, IMHO, не сто"ит заморачиваться
с битовыми операциями, а сотворить что-нибудь такое:
type
tWholeData=packed record
case integer of
0:(RecordCount,RecNo:word);
1:(Both:lparam);
end;
var
WholeData:tWholeData;
begin
WholeData.RecordCount:=Query.RecordCount;
WholeData.RecNo:=Query.RecNo;
SendMessage(MainForm.Handle,WM_UpdateStatusBar,dfQuery,WholeData.Both);
end;
(Разборка на поля в получателе - аналогично)

Ну, а если диапазона Word на самом деле мало,
см. Игорь Шевченко © (11.04.02 13:56) (естественно, если получатель живёт в том же приложении,
что и отправитель, в противном случае тоже можно кое-что придумать, кстати :^) )


 
Aleksandr ©   (2002-04-11 17:15) [4]

Спасибо, въехал :)... Все просто, как говорится, как г... (в смысле как гениально)



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

Текущий архив: 2002.04.25;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.014 c
1-80872
NewOne
2002-04-11 17:16
2002.04.25
ServicePack`s


14-81054
Свой
2002-03-07 15:33
2002.04.25
---|Ветка была без названия|---


14-81081
VATERMAN
2002-03-20 19:56
2002.04.25
АРI-функции


1-80860
Dx7
2002-04-13 13:42
2002.04.25
DDBLTFAST_DESTCOLORKEY & fx .ddckDestColorkey .dwColorSpaceHighVa


1-80856
besen-ok
2002-04-11 10:48
2002.04.25
Компенетра на Delphi (DLL) для 1С