PDA

View Full Version : سوال: نحوه استفاده از SysInfo Control در دلفي يا سي بيلدر



hkiani
دوشنبه 10 تیر 1387, 10:39 صبح
با سلام

من مي‌خواهم در برنامه‌ام اطلاعاتي در مورد قسمت‌هاي مختلف پنجره‌ها از قبيل پهنا يا ارتفاع اسكرول بارها و يا ارتفاع نوار وظيفه در ويندوز بدست بياورم.

بعد از بررسي‌هاي متعدد به اين نتيجه رسيدم كه كنترل SysInfo كه در خود ويندوز وجود دارد براي همين كار است، ولي هنگام استفاده از آن با خطا مواجه مي‌شود.

من كامپوننت فوق را با استفاده از گزينه Import ActiveX Control به Component Palete اضافه كردم. هنگام افزودن كامپوننت به فرم برنامه، خطاي زير صادر مي‌شود:


License information for TSysInfo not found.
You cannot use this control in design mode.


از طريق كدنويسي هم امتحان كردم ولي اين بار در هنگام اجراء برنامه همان خطاي فوق رخ داد.



هر كدام از دوستان كه مي‌توانند من را راهنمايي كنند ممنون خواهم شد:
آيا روش بهتري براي دستابي به اطلاعات فوق (System Metrics) در ويندوز وجود دارد؟
آيا مي‌توان مشكل فوق را در استفاده از TSysInfo برطرف كرد؟
با تشكر

hkiani
دوشنبه 11 شهریور 1387, 20:19 عصر
براي يافتن اطلاعات metrics در ويندوز از قبيل پهناي اسكرول بار و... مي‌توان از تابع API زير استفاده نمود:


GetSystemMetrics(SM_CXVSCROLL);

با تغيير دادن پارامتر تابع فوق مي‌توان اندازه‌هاي مختلفي در محيط ويندوز بدست آورد. در صورتي كه بخواهيم علاوه بر اطلاع از اندازه‌هاي فوق آن‌ها تغيير نيز بدهيم از تابع زير استفاده مي‌كنيم:


SystemParametersInfo()
The SystemParametersInfo function queries or sets systemwide parameters. This function can also update the user profile while setting a parameter.
BOOL SystemParametersInfo(
UINT uiAction, // system parameter to query or set
UINT uiParam, // depends on action to be taken
PVOID pvParam, // depends on action to be taken
UINT fWinIni // user profile update flag
);
uiAction:
SPI_GETNONCLIENTMETRICS Retrieves the metrics associated with the nonclient area of nonminimized windows.
pvParam:
The pvParam parameter must point to a NONCLIENTMETRICS structure that receives the information.
cbSize:
Set the cbSize member of this structure and the uiParam parameter to sizeof(NONCLIENTMETRICS)
typedef struct tagNONCLIENTMETRICS {
UINT cbSize;
int iBorderWidth;
int iScrollWidth;
int iScrollHeight;
int iCaptionWidth;
int iCaptionHeight;
LOGFONT lfCaptionFont;
int iSmCaptionWidth;
int iSmCaptionHeight;
LOGFONT lfSmCaptionFont;
int iMenuWidth;
int iMenuHeight;
LOGFONT lfMenuFont;
LOGFONT lfStatusFont;
LOGFONT lfMessageFont;
} NONCLIENTMETRICS, FAR* LPNONCLIENTMETRICS;

vcldeveloper
دوشنبه 11 شهریور 1387, 21:18 عصر
از طريق كدنويسي هم امتحان كردم ولي اين بار در هنگام اجراء برنامه همان خطاي فوق رخ داد.
خب، خودش داره میگه که! نسخه ایی که دارید استفاده می کنید احتیاج به لایسنس داره، یعنی باید بخریدش.


من مي‌خواهم در برنامه‌ام اطلاعاتي در مورد قسمت‌هاي مختلف پنجره‌ها از قبيل پهنا يا ارتفاع اسكرول بارها و يا ارتفاع نوار وظيفه در ويندوز بدست بياورم.
اینا رو می تونید با استفاده از توابع API ویندوز بدست بیارید.

hkiani
چهارشنبه 20 شهریور 1387, 17:27 عصر
مثل اينكه پست قبلي رو نخوندين!