Главная страница
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.027 c
7-81090
Hel
2002-01-30 15:20
2002.04.25
Регистрация библиотеки программным путем?


4-81109
SuperBizon
2002-02-20 17:36
2002.04.25
Bitmap


3-80777
Sewix
2002-04-04 12:05
2002.04.25
Б Д не работает на другом компе


7-81091
CAHEK
2001-10-19 20:52
2002.04.25
Войти в Win2k под определённым юзером


1-80908
Ivan Kohut
2002-04-14 21:12
2002.04.25
Проблема с TFileStream