View Full Version : سوال: راست چین کردن تب ها در دلفی 2010
صابر طهماسبی
جمعه 19 شهریور 1389, 22:44 عصر
سلام
چطور میشه در دلفی 2010 تبهای کنترل TPageControl را راست چین کرد؟
ببخشید می دونم این سوال بارها پرسیده شده، تمام تاپیک هایی را که در این مورد بحث شده بود پیدا کردم و خوندم البته خودم قبلا با نسخه های قبلی دلفی این مشکل رو داشتم که را راهنمایی دوستان حل شد اما الان با دلفی 2010 این مشکل را پیدا کردم.
جواب هایی را که تو تاپیک ها بود یکی از حالات زیر بود :
استفاده از API
استفاده از TPageControl کامپوننت raize
مقدار page width رو برای تب ها تنظیم کنید به طوری که مثلا اگه دوتا هستند و طول PageControl برابر 200 پیکسله هر کدوم از Page ها رو 100 قرار بدیم
من خودم قبلا از مورد 3 استفاده کردم ولی الان تو دلفی 2010 جواب نمی ده
ممنون اگه راهنمایی کنید
AmirSky
جمعه 19 شهریور 1389, 23:49 عصر
به نظر من استفاده از کامپوننت raize خیلی راحتر و بهتره .
در ضمن از زیبایی و امکانات بیشتر این کامپونت میتونی استفاده کنی
صابر طهماسبی
شنبه 20 شهریور 1389, 06:16 صبح
به نظر من استفاده از کامپوننت raize خیلی راحتر و بهتره .
در ضمن از زیبایی و امکانات بیشتر این کامپونت میتونی استفاده کنی
ممنون
می خوام راه حل استانداردش رو پیدا کنم
جواد ملاولی
شنبه 20 شهریور 1389, 07:31 صبح
من خودم قبلا از مورد 3 استفاده کردم ولی الان تو دلفی 2010 جواب نمی ده
چرا جواب نمیده؟ مشکلش چیه؟
صابر طهماسبی
شنبه 20 شهریور 1389, 08:23 صبح
چرا جواب نمیده؟ مشکلش چیه؟
خوب این ویژگی تو دلفی 2010 نیست!
مصطفی ساتکی
شنبه 20 شهریور 1389, 08:25 صبح
ما خودمون pagecontrol رو راست به چپ کردیم .بایستی برای اینکار DrawTab کنترل مربوطه رو Override کنید.
از جمله کارهایی که برای انجام این عمل نیازی بدست آوردن width مربوط به هر کدوم از tab هاست که با فرستادن TCM_GETITEMRECT می تونید اندازه هر کدوه از tab ها رو داشته باشید. اگر اندازه tab ها از width مربوط به کنترل کمتر باشه جهت شیفت دادن یه tab اضافی خودمون به کنترل اضافه می کنیم و موقعیت اونو صفر قرار می دیم در ضمن Disable ش هم می کنیم و یعنی مثل یه تخته فقط فضای انتها رو پر کنه و caption رو با فضای خالی پر می کنیم با توجه به فضای اضافی در آخر tab .
صابر طهماسبی
شنبه 20 شهریور 1389, 08:28 صبح
ما خودمون pagecontrol رو راست به چپ کردیم .بایستی برای اینکار DrawTab کنترل مربوطه رو Override کنید.
از جمله کارهایی که برای انجام این عمل نیازی بدست آوردن width مربوط به هر کدوم از tab هاست که با فرستادن TCM_GETITEMRECT می تونید اندازه هر کدوه از tab ها رو داشته باشید. اگر اندازه tab ها از width مربوط به کنترل کمتر باشه جهت شیفت دادن یه tab اضافی خودمون به کنترل اضافه می کنیم و موقعیت اونو صفر قرار می دیم در ضمن Disable ش هم می کنیم و یعنی مثل یه تخته فقط فضای انتها رو پر کنه و caption رو با فضای خالی پر می کنیم با توجه به فضای اضافی در آخر tab .
--------------------
ما خودمون pagecontrol رو راست به چپ کردیم .بایستی برای اینکار DrawTab کنترل مربوطه رو Override کنید.
از جمله کارهایی که برای انجام این عمل نیازی بدست آوردن width مربوط به هر کدوم از tab هاست که با فرستادن TCM_GETITEMRECT می تونید اندازه هر کدوه از tab ها رو داشته باشید. اگر اندازه tab ها از width مربوط به کنترل کمتر باشه جهت شیفت دادن یه tab اضافی خودمون به کنترل اضافه می کنیم و موقعیت اونو صفر قرار می دیم در ضمن Disable ش هم می کنیم و یعنی مثل یه تخته فقط فضای انتها رو پر کنه و caption رو با فضای خالی پر می کنیم با توجه به فضای اضافی در آخر tab .
--------------------
ما خودمون pagecontrol رو راست به چپ کردیم .بایستی برای اینکار DrawTab کنترل مربوطه رو Override کنید.
از جمله کارهایی که برای انجام این عمل نیازی بدست آوردن width مربوط به هر کدوم از tab هاست که با فرستادن TCM_GETITEMRECT می تونید اندازه هر کدوه از tab ها رو داشته باشید. اگر اندازه tab ها از width مربوط به کنترل کمتر باشه جهت شیفت دادن یه tab اضافی خودمون به کنترل اضافه می کنیم و موقعیت اونو صفر قرار می دیم در ضمن Disable ش هم می کنیم و یعنی مثل یه تخته فقط فضای انتها رو پر کنه و caption رو با فضای خالی پر می کنیم با توجه به فضای اضافی در آخر tab .
ممنون از توضیحتون
ممکنه بیشتر توضیح بدید؟
مصطفی ساتکی
شنبه 20 شهریور 1389, 08:35 صبح
شما اون کارهایی که در بالا بهش اشاره کردم رو پیاده کنید ببینید کجا با مشکل روبرو میشد اونوقت اگر جایی با مشکل روبرو شدید من راهنمایی تون می کنم.
در ضمن کلیه مواردی که نیاز بود رو در بالا ذکر کردم.
موفق باشید.
صابر طهماسبی
شنبه 20 شهریور 1389, 10:27 صبح
شما اون کارهایی که در بالا بهش اشاره کردم رو پیاده کنید ببینید کجا با مشکل روبرو میشد اونوقت اگر جایی با مشکل روبرو شدید من راهنمایی تون می کنم.
در ضمن کلیه مواردی که نیاز بود رو در بالا ذکر کردم.
موفق باشید.
ممنون
فقط قسمتی از توضیحات را متوجه شدم من کارهای زیر را انجام دادم:
سه تا page دارم برای همین caption اولی را با فضای خالی پرکردم که اون دوتا سمت راست قرارگیرند
اما یه مشکلی هست اینکه این تب که کپشن اون رو با فضای خالی پرکردم وجود داره و حالت یه تب بدون استفاده و بدون کپشن هست که من می خوام اصلا نباشه یعنی نمایش داده نشه
در ضمن تب مذکور را Disable هم کردم
اما اون بحث override را متوجه نشدم
ممنون اگه راهنمایی کنید
جواد ملاولی
شنبه 20 شهریور 1389, 13:43 عصر
خوب این ویژگی تو دلفی 2010 نیست!
پس خاصیت TabWidth چیه؟
صابر طهماسبی
شنبه 20 شهریور 1389, 14:30 عصر
از همه دوستان عذر می خوام پاک گیج شده بودم:اشتباه: من خاصیت tabWidth رو برای هر تب داخل pageControl در قسمت خواص خودش جستجو می کردم اصلا یادم نبود tabWidth مال خود TPageContol هست
از همگی ممنونم
باید ببخشید:خجالت:
moein+
یک شنبه 21 شهریور 1389, 09:41 صبح
البته استفاده از TabWidth به عنوان یه راه حل کوتاه مدت و دم دستی بد نیست و لی همون طور که دوستان گفتند برای حل کلی این مشکل PageControl یا TabControl رو باید بازنویسی کرد! :لبخند:
ولی بد نبود دوستانی که این کار رو کردند (نظر به اینکه یه خورده تکنیکی هست) می شد کد جدید رو اینجا قرار بدن تا نمونه آموزشی خوبی بشه...:لبخند:
اصولا دلفی تو این ضمینه هم کم کاری شدیدی می کنه، در حالی که تو VS شما می تونید با تغییر پروپرتی ها حتی دکمه Close فرم رو هم راست چین کنید (الی آخر)...:گریه:
مصطفی ساتکی
یک شنبه 21 شهریور 1389, 10:57 صبح
صولا دلفی تو این ضمینه هم کم کاری شدیدی می کنه، در حالی که تو VS شما می تونید با تغییر پروپرتی ها حتی دکمه Close فرم رو هم راست چین کنید (الی آخر)
با دلفی هم میشه اینکارو انجام داد.تنها مشکل دلفی اینه که نمیزاره user های تازه واردش نگران چیزی باشن ولی تو زبان vc++ این برعکسه user برنامه نویس از روز اول درگیر خیلی چیزهاست که یه user دلفی بهش فکر نمی کنه و این یه خورده بده.
اون tab اول رو تو component تون دوباره به صورت solid رسمش کنید و Disable هم که هست هیچ عکس العملی نشون نمیده.البته اینایی که گفتم و محاسبات مربوط به تعداد فضای خالی از روی اندازه tab رو بایستی در حالتی که اندازه page تغییر میکنه یا tab ی اضافه میشه مجدداً بایستی set بشه.
موفق باشید.
moein+
دوشنبه 22 شهریور 1389, 23:43 عصر
سلام،
دوستی فرموده بودند...
با دلفی هم میشه اینکارو انجام داد.تنها مشکل دلفی اینه که نمیزاره user های تازه واردش نگران چیزی باشن ولی تو زبان vC++ این برعکسه user برنامه نویس از روز اول درگیر خیلی چیزهاست که یه user دلفی بهش فکر نمی کنه و این یه خورده بده.
خب به نظر ینده، خاصیت دلفی به عنوان یک زبان سطح بالا همین هست که شما رو زیاد درگیر پلتفرم نکنه! و اگر کمی دقت کنید به همین خاطره که در سطح بندی ها حداقل یک سطح بالاتر از VC++ قرار می گیره و این به امر که از دید اون دوست عزیز نوعی ممانعت بود یقینا می توان نوعی مزیت نگریست، مزیتی که باعث شد بعدها محیط ها و زبان های زیادی به تقلید از اون ایجاد شه!
حالا اونجا که به علت کم کاری (که قالبا مبنی بر بروز رسانی دیر به دیر کنترل ها می شه) یادشون میره که یه پروپرتی خیلی بدیهی یک کنترل عمومی رو منتشر کنند این کاربر زبان سطح بالا مجبور می شه درگیر پیام و پیام دهی در ویندوز شه! چیزی که مسلما برنامه نویسی در دلفی به عنوان یک زبان سطح بالا مبتنی بر اون نیست، و بدتر از اون زمانی که این کاربر با اندکی درگیر شدن و دادن چند مسیج خفن احساس حرفه ای شدن بهش دست میده ! :لبخند:
K.Mohammadreza
سه شنبه 23 شهریور 1389, 00:19 صبح
با استفاده از تابع زير ميتونید هر کنترلي را راست به چپ کني حتي Toolbar
const
WS_EX_NOINHERITLAYOUT = $00100000;
WS_EX_LAYOUTRTL = $00400000;
procedure SetWinControlBiDi(Control: TwinControl);
var
ExStyle: Longint;
begin
ExStyle := GetWindowLong(Control.Handle, GWL_EXSTYLE);
SetWindowLong(Control.Handle, GWL_EXSTYLE, ExStyle or WS_EX_RTLREADING or WS_EX_RIGHT
or WS_EX_LAYOUTRTL or WS_EX_NOINHERITLAYOUT);
end;
hector2000
دوشنبه 25 مهر 1390, 19:57 عصر
استفاده از TPageControl کامپوننت raize
اين كامپونت گزينه bidimode نداره! چطور ميشه راست چينش كرد؟
BORHAN TEC
دوشنبه 25 مهر 1390, 23:53 عصر
باید از خاصیت TabSequence مربوط به TrzPageControl استفاده کنید:
RzPageControl1.TabSequence := tsReverse;
hp1361
سه شنبه 26 مهر 1390, 00:03 صبح
سلام
پروپرتی TabSequence و روی tsReverse قرار بدی راست به چپ خواهد شد
موفق باشیم
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.