PDA

View Full Version : پرش به چند ستون بعد



free
چهارشنبه 16 مرداد 1387, 10:51 صبح
سلام. می خواهم اطلاعاتی را در یک memo قرار دهم با فرمت خودم. مثلا یک نام سپس پرش به 10 ستون بعد و قرار دادن نام بعدی. برای پرش به چند ستون بعد از چه دستوری استفاده نمایم؟(مثل سوییچ ها t/)

dkhatibi
چهارشنبه 16 مرداد 1387, 11:00 صبح
همچنین سوئیچی با دستور فرمت وجود دارد، اما می توانید از Tstring و متد Comma استفاده نمایید.

free
چهارشنبه 16 مرداد 1387, 12:06 عصر
میشه لطف کنید نحوه استفاده از دستور format را بیان کنید.

taha
چهارشنبه 16 مرداد 1387, 14:10 عصر
سلام

به این آدرس (http://www.delphibasics.co.uk/RTL.asp?Name=Format) یه نگاهی بکن و به مثالهاش. چیز خوبیه.

free
پنج شنبه 17 مرداد 1387, 08:05 صبح
متشکرم. اما این مثالها نحوه فرمت بندی خود عدد را مشخص می کنند.من می خواهم چنین چیزی داشته باشم در memo

mzjahromi
پنج شنبه 17 مرداد 1387, 08:43 صبح
حالا حتما باید از MEMO استفاده بشه
امکانات بهتری مثل StringGrid هست که ویژه این کار هست.
آخه یه چیزی مثل MEMOکه مثل برنامه های قدیمی تحت داس عمل نمیکنه. طول کاراکترها متغیره برای همین نمیشه تعین کرد که دقیقا زیر بالائی میشه کجا

taha
پنج شنبه 17 مرداد 1387, 12:02 عصر
سلام

خب وقتی می خوای اطلاعات را به Memo اضافه کنی با همون فرمت مدنظرت اضافه کن. مشکل چیه؟

Mahmood_M
پنج شنبه 17 مرداد 1387, 15:34 عصر
متشکرم. اما این مثالها نحوه فرمت بندی خود عدد را مشخص می کنند.من می خواهم چنین چیزی داشته باشم در memo
من تابعی نوشتم که تقریبا همچین کاری رو انجام میده ، می تونید از اون استفاده کنید ، متن تابع :


function AddtoMemo(Num1, Num2: String; M: TMemo; Len: Integer; Title1, Title2 : String): Integer;
var
TempStr : String;
I, L, Spaces : Integer;
begin
if Len < Length(Title1+Title2+' ') then
begin
MessageBox(Application.MainForm.Handle, 'The Length you are Entered is Short !', '', MB_OK+MB_ICONEXCLAMATION);
Exit;
end;
if M.Lines.Count = 0 then
begin
Spaces := Len - (Length(Title1) + Length(Title1));
TempStr := Title1;
for I := 1 to Spaces do
begin
TempStr := TempStr + ' ';
end;
TempStr := TempStr + Title2;
M.Lines.Add(TempStr);
L := Length(M.Lines.ValueFromIndex[0]);
TempStr := '';
for I := 1 to L do
TempStr := TempStr + '_';
M.Lines.Add(TempStr);
end;
L := Length(M.Lines.ValueFromIndex[0]);
Spaces := L - (Length(Num1) + Length(Num2));
TempStr := Num1;
for I := 1 to Spaces do
TempStr := TempStr + ' ';
TempStr := TempStr + Num2;
M.Lines.Add(TempStr);
end;

برنامه نمونه برای استفاده از این تابع :
-------------
21469
-------------
برنامه نمونه رو دانلود کنید ، اگر باز توی استفاده از این تابع مشکل داشتید ، بگید تا راهنمایی کنم ...

موفق باشید ...

free
شنبه 19 مرداد 1387, 09:42 صبح
دوست عزیز واقعا از زحمتی که کشیدید متشکرم.لطف کردید.اما این تابع هم اعداد را درست نمی چیند.به فایل ضمیمه توجه فرمایید.ممنون میشم راهنمایی نمایید.

Mahmood_M
شنبه 19 مرداد 1387, 12:07 عصر
فکر نکنم این مشکل رو بشه با تنظیم رشته ها و طول کارکترها حل کرد ، چون هر کارکتر طول خاصی داره ، نمی شه دقیقا مشخص کرد که چطوری زیر هم می افتند ، فقط میشه Length کل خط رو با خط اول تنظیم کرد ...
ولی به هر حال امتحان میکنم اگه مشکل حل شد ، توی همین پست می زارم ...

موفق باشید ...