Форум: "Основная";
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];
ВнизМлин, не могу в 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c