اینم از کامپوننت : یه گزینه داره به نام PersianSupport تیک بزنید حال کنید
اینم از کامپوننت : یه گزینه داره به نام PersianSupport تیک بزنید حال کنید
دارم یه پک کامل ازGrid, Label, Edit, Button, DataSet ها می سازم که به محض اتمام Upload می کنم
یک عکس از ادیت در حال تایپ فارسی بگیرید بگذارید ببینم چطور کار می کنه، من نتونستم کار کنم.
بعد از تایپ، مهم ترین اشکال اینه که text رو اگر بخونیم، برعکس خونده می شه، این رو چکار کردید؟
من با اصلاح یونیت TControl مربوط به اندروید، و خوراندن اون به دلفی همه کنترل ها رو با هم یکجا اصلاح کردم، به این روش فکر کنید.
توابع تبدیل تاریخ با دقت 5000 سال
پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840
پایگاه داده، تیونینگ، طراحی و پیاده سازی ..
رو XE7 نصبش کن حتما ، من نخواستم به یونیتای دلفی دست بزنم واسه همین رفتم سراغ اینکه کامپوننت هارو از یونیت خودش inherit کنم. برای ذخیره کردن موقع ذخیره دارم رو DataSet می نویسم که هم موقع OnGetText و هم موقع Post واژه ها رو دوباره فارسی عادی کنه. واسه مقایسه هم میتونی از توابع کانورت چون var funcion هستن به راختی استفاده کنی فقط کافیه یکی از کامپوننت ها رو صفحه باشه یا یونت اون use شده باشه
باید دنبال راه بهتری باشیم. مثلا OverRide کردن متد GetText شاید خوب باشه.
وقت کنم روش باز کار می کنم
توابع تبدیل تاریخ با دقت 5000 سال
پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840
پایگاه داده، تیونینگ، طراحی و پیاده سازی ..
واسه اونایی که میشه override کردم اما مثلا Tedit همه تایع هاش بسته هستن. بقیه رو همه رو override دارم می نویسم اما کامپوننت می کنم که واسه همه قابل استفاده باشه
من اومدم راست به چی رو توی فایر مانکی اصلاح کردم (البته نسخه ویندوزش) ، حالا توی آندروید مکان مکانما رو درست نشون میده ولی مشکل برعکس نمایش دادن و نچسبیده بودن حروف هستش
اونایی که از کانورتور استفاده کردن موقع خوندن رشته برعکس نمیشه؟ اگه میشه برم سراغ اصلاح رندرش و وقت برای کانورتور نوشتن نزارم
آخرین ویرایش به وسیله gbg : سه شنبه 18 آذر 1393 در 02:55 صبح
مشکل جدا جدا شدن مربوط میشه به اینکه از BIDI DIRECTION پشتیبانی نمیشه. برای اصلاح این کار نیاز به یک reshaper هست.
تو گیت هاپ انواع عربیش رو پیدا میکنید. در زمینه ینی کد و استاندارد فارسی من می تونم کمکتون کنم.
اما هنوز متوجه نشدم مشکل رندر چیه؟ چه مشکلی در رندر هست؟
منظورم از رندر اینکه خروف رو نمی چسبونه و برعکس نشون میده
من متاسفانه چیزی تو اینترنت پیدا نکردم
حالا گیت هاب رو هم نگاه میکنم
با سلام،
من سورس برگردان شده به آبجکت پاسکال (بنام FarsiReshaper) رو در پست های قبلی گذاشتم. برای اصلاح جدا جدا بودن حروف می تونید از اون استفاده کنید که پایه کامپوننتی هست که دوستمون برای کنترل TEdit فایرمانکی ایجاد کرده است.
ممنون
ولی توی کانورتورها فکر میکنم رشته رو اول برعکس میکنن بعدش حروف رو به اول وسط آخر تبدیل می کنن
من نمی خوام کلمه رو برعکس کنم
بعدش هم یه کانورتور که دیدم خیلی حجم کدش زیاد بود ، یه همچین الگروتمی نباید اونقدر زولانی باشه
من تو گیت هاب چیزی ندیدم
میشه دقیقا بگی کجا دیدی
با سلام
دوستان دیدم دارید تلاش می کنید فارسی نویسی در اندروید توسط دلفی رو انجام بدید، گفتم شاید موارد زیر به درد بخوره و کمکتون کنه:
1- از شرکت داده پردازان فراگیر یک سری کامپوننت بازمتن منتشر شده که مشکل رو رفع کردن و از اینجا می تونید به اون دسترسی داشته باشید.(البته با لطف جدید دوستان سورس فورج هم چیلتر شده پس باید با چیز پی ان یا چیلترشکن وارد بشوید.)
2-در لازاروس امکان فارسی نویسی به صورت درست وجود داره. و همون طور که می دونید دلفی هم از این کامپایلر برای آزمون توسعه بر روی بسترهای دیگه استفاده می کنه. اون رو هم یه نگاهی بندازید بد نیست.
البته این دومی یک کم دنگ و فنگ داره که باید طریقه ی تنظیم کردن لازاروس برای چند بستری (Cross-Build) رو بدونید ولی از اینجا می تونید یه چیزهایی در موردش به دست بیارید.
حالا دوستانی که توانایی و وقتش رو دارند بر روی این دو مورد تحقیق و کار کنند.
ما که وقتش رو نداریم. البته سوادش رو هم نداریم.
با تشکر
بله دستشون درد نکنه اما نظر شخصی من اینکه از این مزخرف تر چیز دیگه ای نمی تونستن بنویسن
یعنی حالم از این کامپوننت DPF بهم می خوره ، الکی هم اینترنت رو پر کردن ، همه هم همش دایورت می کنن روش ، به نظر من فقط یک کلام به درد نمی خورههههههههههههههههههه
من که نتونستم باهاش کار کنم
اگه کسی کار کرده و مشکل نداشته بیاد بگه
مشکل و دنگ و فنگ نصبش هم که به جای خود
البته کسی که این کامپوننت رو نوشته خیلی زحمت کشیده و ادم با سوادی هم بوده، ولی در کل اشکالاتی داره که استفاده ازش رو سخت می کنه
1-اولین و بزرگترین عیبش اینکه وقتی ازش استفاده می کنی دیگه نمی تونی همزمان از بقیه کامپوننت های دلفی استفاده کنی!! که اصلا خوب نیست.
2-بعضی وقتها هنگ می کنه
3-کامپوننتهاش خیلی محدوده
مثلا شما گرید دلفی رو اینجا ندارید چون این کامپوننت ها از کامپوننت ها استاندارد دلفی مشتق نشدن
دو تا از شعارهای اصلی FMX اینه که از همون کامپوننت های موجود در ویندوز در آندروید هم استفاده کنید و دوم اینکه یک کد بنویسید و روی پلتفرمهای مختلف کامپایل کنید ولی وقتی شما از این کامپوننت استفاده می کنی فقط برای آندروید کامپایل میشه
من خودم یه پروژه رو با این کامپوننتها پیاده کردم ولی وسط کار به مشکل خوردم و بیخیال شدم
در کل برای یه پروژه کوچیک خوبه
آخرین ویرایش به وسیله nice boy : پنج شنبه 08 تیر 1396 در 18:49 عصر
متاسفانه باید فرمایشات دوستان رو تایید کنم . این کامپوننت خیلی کاربردی نیست و تقریبا نمیشه روش حساب کرد .
من الان گیر کردم براساس تبلیغات رو نت فکر می کردم با این کامپوننت مشکل حل میشه ولی الان نمیدونم چکار کنم کسی کانورتر و یا امثال اون رو نداره که کارم راه بیفته ؟
اگر ممکنه کمی راجع به توابع موجود در farsireshaper و روش کارتون توضیح بدید تا کمکتون کنیم و زودتر بتونیم مشکل رو حل کنیم .
نه نه نیاز به reverse کردن نیست. اجازه بدید یک توضیح کوتاه پیرامون اینکه Unicode Bidirectional Algorithm و نحوه عمکردش بدم شاید خودتون از اول یکی طراحی کردید.
۱- در ینیکود برای هر حرف یک شناسه اختصاصی وجود دارد و قالبا چهار الی دو شناسه دیگر که حالت های مختلف اون حرف هستند. . فرضا ج دارای ۴ فرم هست. ج ج ج ج که اصطلاحا به ترتیب فرم isol,fina,medi,init نامیده می شوند. یا د فقط دو فرم دارد یکی د و د
۲- هر زمان کلیدی روی کیبورد وارد می شود کدی که ایجاد می شود کد شناسه حرف صادر میشه مثلا در ج کد 062C صادر میشهکد HTML:062C;ARABIC LETTER JEEM;Lo;0;AL;;;;;N;;;;; FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;; FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;AL;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;; FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;; FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;AL;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;;
۲- این کد به text shaping engine میرسد تا اون حروف رو رندر کنه.
۳- text shaping engine در صورتی که از تمامی جداول اوپن تایپ پشتیبانی کند. میاد فونت رو لود میکنه کد 062C رو به فونت میده و فونت با توجه به موقعیت شناسه ورودی تشخیص میده که که چه فرمی از اون حروف رو برگردونه به موتور بده.
داستان این جدانویسی فونت های فارسی از اینجا شرو میشه و دو حالت دارد :
۱- یا مشکل در فونت هست که جداول gpos,gsub را ندارد یا به درستی تعریف نشده است. مثل این تصویر
new.jpg
۲- text shaping engine از جداول اوپن تایپ پشتیبانی کامل نمی کند.
کار reshaper این هست که یک رشته رو به صورت ورودی دریافت میکنه یکی حروف رو بررسی میکند. به عنوان مثال هرگاه به حرف ج میرسد با توجه به موقعیت حرف در رشته تشخیص میده که کدام فرم باید نمایش داده شود. پس کد حرف رو با کد فرم جایگزین می کند. اینطوری حروف متصل و صحیح نمایش داده می شود.
یکیش تو گیت من فورک شده. چندتایی هم پیرامون این موضوع ستاره زدم که میتونید بررسی کنید. مشکلی دیگر در این زمینه بود من در خدمتم.
کد HTML:https://github.com/zoghal/persianParser
ممنون به خاطر توضیحت
مشکلم فعلا برعکس بودنشه با جدا بودن موشکل ندارم
البته فعلا گوشی اندرویدی ندارم و 20 روزی میشه که دیگه کار نمی کنم ولی دنبالش هستم
تو هاب شما هم چیزی ندیدم ، البته تو سایتش زیاد وارد هم نیستم
من دقت نکردم به برعکس بودنش. پس نیاز هم هست معکوس کنید.
تو مخزن گه لینک دادم. یک نمونه RESHAPER هست برای جاوا اسکریپت. برای دلفی نیست.
آره برای جاوار رو دیدم
حالا باز سر فرست کار می کنم باهاش
نه تایپ فارسی رو متد دیگه ای کنترل می کنه.اگه میشه بفرمایید کدوم متد رو تغییر دادید تا ما هم همون کار رو بکنیم.
آیا با این کار تایپ فارسی درست میشه؟
متاسفانه دلفی XE رو ریمو کردم و ندارم، اما با کمک دوست عزیزم حمزه، و ریموت به ایشون، تا جایی که یادم مونده بود مطالب رو بیرون کشیدم.
در یونیت fmx.controls کلاس tstyledcontrol هنگام ست کردن متن شی، متدی رو کال می کنه به نام translate، که در یونیت fmx.types قرار داره، از طرفی در این متد هم متدی کال می شه که اسمش هست CustomTranslateProc، و شما می تونید درونش رو کدنویسی کرده و روال رو تغییر بدید.
می تونید Translate یا CustomTranslateProc رو بازنویسی کرده و در یونیت بطور مجدد اعمال کنید تا تمام اشیا بصورت اتومات برای نمایش متن از روال شما استفاده کنند.
این کار رو کرده بودم و تست هم گرفته بودم، دقت کنید فقط برای نمایش و نه ورود، برای ورود فکر می کنم روشی که دوستان بیان کردند هم مناسب باشه.
اگر این روال ها رو درست کنید و از اصلاح کننده بنده استفاده کنید، (یا هر ترجمه گر دیگه) اون وقت در هنگام ست کردن متن در شی تون می تونید شکل و کاراکتر ست و کاراکتر مپ رو دستکاری کنید.
دقت کنید که استپ بعدی می تونه دستکاری GetText باشه برای بازنشانی به اصل متن فارسی در هنگام کار کردن با اون مثلا در مقام مقایسه با یک رشته.
امیدوارم این اطلاعات بتونه بهتون کمک لازم رو کرده باشه.
توابع تبدیل تاریخ با دقت 5000 سال
پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840
پایگاه داده، تیونینگ، طراحی و پیاده سازی ..
مرسی از راهنماییتون.نه تایپ فارسی رو متد دیگه ای کنترل می کنه.
ولی من با تغییر متد TTextLayout.EndUpdate و استفاده از Converter مشکل تایپ فارسی رو حل کردم. حتی تایپ ترکیبی فارسی و انگلیسی هم مشکل نداره.
برای نمایش هم متد TText.SetText رو تغییر دادم که درست شد.
البته هنوز دارم تست می کنم.
البته Converter هم که دوستان قرار داده بودند یه اشکالاتی داره مثلا حروف فارسی رو برعکس می کنه یا موقع نوشتن کلمات انگلیسی و فارسی مشکل پیش میاد که دارم اون رو هم تغییر می دم.
دوستان لطفا مشارکت کنید تا یه راه حلی پیدا کنیم
سلام دوستان
خیلی ممنون
کل اینترنت رو گشتم و جوابمو اینجا پیدا کردم
ممنون
یه تابع ساده نوشتم که امیدوارم به درد همه بخوره
این تابع تمام کامپوننت هایی رو که متن text داره رو راست چین میکنه
این تابع از کلاس بالا استفاده میکنه
اونو توی پروژتون اد کنید و از این تابع استفاده کنید
Farsi:=TFarsi.Create;
for I := 0 to ComponentCount-1 do
begin
if (Components[i] is TTextControl) Then
(Components[i] as TTextControl).Text:=Farsi.Convert((Components[i] as TTextControl).Text);
end;
بازم تشکر از دوستانی که این کلاس فارسی رو درست کردن جاوا شو پیدا کرده بودم ولی اگه میخواست پاسکالش کنم یه هفته باید وقت میزاشتم
در پناه حق
جواد عادل
ضمن تشکر میشه بفرمایید برای listview , grid چکار باید کرد ؟
من تو oncreate فرم از کد بالا استفاده کردم . ولی گرید درست نشد.
به لطف راهنمایی های دوستان و استفاده از کلاس tfarsi قدمهای خوبی برداشتم , اما هنگام استفاده از convert متون فارسی - لاتین و یا لاتین نوشته شده در edit کلا حذف می شوند . دوستان راهنمایی بفرمایید
با عرض سلام و تشكر به همه دوستاني كه در زمينه فارسي سازي دلفي براي برنامه نويسي موبايل تلاش ميكنند.
من همه كامنتها رو خوندم ولي بلاخره متوجه نشدم كه بايد از كدوم كلاس و به چه نحوي استفاده بكنم تا بشه قارسي نوشت.اگر امكانش هست يه توضيح كاملتر بفرماييد يا يك نمونه كد برنامه و مثال بگداريد تا مشكل برايم حل بشه.
البته من با كامپوننت DPF يه برنامه در خصوص كد هاي مخابراتي نوشتم ولي بقول دوستان اولا خيلي دست آدم باز نيست براي استفذاده از همه كامپوننت ها در ثاني خيلي از ابزارهايي كه بايد براي برنامه ميگذاشتم رو ازش چشم پوشي كردم بخاطر محدوديتهاي استفاده از اين كامپوننت.
خوشحال و مننون ميشم كمكم كنيد تا مشكل فارسي نوشتن حل بشه.
آخرین ویرایش به وسیله sasaee04 : پنج شنبه 23 بهمن 1393 در 09:55 صبح
سلام
توی کامنت های قبلی سورس تابع پاسکال گذاشته شده
farsi reshaper
این تابع مشکل نمایش کلمات فارسی رو حل میکنه ضمن اینکه ایرادهای مختصری داره مثلا اگه فارسی ابگلیسی باشه به هم میریزه و یا اگه متن بزرگ باشه
جا داره دوستان با کمک هم این تابع رو کامل کنند
سلام
برای نمایش فارسی متنهای پروژه در اندروید مراحل زیر را انجام دهید
1-در صفحات قبلی یک کلاس پاسکال گذاشته شده است آن را کپی کنید و در یک یونیت با نام FarsiReshaper.pas ذخیره کنید
2- آن را به پروژه اضافه کنید
3- برای نمایش درست فارسی متن یک text دستورات زیر را بنویسید
var
Farsi:Tfarsi;
Begin
Farsi:=TFarsi.Create;
Button1.text :=Farsi.Convert( Arg1) ;
End
حالا تمام بحث دوستان در نحوه اجرای این کد است
بعضی میگویند در ّFmx.Types یک تابع نام TCustomTranslate وجود دارد و این کانورت را داخل آن فراخوانی کنیم تا همه Text ها اتومات درست شود
بعضی از دوستان میگویند با تغییرTTextLayout.EndUpdate
ولی نکتهمهم اینه که این روش کلا و از اساس با روش استفاده شده آقای یعقوبی (فکر کنم) نویسنده کامپوننت های DPF متفاوت است چون ایشون از یک مسیر متفاوتی این کار را انجام داده است . این کامپوننت ها از این فرضیه که اندروید خود به خود در نسخه های اخیر مشکلی با فارسی نویسی ندارد پس ایشان با ایجاد کامپوننتها از روی کدهای جاوا این مشکل را حل کرده اند . یعنی کامپوننت لیست ویو ایشان از زمین تا آسمان با لیست ویو دلفی متفاوت است و شاید ما دلفی کارها عادت به استفاده از این کامپوننت ها را نداریم و باید یکسری تنظیمات و پیش نیازها را رعایت کنیم
در پناه حق
با سلام و تشكر از توضيحاتتون ..ولي باز هر كاري كه من ميكنم نميشه البته از كم سوادي بنده هستش...لطف ميكنيد يهبرنامه خيلي خيلي ساده مثلا نوشتن در داخل lable يا داخل edit رو برايم بفرستيد تا كامل متوجه بشم.سلام
برای نمایش فارسی متنهای پروژه در اندروید مراحل زیر را انجام دهید
1-در صفحات قبلی یک کلاس پاسکال گذاشته شده است آن را کپی کنید و در یک یونیت با نام FarsiReshaper.pas ذخیره کنید
2- آن را به پروژه اضافه کنید
3- برای نمایش درست فارسی متن یک text دستورات زیر را بنویسید
var
Farsi:Tfarsi;
Begin
Farsi:=TFarsi.Create;
Button1.text :=Farsi.Convert( Arg1) ;
End
حالا تمام بحث دوستان در نحوه اجرای این کد است
بعضی میگویند در ّFmx.Types یک تابع نام TCustomTranslate وجود دارد و این کانورت را داخل آن فراخوانی کنیم تا همه Text ها اتومات درست شود
بعضی از دوستان میگویند با تغییر TTextLayout.EndUpdate
مثل همين تصوير كه مشاهده ميكنيد مثلا با زدن دكمه داخل EDIT بنويسه " سلام"...ممنون ميشم راهنمايي كنيد
FARSI.jpg
دوستان نسخه xe8 دلفی امروز منتشر شد. کسی نصب کرده ؟ آیا مشکل فارسی حل شده ؟
هنوز منتشر نشده و پروسه تست هستش ، همونطور هم که یک ماه پیش گفتم هنوز حل نشده