سلام بنده نصب کردم هنوز مشکل پابرجاس
Printable View
نقل قول: تلاش برای حل مشکل به هم ریختن فارسی نویسی در آندروید
سلام
برای نمایش فارسی متنهای پروژه در اندروید مراحل زیر را انجام دهید
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
با سلام و تشكر از توضيحاتتون ..ولي باز هر كاري كه من ميكنم نميشه البته از كم سوادي بنده هستش...لطف ميكنيد يهبرنامه خيلي خيلي ساده مثلا نوشتن در داخل lable يا داخل edit رو برايم بفرستيد تا كامل متوجه بشم.
مثل همين تصوير كه مشاهده ميكنيد مثلا با زدن دكمه داخل EDIT بنويسه " سلام"...ممنون ميشم راهنمايي كنيد
https://barnamenevis.org/attachment.p...9&d=1424080340
والا من که نتوسنتم باهاش حال کنم :گریه:نقل قول:
اینم از کامپوننت : یه گزینه داره به نام PersianSupport تیک بزنید حال کنید :لبخند:
شما چطوری با این کامپوننت که درست کار نمیکنه حال می کنید
:متفکر:
اصلا حروف رو درست سر هم نمیکنه
رو اونت کلیک دکمه این کد رو بنویس
var
Farsi:Tfarsi;
Begin
Farsi:=TFarsi.Create;
Button1.text :=Farsi.Convert( Arg1) ;
End;
بجای arg1 میتونی تکست هم بنویسی یا بصورت دیفالت متن فارسیتون رو روی خاصیت تکست دکمه بنویسین و بعد
Button1.text :=Farsi.Convert( Button1.text) ;
رو تو کد بالا بنویسین
البته من از این کد برای تبدیل تمام متن های فارسی روی باتن و لیبل و تکست استفاده میکنم
var
farsi:TFarsi;
begin
Farsi:=TFarsi.Create;
for I := 0 to ComponentCount - 1 do
begin
if (Components[i] is TLabel) Then
(Components[i] as Tlabel).Text:=Farsi.Convert((Components[i] as Tlabel).Text)
else if (Components[i] Is TEdit ) then
(Components[i] as TEdit ).Text:=Farsi.Convert((Components[i] as TEdit).Text)
else if (Components[i] Is TButton ) then
(Components[i] as TButton ).Text:=Farsi.Convert((Components[i] as TButton).Text);
end;
showmessage('سلام و صد سلام');
\\add a text to end of label text
label3.Text:=farsi.Convert( ' سلام ' ) + ' ' + label3.Text;
end;
سلام Sir.V65j و ممنون از جوابتون
من اون كاري كه شما فرموديد انجام دادم ولي باز هم خطا از همون كلاسي ميده كه به برنامه اضفه كردم تصويرش رو ميذارم بي زحمت بفرماييد مشكل كجاست... مننون ميشم
ضمیمه 130391
سلام من رو xe7 و XE8 استفاده کردم کامل جواب داده و ایرادی نداشت
شمام اینا رو پشت سر هم بکن ببین درست میشه یا نه یعنی همه رو یه خط بکن
سلام
ممنون از همگي مخصوصا از nice-boy و Sir.V65j ..مشكلم حل شد با XE8 كامپايل كردم درست شد.
فقط يه راهنمايي ديگه مي خواستم .
ميخواستم ازتون بپرسم چطوري ميتونم اين كار رو روي list view انجام بدم.ممنون ميشم راهنمايي بكنيد.
یک مشکل اساسی توی فانکشم convert وجود داره که وقتی یک عبارت و تبدیل می کنه حروف انگلیسی رو حذف می کنه و در صورتیکه یکبار تبدیل شده باشه رشته خای بر می گردونه . آیا کسی این مشکل رو حل کرده
دسته همگی درد نکنه
من هنوز تست نکردم ولی زحمتاتون جای تشکر داره
ولی برای اینکه اتوماتیک این تبدیل انجام بشه. موقع وارد کردن متن و خوندن متن و... باید تو کدوم متد ازش استفاده کنیم؟ یا اینکه روی یه متن دوبار کانورت انجام نشه
برای override کردنشون میتونی از این روش استفاده کنی
In this place, you can override default action by invoking message handlers
procedure WMGetText(var Message: TWMGetText); message WM_GETTEXT;
procedure WMGetTextLength(var Message: TWMGetTextLength); message WM_GETTEXTLENGTH;
procedure WMSetText(var Message: TWMSetText); message WM_SETTEXT;
Or, override
procedure DefaultHandler(var Message); override;
سلام به دوستان
من تغییراتی در سورس فایرمانکی دادم و مشکل فارسی نویسی رو تا حد زیادی حل کردم
کد نمونه رو اینجا می زارم تا بقیه هم استفاده کنن.
فقط باید فایل ها رو در کنار پروژه تون اضافه کنید.
یکی از فایلها یونیتی هست که قبلا آقای کریم پور نوشته بودند و من برخی تغییرات روی اون دادم.
روی ذلفی XE6 و XE7 تست کردم درست کار می کنه
هنوز روی آندروید 5 تست نکردم
امیدوارم به دردتون بخوره.
اگر کسی اشکالی دید بگه تا اصلاح کنم
ضمیمه 134099
هنوز تست نکردم ، اما همینکه به اشتراک میزارید ارزشمنده.
موفق باشید.
آقا این خیلی عالیه
خدا خیرت بده
فقط نمی دونم چرا گاهی از برنامه می پرید بیرون ؟ مشکل از گوشی منه یا از کد ؟ هنوزنفهمیدم!
text کمبو باکس و LISTBOX هنوز مشکل دارد. ضمنا من در محیط اندروید 5 تست کردم
مشکل از خود نسخه xe5 هست.
برای برنامه های اندریود فعلا xe8 مناسبتر از نسخه های قدیمی تره.
سلام واقعا عالی بود خدا خیرتون بده.
فقط اگر امکانش هست تحت xe8 رو هم بزارید خیلی عالی میشه.
تو xe8 مشکل داره. میشه برای xe8 هم تغییرات بدید؟
بعضی وقتها موقع تایپ بدون هیچ خطایی از برنامه خارج میشه !
ظاهرا روی اندروید 5 مشکل داره چون با اندروید پایین تر تست کردم درست بود . احتمالا اگه با xe8 کامپایل بشه مشکل حل بشه
رو xe7 آندروید 5 و پایینتر برای من جواب داد فقط xe8 رو اگر لطف کنید. اینم یونیت های xe8 که خواستید.
سلام،
ممنون از زحماتتون. جواب داد رو xe8 مشکلی نداره.
خیلی ممنون.
یک بار دیگه از زحمات شما دوست عزیز صمیمانه متشکرم . خدا خیرت بده . کار من یکی که خیلی راه افتاد .
شما که تو این مورد زحمت کشیدید برای مساله BiDi هم میشه کاری کرد؟
توی پروژه هایی که من نوشتم درست نمایش دادن فارسی اهمیت داشت و راست چین بودن خیلی مهم نبود در نتیجه دنبالش نرفتم.
ضمن اینکه این مشکل فقط به آندروید مربوط نمیشه و توی ویندوز هم مشکل داره.
مطمئن نیستم ولی فکر می کنم اگر مثلا TEdit مربوط به FMX رو با TEdit درون VCL مقایسه کنیم شاید مشکل راست به چپ رو بشه حل کرد
ممنون از زحمتتون. من در xe8 تست کردم. انگلیسی ها به هم میریزه. اما فیلدهایی که فارسی هست صحیحه.
ایندفعه بر عکس شد. انگلیسی به هم میریزه.
سلام ممکنه فایل مربوط به نسخه seattle رو هم تصحیح بفرمایید !
سلام!
من چند ماه پیش که دیگه از حل این مشکل ناامید شده بودم رفتم و جاوا یاد گرفتم و به همه شما هم توصیه میکنم این کار رو انجام بدید. مزایاش برای اندروید نسبت به دلفی خیلییی زیاده در حالی که دلفی هیچ برتری ای نداره.
ولی از همون موقع این تاپیک رو دنبال میکردم که ببینم مشکل حل میشه یا نه! فقط خواستم از طریق این پست خسته نباشید و دست مریزاد بگم به شما.
گل کاشتید :لبخندساده:
فرمایشتون درسته . ولی محیط دلفی خیلی خوش کارتره ! قبول دارید ؟
اجازه بدید دانلود کنم چشم.نقل قول:
سلام ممکنه فایل مربوط به نسخه seattle رو هم تصحیح بفرمایید !
البته نمی دونم نسخه ای که الان برای دانلود گذاشتن شامل فایل های سورس هم میشه یا خیر. چون اگه سورس فایل هایFMX.TextLayout.pasوFMX.Objects.pas نباشه نمیشه درستش کرد.
نقل قول:
من چند ماه پیش که دیگه از حل این مشکل ناامید شده بودم رفتم و جاوا یاد گرفتم و به همه شما هم توصیه میکنم این کار رو انجام بدید. مزایاش برای اندروید نسبت به دلفی خیلییی زیاده در حالی که دلفی هیچ برتری ای نداره.
من خودم هم با جاوا برای آندروید برنامه نوشتم. مسلما امکانات بیشتری روی آندروید داره، همچنین سورس و منابع بیشتری براش هست. ولی به هیچ عنوان از نظر IDE و کامپوننت قابل مقایسه با دلفی نیست.
دلفی خیلی قویتره