Главная страница
    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.008 c
1-80845
konusov
2002-04-13 00:37
2002.04.25
Как изменить дату создания файла?


3-80749
Fareader
2002-03-25 15:46
2002.04.25
Глюк DBGridEh


1-80961
EternalWonderer
2002-04-11 12:52
2002.04.25
IIF


3-80789
Shaman
2002-04-04 08:02
2002.04.25
Подскажите какой-нибудь аналог TRXMemoryData для Delphi6


3-80816
B_A_V
2002-04-03 17:03
2002.04.25
Оператор select c выборкой по дате





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