पर WM_COMMAND के साथ समस्या मेरे पास मेनमेनू के साथ फ़ॉर्म है और जब मैं मेनू से कमांड आइटम चुनता हूं तो मैं अवरोध करना चाहता हूं। यह डेल्फी में काम करता है:लाज़र/एफपीसी
type
TForm1 = class(TForm)
... // Memo and MainMenu created
protected
procedure WMCommand(var Info: TWMCommand); message WM_COMMAND;
end;
procedure TForm1.WMCommand(var Info: TWMCommand);
begin
if (Info.ItemID < 10) then
Memo1.Lines.Add('WMCommand ' + IntToStr(Info.ItemID));
end;
mainmenu में मैं कुछ आइटम जोड़ा गया है और जब मैं मेनू से उन वस्तुओं का चयन तो मेरी Memo1 से भर जाता है:
WMCommand 2
WMCommand 3
WMCommand 3
WMCommand 2
WMCommand 5
...
मैं पांचवें वेतन आयोग/लाजर के लिए इस आवेदन भेजा , लेकिन ऐसा लगता है कि WM_COMMAND हैंडलर नहीं कहा जाता है! जब मैंने डेल्फी में TForm1.WMCommand
में ब्रेकपॉइंट सेट किया तो मुख्य रूप से दिखाई देने से पहले डेल्फी कई बार रुक गया। लाजर ने इस ब्रेकपॉइंट पर को कभी नहीं रोका। मुझे लगता है कि लाजर में WM_COMMAND के साथ कुछ टूटा हुआ है, लेकिन हो सकता है कि मुझे कुछ पता न हो। कोई उपाय?
मैं WinXP पर एफपीसी 2.2.4 के साथ लाजर 0.9.28.2 बीटा का उपयोग करता हूं।
संपादित करें:
Winspector का उपयोग करते हुए मैं जाँच की है कि mainmenu उत्पन्न WM_COMMAND:
WM_COMMAND
Code: 0
Control ID: 2
Control HWND: 0x00000000
Message Posted
Time: 09:37:14.0968
मुझे लगता है कि WM_COMMAND संदेश विधि से निपटने में लाजर/पांचवें वेतन आयोग में बग है और मैं इसे सूचना: http://bugs.freepascal.org/view.php?id=15521
क्या यह संभवतः एक बग/अनुपलब्ध सुविधा नहीं है जो LM_COMMAND और CN_COMMAND भी काम नहीं करता है, घटना के पोर्टेबल स्तर पर आईओ कैप्चरिंग संभव नहीं है? –