PDA

View Full Version : فرمان Go to Lines برای TMemo



Pichidehtarin
سه شنبه 25 فروردین 1383, 18:13 عصر
حتما NotePad ویندوز رو دیدین تو منوی Edit اون یه فرمان به نام Go to Lines هست که من فکر میکنم کدش ساده باشه . اگه میشه کدش رو برام بنویسین ممنون میشم .

Mehdi_FT
چهارشنبه 26 فروردین 1383, 00:48 صبح
سلام


memo1.SelStart:=memo1.Perform(EM_LINEINDEX,Line Number,0);
memo1.SetFocus;

انشالله که مفید باشه.

Pichidehtarin
چهارشنبه 26 فروردین 1383, 07:32 صبح
ممنون

اگه خط مورد نظر پایین تر از ارتفاع Memo باشه مکان نما به اونجا میره ولی نمایش داده نمیشه .

HideSelection رو هم False کردم ولی جواب نداد .

اگه میشد این مشکل رو یه جوری بر طرف کرد آلی میشد .

بازم ممنون .

Pichidehtarin
پنج شنبه 27 فروردین 1383, 08:55 صبح
واقعا کسی بلد نیست !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!

Mehdi_FT
جمعه 28 فروردین 1383, 17:11 عصر
سلام

شما با دستور زیر تعداد کل سطرهای memo را بدست می یارید.

Memo1.Lines.Count
خوب دیگه حالا یه شرط بذار اگه عددی که کاربر میده بیشتر از تعداد خطوط باشه مثلا یه پیغام error بده.

انشاالله که جوابت گرفته باشی.

Pichidehtarin
شنبه 29 فروردین 1383, 08:47 صبح
ممنون ولی ...
خطی که کاربر وارد میکنه وجود داره و مکان نما به اونجا میره ولی ScrollBar برای نمایش مکان نما به اونجا نمیره .
یعنی مکان نما مثلا در خط 10 که بیشتر از ارتفاع Memo هست قرار میگیره ولی ما خط 10 رو نمیبینیم .
امیدوارم که متوجه این مشکل شده باشین .

amirrf
شنبه 29 فروردین 1383, 12:41 عصر
با ویژگی CaretPos محل مکان نما را تعیین کنید و با پیغام EM_SCROLLCARET تقاضای اسکرول برای دیدن مکان نما بدهید.

Memo1.CaretPos := Point(LINE, COLUMN);
Memo1.Perform(EM_SCROLLCARET, 0, 0);

Pichidehtarin
شنبه 29 فروردین 1383, 14:24 عصر
من این کد رو تو دلفی 8 امتحان کردم ولی متد Point رو اشتباه میگیره و میگه
'Error] Unit1.pas(30): Undeclared identifier: 'Point]
در ضمن به جای Line و Column هم سطر و ستون رو وارد کردم (با اینکه ربطی نداشت) ولی همون مشکل رو داره .
من فکر میکردم باید خیلی ساده تر از این حرفا باشه ! (عجیبه!)

Pichidehtarin
شنبه 29 فروردین 1383, 17:38 عصر
از همتون ممنون
مشکل با ترکیب و کمی اصلاحات ادراکی کد های فوق حل شد .

;(Memo1.SelStart := Memo1.Perform(EM_LINEINDEX, Line Number, 0
;(Memo1.Perform(EM_SCROLLCARET, Line Number, 0
;Memo1.SetFocus

اگه کسی کد ساده تری بلده دریغ نکنه .

راستی من نتوستم کد ها رو تو بخش کد بنویسم خراب میشد ؟؟