Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-80848
Ник
2002-04-12 22:00
2002.04.25
Не могу разобраться


1-81006
DenKop
2002-04-12 21:50
2002.04.25
Даты!!!


1-80982
lipskiy
2002-04-11 00:23
2002.04.25
Почему иногда перестает работать всплывающая подсказка в IDE?


1-80886
Beginner
2002-04-14 03:31
2002.04.25
Вывод real чисел на экран


1-80984
Sat7
2002-04-12 11:59
2002.04.25
Есть дерево. Но не бинарное. :)





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