PDA

View Full Version : Tree با خاصیت راست چین بودن



Mahdavi
پنج شنبه 27 فروردین 1383, 14:16 عصر
با سلام
من به دنبال کامپوننت tree با امکان راست چین بودن tree هستم. ؟؟

مهدی کرامتی
پنج شنبه 27 فروردین 1383, 16:04 عصر
راستش من میخواستم چند وقت دیگه این موضوع رو بعنوان یک مقاله بنویسم، اما بدلیل نداشتن فرصت اونرو بصورت یک پست اینجا مینویسم.

فقط یک پیش نویس بگم، انهم اینکه بنظر من هیچ زبانی بهتر از دلفی برنامه نویسی ویندوز را لذت بخش نمیکند!

چرا؟ خوب خودتون ببینید...

این کدی است که من برای آینه کردن کامپوننت های مبتنی بر ویندوز (مشتقات TWinControl) در دلفی نوشته‌ام:


const
WS_EX_NOINHERITLAYOUT = $00100000; // Disable inheritence of mirroring by children
WS_EX_LAYOUTRTL = $00400000; // Right to left mirroring

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;


نحوه استفاده:
نام کامپوننت مورد نظر (در اینجا TreeView‌ خود دلفی) را به آن پاس کنید. مثال:

SetWinControlBiDi(TreeView2);

به تصویر انتهای صفحه توجه کنید.

نکته: این کد در ویندوزهایی که قابلیت نمایش متون راست به چپ دارند (مانند ویندوزهای 98، Me عربی/فارسی، ویندوز 2000 و XP که زبان فارسی یا عربی آن فعال شده باشد) کار میکند.

Mahdavi
پنج شنبه 27 فروردین 1383, 20:08 عصر
مهدی جان ممنون
بخدا منم تو محل کارم با دلفی برنامه نویسی می کنم :lol:
به هرحال ممنون

سار
پنج شنبه 27 فروردین 1383, 20:47 عصر
آقا این خیلی جالبه میشه مقالت رو بنویسی و در سایت بزاری.
من تا حالا به یه چنین چیزی فکر نکرده بودم.
خسته نباشی دوست عزیزم :kiss:

jirjirakk
جمعه 28 فروردین 1383, 07:55 صبح
مرسی آقای کرامتی :mrgreen:

RASAM
شنبه 29 فروردین 1383, 11:28 صبح
ممنونم اقای کرامتی :flower:

Mahdavi
یک شنبه 30 فروردین 1383, 13:49 عصر
با سلام
مهدی جان این رو کد واسه کامپوننت 1classst کار نکرد. یعنی خیلی خیلی آینه شد :lol:

دوشنبه 31 فروردین 1383, 09:18 صبح
سلام اسیستی جون
این کد برای treelist هم کار نکرد :(

SReza1
دوشنبه 07 اردیبهشت 1383, 01:49 صبح
من یه چیزی رو دیدم که بد نیست بگم. این درختها معمولا برای نمایش برگهایی که اندازهشون از عرض درخ بیشتر است hint اون برگ رو نشون میدهند. ولی من تو درخت بالا چنین چیزی ندیدم. چیزه خاضی باید تنظیم بشه؟

مهدی کرامتی
دوشنبه 07 اردیبهشت 1383, 11:12 صبح
مشکل کاملا آینه‌ای شدن موارد فوق مربوط به نحوه رسم متن در آن کامپوننت و تابع استفاده شده برای اینکار میباشد.

بعنوان تمرین میتوانید در سورس TTreeView دلفی ببینید آیتم های TreeView را با چه تابعی رسم میکند و سورس کامپوننتهای فوق را طوری تغییر دهید که از آن استفاده کند.

رضا عربلو
سه شنبه 08 اردیبهشت 1383, 01:19 صبح
کمپاننت VirtualTreeView (آخرین نسخه اش) برای موارد TreeView فارسی بسیار جالب و کارا است.
می ارزه یک بار امتحانش کنید.

MiRHaDi
دوشنبه 09 آذر 1383, 15:20 عصر
سلام
همونطور که خودتون فرمودید خیلی درد سر داره کار کردن باهاش
اگه وقت دارید توی یک مقاله تجربیاتتون رو انتقال بدید خیلی مفید خواهد بود
بای

babak869
شنبه 08 بهمن 1384, 22:30 عصر
مهدی جان دستت درد نکنه
منم بی صبرانه منتظر مقاله ت هستم
موفق باشی

aras12000
یک شنبه 24 اردیبهشت 1385, 09:45 صبح
سلام آقای کرامتی
به این روش که فرمودید دیگر OnContextPopup کار نمی کند . راه حلی دارید؟

ghabil
یک شنبه 24 اردیبهشت 1385, 21:34 عصر
ته کد این رو اضافه کنید


Control.Invalidate;

البته با اجازه نویسنده اولیه .

babak869
پنج شنبه 12 مرداد 1385, 10:30 صبح
نمونه کدی رو که جناب کرامتی در سایت گذاشتند من بصورت مثال درآوردم میتونید از اون استفاده کنید :

http://www.barnamenevis.org/forum/showthread.php?p=252536#post252536

hamedv
شنبه 18 آذر 1385, 19:21 عصر
با این کار کنترل راست به چپ میشه ولی هینتها درست نمایش داده نمیشه و همینطور کلید سمت چپ و راست درخت رو برعکس باز و بسته میکنه

vesal
سه شنبه 26 دی 1385, 01:44 صبح
البته این کد با VCLSkin هم مشکل پیدا می کنه!!!
البته من Virtual Tree View رو پیدا کردم که هم یونیکد رو پشتیبانی می کنه هم راست به چپ و صد البته که رایگان !!!

اینم لینکش
http://www.soft-gems.net/VirtualTreeview/