PDA

View Full Version : رنگی کردن یا HighLight یک کلمه خاص در FastReport که ماهیت string دارد



mmx110
دوشنبه 08 بهمن 1386, 23:06 عصر
آیا رنگی کردن یا HighLight یک کلمه خاص درگزارش FastReport که ماهیت string دارد امکان دارد؟ مثل مارکر دار کردن که در RichEdit برای مشخص کردن کلمات خاص استفاده می شود. منتظر پاسخ شما هستم ...

vcldeveloper
سه شنبه 09 بهمن 1386, 03:28 صبح
روی کنترل Memo مربوطه در Designer دابل کلیک کنید و در پنجره باز شده تب Highlight را انتخاب کنید. در کادر Condition شرط خودتان را بنویسید:

CompareText(Value,'Test')
* بجای Test متنی که باید وجود آن مقایسه شود را بنویسید.

در بخش های Font و Background هم مشخصات متن Highlight شده را مشخص کنید.

mmx110
سه شنبه 09 بهمن 1386, 10:18 صبح
با تشکر از پاسخ شما جناب آقای کشاورز
1- من می خواهم یک کلمه فارسی خاص مثلا "کتاب" در کل یک متن Highlight شود ولی بقیه متن معمولی باشد. با روشی که فرمودید کل باندهای گزارش Highlight میشود
2-درصورتی که این مورد امکان پذیر است آیا می شود مقدار مورد نظر را با یک متغیر قبل از باز کردن گزارش به آن پاس کرد یعنی هر دفعه بتوان آن را عوض کرد؟
ممنونم از توجه شما...

vcldeveloper
چهارشنبه 10 بهمن 1386, 02:57 صبح
می تونید متن مورد نظر را در یک RichEdit معمولی Highlight کنید و قبل از نمایش گزارش در رویداد OnBeforePrint متن موجود در RichEdit را از طریق Stream به شی frxRichView در گزارش منتقل کنید.

ohh_mid
چهارشنبه 10 بهمن 1386, 16:16 عصر
سلام
اگه منظور شما رو درست فهمییده باشم برای این جور کارها معمولا از regular expression استفاده می کنند یه مثالی هم در سایت www.CodeKeep.net برای این موضوع هست امیدوارم که مشکل شما رو حل کنه
اینم لینک سایت : http://codekeep.net/snippets/6792997f-1c56-412f-835a-258518441a6f.aspx

vcldeveloper
چهارشنبه 10 بهمن 1386, 17:16 عصر
اگه منظور شما رو درست فهمییده باشم برای این جور کارها معمولا از regular expression استفاده می کنند یه مثالی هم در سایت www.CodeKeep.net (http://www.codekeep.net/) برای این موضوع هست امیدوارم که مشکل شما رو حل کنه
نه، مشکل پیدا کردن کلمات نیست، مسئله ایشون اینه که چطور Highlight را در ابزار گزارش سازی FastReport نمایش بدند.

mmx110
پنج شنبه 11 بهمن 1386, 08:13 صبح
ممنونم از راهنمایی شما دوستان عزیز
فقط یک خواهش از جناب کشاورز دارم و آن اینکه در مورد Stream که فرمودید بنده را با یک مثال کوچک راهنمایی بفرمایید چون قطعا این تجربه شما برای همه جالب و مفید خواهد بود ضمن سپاس مجدد...

vcldeveloper
پنج شنبه 11 بهمن 1386, 10:51 صبح
procedure InsertRichText(REControl: TRichEdit; const frxControl: string);
var
frxRichView : TfrxRichView;
MS : TMemoryStream;
begin
if (not Assigned(REControl)) or (frxControl = '') then
Exit;
frxRichView := frxReport.FindObject(frxControl) as TfrxRichView;
if Assigned(frxRichView) then
begin
MS := TMemoryStream.Create;
try
{Set BiDiMode to show Farsi text properly.}
//frxRichView.RichEdit.BiDiMode := bdRightToLeft;
//frxRichView.RichEdit.LangOptions := [rlAutoKeyboard];

{Store the rich-text data into a stream, otherwise text format will not
be transfered. Then save the data from the stream to the RichView
control of FastReport object.}
REControl.Lines.SaveToStream(MS);
MS.Seek(0,0);
frxRichView.RichEdit.Lines.LoadFromStream(MS);
finally
MS.Free;
end;
end;

end;

mmx110
جمعه 12 بهمن 1386, 19:06 عصر
این راهنمایی جناب کشاورز بسیار عالی است اما در حالتی که 2500 رکورد از نوع memo نتیجه جستجو توسط یک کوئری می باشد آیا می توان همه نتایج را به همین صورت Highlight نمود و سرعت اعلام نتایج نرمال بماند؟ یعنی هیچ راهی برای تعریف یک Condition یا الگوی معین روی باندهای گزارش وجود ندارد تا بتواند فقط کلمات خاصی را در هر باند گزارش رنگی نماید؟

vcldeveloper
دوشنبه 15 بهمن 1386, 17:06 عصر
آمکان اینکه خودشون براتون محتوی متن را آنالیز کنند و کلمات مورد نظر شما را رنگی کنند، ندارند. می تونند بر اساس Condition کل متن را رنگی کنند. اگر خودتون می دونید کجا ها باید رنگی بشه، می تونید از Tag های HTML هم استفاده کنید.

mohammad_kerman65
یک شنبه 29 بهمن 1391, 15:28 عصر
با سلام
من هرکار کردم که یک تاپیک مجزا برای سوالم ایجاد کنم نتوانستم!!!واسه همین مجبور شدم اینجا سوالم بپرسم
من میخوام توی FastReaport یک گزارش چاپ کنم به این صورت که در یک سطر مشخصات کلی فاکتور و در سطرهای بعدی با کمی تورفتگی مواردی که در فاکتور قید شده.باز دوباره کلیات فاکتور بعدی و در سطرهای بهدیش با تورفتگی موارد آن فاکتور....
یا اینکه این کا رو توی ADVColumnGrid انجام بدم و کل جدول رو بفرستم توی FastReaport برای چاپ
ممنون میشم هم در مورد این کار و هم اینکه چطور یک تاپیک ایجاد کنم راهنمائئ فرمائید
با تشکر

mohammad_kerman65
دوشنبه 30 بهمن 1391, 08:11 صبح
سلام کسی نمیدونه چکار باید کرد؟؟؟؟1 پیشنهادی یا راهنمائی...

mohammad_kerman65
دوشنبه 30 بهمن 1391, 10:23 صبح
سلام کسی نمیدونه چکار باید کرد؟؟؟؟1 پیشنهادی یا راهنمائی...