PDA

View Full Version : چطوری میتونم ScrollBar عمودی لیست باکس رو حذف کنم؟



Delphi-Man
جمعه 14 خرداد 1389, 16:07 عصر
سلام
چطوری میتونم ScrollBar عمودی لیست باکس رو حذف کنم؟

vcldeveloper
جمعه 14 خرداد 1389, 17:34 عصر
می تونید یک کلاس جدید از TListBox مشتق کنید که Scrollbar عمودی نداشته باشه:


type
TMyListBox = class(TListBox)
protected
procedure CreateParams(var Params: TCreateParams); override;
end;


procedure TMyListBox.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.Style := Params.Style - WS_VSCROLL;
end;

Delphi-Man
جمعه 14 خرداد 1389, 19:03 عصر
با تشکر آقای کشاورز.
راهی هست که بشه بدون CreateParams اینکار رو انجام داد یعنی Realtime باشه. مثلا با یه دکمه نمایش داده بشه با یه دکمه مخفی بشه؟

vcldeveloper
شنبه 15 خرداد 1389, 00:24 صبح
راهی هست که بشه بدون CreateParams اینکار رو انجام داد یعنی Realtime باشه. مثلا با یه دکمه نمایش داده بشه با یه دکمه مخفی بشه؟
برای تغییر Style پنجره ها از تابع SetWindowLong استفاده میشه، اما نمیشه هر Styleایی رو به این صورت تغییر داد، و بعضی از Styleها فقط در زمان ایجاد شی مربوطه موثر هستند. تا جایی که خاطرم هست، WS_VSCROLL از جمله Styleهایی هست که با تغییر Style از طریق SetWindowLong عمل نمی کنند، و باید در زمان ساخت پنجره مقداردهی بشند.