PDA

View Full Version : سوال: مشکل با مثبت و منفی قبل از اعداد در DBGrid راست به چپ (فارسی)!



Mahdi.Delphi
شنبه 14 دی 1392, 19:26 عصر
سلام

من یه DBGrid دارم که BiDiMODE ـش رو روی bdRightToLeft تنظیم کردم و با فونت های فارسی اعداد رو داخلش می نویسم.

مشکلی که دارم اینه که برای اعداد منفی علامت - به جای اینکه پشت عدد قرار بگیره جلوی اون قرار میگیره!

114849

راه حلی برای رفع این مشکل وجود داره؟! :متفکر:

ممنون

یوسف زالی
شنبه 14 دی 1392, 23:15 عصر
سلام. تنظیمات ویندوزتون رو اصلاح کنید.
region and language -> customize format
اگر نشد بگید تا بررسی دقیق تری کنم.

Mahdi.Delphi
یک شنبه 15 دی 1392, 18:41 عصر
سلام. تنظیمات ویندوزتون رو اصلاح کنید.
region and language -> customize format
اگر نشد بگید تا بررسی دقیق تری کنم.

درست نشد !

114901

hadisalahi2
دوشنبه 16 دی 1392, 10:30 صبح
یک بار زبان فارسی رو حذف کن ، دوباره نصب کن
شاید هم مشکل از فونت

Mahdi.Delphi
دوشنبه 16 دی 1392, 20:01 عصر
یک بار زبان فارسی رو حذف کن ، دوباره نصب کن
شاید هم مشکل از فونت

با فونت tahoma ی خود ویندوز هم همینطوره !

شما این مشکل رو نداید؟ یعنی اعداد منفی در DBGrid ی که Right To Left باشه درست نمایش داده میشوند؟!

fahimi
سه شنبه 17 دی 1392, 06:31 صبح
من برای این کار یک تابع تعریف کرده ام


function negative

(N:real):string;
begin
if N<0 then
Result:=Format('%2.0n-',[N*-1])
else
Result:=Format('%2.0n',[N])
end;

Mahdi.Delphi
سه شنبه 17 دی 1392, 15:04 عصر
من برای این کار یک تابع تعریف کرده ام


function negative

(N:real):string;
begin
if N<0 then
Result:=Format('%2.0n-',[N*-1])
else
Result:=Format('%2.0n',[N])
end;


پس شما هم این مشکل رو دارید!

این فانکشن وقتی خوبه که یه بخواهیم فقط یه فیلد رو نمایش بدیم، ولی نمیشه توی Query استفاده کرد و نتایج رو توی DBGrid لود کرد !

با این تفاسیر مجبوریم از توابع رشته ای خود MySQL استفاده کنیم و منهای اول رو به آخر رشته منتقل کنیم! :چشمک:

یوسف زالی
سه شنبه 17 دی 1392, 15:35 عصر
نخیر. این تابع رو در GetText فیلدتون می تونید استفاده کنید.

Mahdi.Delphi
سه شنبه 17 دی 1392, 16:18 عصر
نخیر. این تابع رو در GetText فیلدتون می تونید استفاده کنید.

درسته، خودم الان به همین نتیجه رسیدم اومدم اینجا اعلام کنم دیدم شما زحمتش رو کشیدی:لبخندساده:

Mahdi.Delphi
سه شنبه 17 دی 1392, 18:38 عصر
فقط یه مشکلی که هست اینه که من در RunTime با کانکشن استرینگ به دیتابیس متصل میشم و در DesignTime دسترسی به فیلدها ندارم تا رویداد OnGetText رو تنظیم کنم.

فکر کنم باید با OnCalcFields کار کنم که اونم لامصب نمیدونم چرا جواب نمیده!

یوسف زالی
سه شنبه 17 دی 1392, 19:40 عصر
فیلد هاتون رو در زمان ساخت، اد کنید.
اگر تعداد اونها هم متغیره، ران تایم به اونها GetText انتساب بدید.

khoshblagh
سه شنبه 02 دی 1393, 12:16 عصر
با سلام
من با کد نتونستم از اون استفاده کنم. یعنی خطایی رخ نداد ولی علامت منفی به سمت چپ عدد هم منتقل نشد. چرا؟


procedure TfrmSanavatKhtmat.cdsSanavatJamMabMor1GetText(Send er: TField;
var Text: String; DisplayText: Boolean);
begin
Text:=Negative(cdsSanavatJamMabMor1.Value);
end;