نمایش نتایج 1 تا 4 از 4

نام تاپیک: افزودن خط در ممو بدون اینکه کنترل به خط آخر بره

  1. #1
    کاربر دائمی آواتار seyed_farid
    تاریخ عضویت
    تیر 1384
    محل زندگی
    تهران
    پست
    459

    افزودن خط در ممو بدون اینکه کنترل به خط آخر بره

    با سلام

    من میخوام توی memo خط اضافه کنم ولی هر وقت خواستم کنترل رو به خط آخر ببرم.
    ظاهرا با دستور Memo1.Lines.Add(s) کنترل به خط آخر میره و این باعث میشه نتونم تکست این ممو را رصد کنم.

  2. #2
    کاربر دائمی آواتار Delphi Coder
    تاریخ عضویت
    آذر 1386
    محل زندگی
    c:\windows\system32
    پست
    579

    نقل قول: افزودن خط در ممو بدون اینکه کنترل به خط آخر بره

    نقل قول نوشته شده توسط seyed_farid مشاهده تاپیک
    با سلام

    من میخوام توی memo خط اضافه کنم ولی هر وقت خواستم کنترل رو به خط آخر ببرم.
    ظاهرا با دستور Memo1.Lines.Add(s) کنترل به خط آخر میره و این باعث میشه نتونم تکست این ممو را رصد کنم.
    دقیق متوجه منظورتون نشدم. زمانی که runtime چیزی به memo اضافه میکنید اتوماتیک اسکرول میشه به اخرین خط اگر میخواید این اتفاق نیافته قبل از اضافه کردن به memo این دستور
    Memo1.Lines.BeginUpdate;

    ونهایتا بعد از اضافه کردن متن
    Memo1.Lines.EndUpdate;

    رو صدا بزنید.
    احتمالا مشکلتون حل خواهد شد.

  3. #3
    کاربر دائمی آواتار seyed_farid
    تاریخ عضویت
    تیر 1384
    محل زندگی
    تهران
    پست
    459

    نقل قول: افزودن خط در ممو بدون اینکه کنترل به خط آخر بره

    سلام و تشکر از پاسختون
    احسنت

    حالا من میخوام اگر کاربر ممو را به خط آخر ببرد ، حالا دیگه اسکرول بشه.
    میشه این مورد را هم راهنمایی بفرمائید؟

  4. #4
    کاربر دائمی آواتار seyed_farid
    تاریخ عضویت
    تیر 1384
    محل زندگی
    تهران
    پست
    459

    نقل قول: افزودن خط در ممو بدون اینکه کنترل به خط آخر بره

    من کدم رو به این شکل نوشتم و مورد حل شد.
    Procedure AddLineToMemo(Memo : TMemo; S : String);
    // 97-10-28
    function GetVisibleLineCount(Memo: TMemo): Integer;
    var
    DC: HDC;
    SaveFont: HFONT;
    TextMetric: TTextMetric;
    EditRect: TRect;
    begin
    DC := GetDC(0);
    SaveFont := SelectObject(DC, Memo.Font.Handle);
    GetTextMetrics(DC, TextMetric);
    SelectObject(DC, SaveFont);
    ReleaseDC(0, DC);

    Memo.Perform(EM_GETRECT, 0, LPARAM(@EditRect));
    Result := (EditRect.Bottom - EditRect.Top) div TextMetric.tmHeight;
    end;

    var
    LineCount, TopLine, VisLines: Integer;
    NoSCRL : Boolean ;
    begin
    LineCount := Memo.Perform(EM_GETLINECOUNT, 0, 0) - 1;
    TopLine := Memo.Perform(EM_GETFIRSTVISIBLELINE, 0, 0);
    VisLines := GetVisibleLineCount(Memo);
    settings.Label32.caption := 'Top= ' + IntToStr(TopLine) + ' Count= ' + IntToStr(LineCount)+ ' Vis Line Count= '+ IntToStr(VisLines);


    NoSCRL := (TopLine + VisLines) <= LineCount;

    if NoSCRL then Memo.Lines.BeginUpdate;
    memo.Lines.Add(s);
    if NoSCRL then Memo.Lines.EndUpdate;

    end;


    اما حالا یه مورد دیگه داره.
    و اون اینکه در موقعیکه خطوط افزوده میشود و بخواهم یک بخشی از تکس رو سلکت کنم ، با آمدن و اضافه شدن خطوط جدید، سلکت من خراب میشه و از دست میره.
    چطور میشه حلش کرد؟

تاپیک های مشابه

  1. چاپ ارقام مرتبه زوج و فرد عدد ورودی
    نوشته شده توسط #Elahe# در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 22
    آخرین پست: سه شنبه 10 آذر 1388, 12:05 عصر
  2. سوال: راحته.زود جواب بدین
    نوشته شده توسط mahnaz_tbe در بخش PHP
    پاسخ: 3
    آخرین پست: سه شنبه 26 آبان 1388, 13:21 عصر
  3. فرستادن میل به یاه.! زود زود
    نوشته شده توسط armin_izer در بخش برنامه نویسی در 6 VB
    پاسخ: 9
    آخرین پست: پنج شنبه 22 اردیبهشت 1384, 17:22 عصر
  4. پاکسازی بخش وی بی.زود زود!!!!!
    نوشته شده توسط armin_izer در بخش برنامه نویسی در 6 VB
    پاسخ: 2
    آخرین پست: یک شنبه 18 اردیبهشت 1384, 22:22 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •