logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[c++] Builder - Jak poprawnie pobrać pozycję karetki z Memo1 powyżej 3258 linii?

kloszi 15 Cze 2007 13:50 1126 2
REKLAMA
  • #1 3986693
    kloszi
    Poziom 21  
    Posty: 547
    Pomógł: 34
    Ocena: 89
    Mam problem z pobraniem pozycji karetki z Memo1
    Pozycje karetki pobieram w następujący sposób:
         
    TPoint  caret_position=Memo1->CaretPos;
    Label1->Caption=IntToStr(caret_position.y);


    Pozycja karetki powyżej 3258 linii źle wskazuje (przepełnia sie).
    Zna ktoś zna jakiś lepszy sposób pobrania pozycji karetki ?
  • REKLAMA
  • Pomocny post
    #2 3989296
    SaraniS
    Poziom 26  
    Posty: 745
    Pomógł: 78
    Ocena: 26
    Witam
    Ja u siebie (Delphi 6) zrobiłem to na funkcji (a raczej metodzie pola edycyjnego)
    
    function TREdit.GetCurPos: TPoint;
    begin// Podaje numer biezacego wiersza i kolumny
      Result.Y:= SendMessage(Handle, EM_EXLINEFROMCHAR, 0, SelStart) + 1;
      Result.X:= SelStart - SendMessage(Handle, EM_LINEINDEX, -1, 0) + 1;
    end;
    

    Handle, to uchwyt bieżącego okna (czyli tu kontrolki TREdit).
    Przykład zaczerpnąłem z samej dokumentacji Delphi, bodajże z przykładowego edytora od nich ;)
    A sposób jej działania wygląda tak:
    
    Status1.Panels[1].Text:= IntToStr(GetCurPos.y) + ' : ' + IntToStr(GetCurPos.x);
    

    Pozdrawiam
REKLAMA