PDA

View Full Version : مشکلی دررابطه با کامپوننت Ehlib



soroush_vs
پنج شنبه 23 آذر 1385, 10:31 صبح
با سلام.
من برای تهیه ریپورت در یکی از پنجره های برنامه از کامپوننت Ehlib آستفاده کردم. ولی با یک مشکل مهم مواجه شدم که سرچ توی سایت هم مشکلم رو برطرف نکرد.
مشکل اینه که در کامپوننت PrintDBGrid در Property های AfterGridText ,BeforeGridText زمانی که ما در Run Time بخواهیم متنی را قرار دهیم اولا این متن خودکار LeftJustify میشود یعنی سمت چپ کاعذ ظاهر میشود و دوم اینکه امکان عوض کردن فونت اون وجود ندارد.
من حتی سورس کامپوننت رو هم دارم و در فرم گزارش گیری فونت فرم اصلی رو عوض کردم اما مشکل حل نشد.
از دوستان اگر کسی این مشکل رو قبلا حل کرده ممنون میشم راهنمایی کنه.

دنیای دلفی
پنج شنبه 23 آذر 1385, 13:49 عصر
شما می توانید از RichEdit مربو ط به 1stclass 4000 استفاده کنید و سپس آن را به ehlib انتصاب دهید

soroush_vs
پنج شنبه 23 آذر 1385, 17:11 عصر
ممنون از راهنمایی
در هنگاه Design Time وقتی که بر روی خصوصیت AfterGridText ,BeforeGridText کلیک کنیم یک محیط پیشرفته برای انتقال متن رو مشاهده میکنیم.اما این کلاس یک کلاس ابتدایی TStrings هست یعنی با کد نویسی نمیتونیم فونت و RightJutify بدهیم.و این لاس تنها اجازی وارد کردن یک متن ساده را به برنامه نویس میدهد.اگر اشتباه میکنم لطفا مرا راهنمایی کنید.
این نکنه رو هم بگم که من میخوام در زمان جرا بدون نرم افزار یا واسطکرافیکی دیگر این انتقال متن رو انجام بدهم.

MNosouhi
پنج شنبه 23 آذر 1385, 20:03 عصر
یه نگاهی به فایل Dfmش بکن (اگه آشنایی داری) . میتونه راهنمایتون کنه.

soroush_vs
جمعه 24 آذر 1385, 19:31 عصر
یه نگاهی به فایل Dfmش بکن (اگه آشنایی داری) . میتونه راهنمایتون کنه.
دوست عزیز معلومه که شما اصلا با این کامپوننت کار نکردید یا اصلا اون رو ندیدید.
اگر به گفته خود اعتقاد دارید لطفا دقیقتر بگید که کجای فایل DFM
فایل DFM مربوط به GUI میشه درسته اما این کلاس (TStrings) در این کامپوننت اصلا این امکان رو نداره که فونت رو عوض کرد و یا RightJustify کرد.اما در DesignTime به راحتی میشه با یک IDE جداگانه هر متن با هر فرمتی رو به اون اختصاص داد.
اگر کامپوننت را دیده باشید متوجه خواهید شد.
دوستان دیگر اگر با این مشکل مواجه شدن لطفا بنده رو هم بی نصیب نزارن

soroush_vs
شنبه 25 آذر 1385, 09:25 صبح
از استیدی که در سایت هستند هیچ کس نمیتونه مشکل بنده رو حل کنه یا راه حلی ارائه کنه؟

soroush_vs
شنبه 25 آذر 1385, 09:52 صبح
اجازه بدید سوالم رو این طوری مطرح کنم
چگونه میتوان در کلاس TStrings فونت و RightJustify رو تنظیم کرد؟

soroush_vs
شنبه 25 آذر 1385, 15:10 عصر
هیچ کس نبود که تجربه ی کار با این قسمت رو داشته باشه؟

MNosouhi
شنبه 25 آذر 1385, 21:26 عصر
دوست عزیز معلومه که شما اصلا با این کامپوننت کار نکردید یا اصلا اون رو ندیدید.
اگر به گفته خود اعتقاد دارید لطفا دقیقتر بگید که کجای فایل DFM
فایل DFM مربوط به GUI میشه درسته اما این کلاس (TStrings) در این کامپوننت اصلا این امکان رو نداره که فونت رو عوض کرد و یا RightJustify کرد.اما در DesignTime به راحتی میشه با یک IDE جداگانه هر متن با هر فرمتی رو به اون اختصاص داد.
اگر کامپوننت را دیده باشید متوجه خواهید شد.

دقیقا در این قسمت :

BeforeGridText_Data = {
7B5C727466315C6662696469735C616E73695C616E73696370 67313235365C64
656666305C6465666C616E67313036357B5C666F6E7474626C 7B5C66305C666E
696C5C6663686172736574313738205461686F6D613B7D7B5C 66315C666E696C
5C666368617273657430205461686F6D613B7D7D0D0A5C7669 65776B696E6434
5C7563315C706172645C6C74727061725C71725C66305C7274 6C63685C667331
365C2764335C2765315C2763375C2765335C66315C6C747263 68200D0A5C7061
72207D0D0A00}
end
که به زبون ما آدمها این میشه :

{\rtf1\fbidis\ansi\ansicpg1256\deff0\deflang1065{\ fonttbl{\f0\fnil\fcharset178 Tahoma;}{\f1\fnil\fcharset0 Tahoma;}}
\viewkind4\uc1\pard\ltrpar\qr\f0\rtlch\fs16\'d3\'e 1\'c7\'e3\f1\ltrch
\par }

خب دیگه ، از اینجا به بعدش هم که دیگه معلومه . این استاندارد ، مال ذخیره فایل های RTF هستش . یعنی این کامپوننت از فرمت بندی Rtf برای ذخیره مقدار دو پراپرتی AfterGridText , BeforeGridText استفاده می کنه .
حالا کافیه متن مورد نظرت رو تحت این قالب به این دو پراپرتی تحویل بدی.
البته لازم هم نداری که از این فرمت بندی مطلع باشی . کافیه که متن مورد نظرت رو در یه فایل Rtf ذخیره کنی و بعد با LoadFromFile درون این پراپرتی بریزی. (در دموهای دلفی یه مثال با نام richedit هست که میتونه بیشتر کمکت کنه . چون با پسوند rtf ذخیره میکنه).

soroush_vs
شنبه 25 آذر 1385, 22:21 عصر
آقای MNosouhi اصلا لازم نیست اول در یک فایل ذخیره کرد و سپس در اون پراپرتی لود کرد تنها لازمه از این دستور استفاده کرد

PrintDBGridEh1.AfterGridText:=RichEdit1.Lines
من راه حل ساده تری را لازم دارم که احتیاجی به RichEdit نداشته باشد در ضمن متنی که بایستی در اون پراپرتی قرار بگیرد ثابت نیست بنابر این مساله مقداری پیچیده خواهد بود

MNosouhi
شنبه 25 آذر 1385, 22:31 عصر
آقای MNosouhi اصلا لازم نیست اول در یک فایل ذخیره کرد و سپس در اون پراپرتی لود کرد تنها لازمه از این دستور استفاده کرد
فقط یه مثال زدم .

من راه حل ساده تری را لازم دارم که احتیاجی به RichEdit نداشته باشد
خب باید از منطق rtf سر دربیارید دیگه تا بتونید مستقیم کار کنید.