TEdit

0

Jakie zmienne w polu edycji określają położenie [email protected]

0

edit1.SelStart i masz pozycje kursora

0

SelStart nie podaje pozycji kursora

0

dobra mow co chcesz, jestes madrzejszy

0

Chodzi o zmienną która przy przesuwaniu kursora w polu Edti prawo lewo poda za którym znakiem obecnie kursor i czy można programow zmienić pozycję kursora

0

ZIOMBER ma racje, a jak chcesz kombinowac to spróbuj CarretPos

jak chcesz to co za znak jest za kursorem to Edit1.Text[Edit1.SelStart+1]

0

SelStart nie podaje pozycji kursora

Może nazwa wydaje Ci się myląca (Początek zaznaczenia), ale to zazwyczaj jest właśnie pozycja kursora, ponieważ kiedy nic nie zaznaczasz, to kursor jest zaznaczeniem o wielkości 0 znaków. Dlatego możesz tu odczytać i zmienić jego pozycję. Dopiero kiedy SelLength ma wartość inną niż 0 - kursor staje się zaznaczeniem.

0

wartość zmiennej selstart zmienia się tylko w trakcie pisania a przy przesuwaniu kursora nie

0

wartość zmiennej selstart zmienia się tylko w trakcie pisania a przy przesuwaniu kursora nie

Też się zmienia. Wprawdzie nie widać tego spod <font color="red">zdażenia </span>OnKeyPress, ale jeżeli napiszesz kod w OnKeyDown - wartość będzie się poprawnie zmieniać.

0

A co mi po zmiennej która się zmienia od czsu do czasu
potrzebuje odpowiednik Memo1.CaretPos uzywam Delphi 6

0

Chyba źle mnei zrozumiałeś... ta zmienna ZAWSZE wskazuje POPRAWNĄ pozycję kursora, ale naciśnięcie klawisza strałki NIE POWODUJE wywołana zdarzenia OnKeyPress, dlatego może wydawało Ci się, że zmienna się nie zmienia!
Możesz nawet dać sobei Timera i zobaczyć że zmienna zawsze pokazuje wlasciwa pozycje.

0

procedure TForm1.Edit1Change(Sender: TObject);
begin
label1.Caption := edit1.Text;
label2.Caption := inttostr (edit1.selstart);
end;

wyprowadzając w ten sposób zawartość zmiennej na ekran niestety nie widzę zmian, a potrzbuje wiedzieć dokładnie gdzie w danej chwili jest kursor

0

Podczas pisania posta napisałem taki kod:

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    Label1.Caption := IntTOStr(Edit1.SelStart);
end;

a potem taki:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
    Label1.Caption := IntTOStr(Edit1.SelStart);
end;

(Timer1.Interval = 100);
Oba działały bez najmneijszych problemów

0

pierwsza procedura myli się o jeden znak druga działa poprawnie,
innego sposobu bez użycia Timera

0

pierwsza procedura myli się o jeden znak druga działa poprawnie,
innego sposobu bez użycia Timera

Właśnie dałeś piękne świadectwo zwojej dociekliwości i chęci do samodzielnwej pracy. Wpisać "Label1.Caption := IntToStr(Edit1.SelStart+/-1);"* się nie dało?!?!

  • zostawić + lub - w zależności od tego, czy jest o jeden za mało czy za dużo.
0

wpisz procedurę w kompilator i sprawdź jeżeli za pierwszym znakiem masz raz 1 a potem warość 0 to który nak mam zostawić + czy -

0

zablokujcie lub usuncie ten post boshe!

0

Znów wystarczyło chwilę pomyśleć: wstaw to do OnKeyUp (bez +/-). Aktualizacja zaznaczenia następuje po wywołaniu OnKeyDown. I od razu mówię, że musisz też dać ten kod do OnMouseUp żeby reagowało na zmany zaznaczenia myszą.

ZIOMBER: Już jest dobrze, to na pewno zadziała.

0

Ja tu czegos nie halo...

prosi typek o kod a sam pisze ze kody sa zle i ze jego jest lepszy... [glowa]

1 użytkowników online, w tym zalogowanych: 0, gości: 1