View Full Version : نمایش قسمت های مشخص شده از متن ممو1 در ممو 2
1072300
یک شنبه 25 مهر 1395, 18:34 عصر
سلام
متنی چند خطی در ممو1 دارم می خواهم با هر بار کلیک کردن بر روی باتوم 1 قسمتی از متن را که مشخص کرده ام در ممو 2 نمایش دهد و با کلیک بر روی باتوم 2 به متن قبلی را نمایش دهد هر بخش از متن ها را در داخل " " قرار داده ام. لطفا راهنمایی کنید
hamedjim
دوشنبه 26 مهر 1395, 12:28 عصر
از این دستورات استفاده کن:
Memo1.SelStart:= کارکتر شروع متن مورد نظر
Memo1.SelLength:= تعداد کارکترهای مورد نظر
Memo2.Clear;
Memo2.Text:= Memo1.SelText;
1072300
دوشنبه 26 مهر 1395, 15:14 عصر
این کد جواب گو نیست، هر قسمت از متن ها که باید با هم نمایش داده شود در داخل ممو به این صورت مشخص شده است " متن اول نمایش" و "متن دوم نمایش" و .... که تعداد کارکترهای هر قسمت هم متفاوت است و با کدی که شما زحمت کشیدید امکان پذیر نیست
hamedjim
دوشنبه 26 مهر 1395, 16:02 عصر
دقیقا متوجه نشدم. اما می تونی از دستور Pos موقعیت شروع متن رو بدست بیاری.
مثلا اگر قراره متن درست بعد از عبارت «متن اول نمایش» شروع بشه، این کار رو بکن:
Position: Integer;
S: String;
...
S:= 'متن اول نمایش';
Position:= Pos( S, Memo1.Text);
Position:= Position + Length(S);
1072300
دوشنبه 26 مهر 1395, 23:33 عصر
دوست من ممنونم، احساس می کنم نتونستم درست مساله را مطرح کنم. پس دوباره توضیح میدم.
صد خط متن داخل ممو 1 داریم که تقسیم به صد بخش شده است از یک کلمه تا چند خط. این بخشها را با شماره ای که ابتدای هر بخش قرار دارد مشخص کرده ام. (که می توانیم به جای عدد هر کاراکتری را قرار دهیم).
حالا می خواهیم هر بخش را به ترتیب با یک کلید1 فراخوانی کنیم و در ممو 2 نمایش دهیم. و با کلید 2 به متن قبل برگردیم.
hamedjim
سه شنبه 27 مهر 1395, 00:11 صبح
یک برنامه ساده نوشتم که شامل دو Memo ، یک Button برای نمایش متن های مورد نظر و یک SpinEdit برای تعیین متن مورد نظر هست.
در فریم اول عکسی که ضمیمه کردم یک متن انتخابی رو می بینی که به 3 بخش تقسیم شده و هر بخش با «ستاره-شماره-ستاره» (*1*, *2*, *3*) مشخص شده. در فریم دوم، برای SpinEdit عدد یک انتخاب شده و کلید Button1 فشرده شده. فریم سوم برای مقدار 2 و فریم چهارم برای مقدار 3 ، متن مورد نظر رو نشون میدن.
حالا با این الگو میشه برنامه رو به هر شکلی که مد نظر خودت هست تغییر بدی/
143065
کد برنامه:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Samples.Spin, Vcl.StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Memo2: TMemo;
Button1: TButton;
SpinEdit1: TSpinEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
Marker: String;
Next: String;
begin
Marker:= '*' + IntToStr(SpinEdit1.Value) + '*';
Next:= '*' + IntToStr(SpinEdit1.Value+ 1) + '*';
Memo1.SelStart:= Pos(Marker, Memo1.Text)+2;
Memo1.SelLength:= Pos(Next, Memo1.Text) - Pos(Marker, Memo1.Text)-3;
Memo2.Text:= Memo1.SelText;
end;
end.
1072300
چهارشنبه 19 آبان 1395, 18:55 عصر
سلام از پاسخ شما ممنونم:تشویق::تشویق:
یک سوال دیگر دارم
اگر متن های مشخص شده را به جای اینکه، تکست ممو باشد متن داخل یک فایل تکست بر روی هارد باشد آیا باز هم می توانیم به این صورت هر قسمت را به تکست ممو2 انتقال دهیم؟
ممنونم
hamedjim
یک شنبه 23 آبان 1395, 08:35 صبح
بله امکان پذیره.
کافیه فایل متنی مورد نظر رو با دستور زیر به داخل Memo بریزید:
Memo1.Lines.LoadFromFile('C:\Test.txt')
1072300
یک شنبه 23 آبان 1395, 14:19 عصر
دوست من بدون اینکه فایل متنی را به داخل memo انتقال بدهم این کار انجام شود. (قسمت مشخص شده متن را مستقیما از داخل فایل تکست بخواند و در داخل memo نمایش دهد).
hamedjim
یک شنبه 23 آبان 1395, 20:06 عصر
دوست من بدون اینکه فایل متنی را به داخل memo انتقال بدهم این کار انجام شود. (قسمت مشخص شده متن را مستقیما از داخل فایل تکست بخواند و در داخل memo نمایش دهد).
در این مورد اطلاعاتی ندارم. من تنها همین روشی که گفتم رو میشناسم: دریافت فایل متنی توسط یک ممو و جدا کردن متن مورد نظر از مموی اصلی به مموی دوم.
1072300
جمعه 28 آبان 1395, 18:00 عصر
دوستان و اساتید محترم کسی راهی به نظرش میرسه؟
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.