Autor Beitrag
Tante Ulla
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Sa 16.06.07 08:38 
Hi,

ich habe ein TRichEdit mit fester Größe (20 Zeilen mit je 59 Zeichen, also max. 1180 Zeichen).
MaxLength habe ich auf 1180 gesetzt.
Allerdings könnte da jetzt jemand auf die Idee kommen und da 20 Leerzeilen einfügen und ab Zeile 21 den eigentlichen Text eingeben. Deswegen würde ich gerne die aktuelle Cursor Position in Echtzeit auslesen und in ein anderes Feld in Echtzeit schreiben, um dem eingebenden User die noch zur Verfügung stehenden Zeichen anzuzeigen.
Also:
Restzeichen = MaxLength - (letzteZeile -1) * 59 - AnzahlZeicheninletzterZeile

Geht sowas in Echtzeit? Und wenn ja, hat jemand nen Hinweis mit welchen Mitteln oder nach was ich hier im Forum suchen muss?


Zuletzt bearbeitet von Tante Ulla am Sa 16.06.07 08:52, insgesamt 1-mal bearbeitet
bflegel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 193
Erhaltene Danke: 1

Win XP, Win 7, BS2000
D5
BeitragVerfasst: Sa 16.06.07 08:43 
Hmmm, ich hab zwar noch nicht mit RichEdit gearbeitet, kenne daher nicht dessen Eigenschaften, aber könntest Du nicht, wenn Du Dich im Richedit befindest, per Timer die Anzahl der eingegebenen Zeichen zählen und dann ausgeben?

_________________
I know all the jokes about my name
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Sa 16.06.07 09:14 
Schau mal nach Caret Position gibt Dir Zeile und Position an.

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
Tante Ulla Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Sa 16.06.07 12:13 
Ein Fettes Danke euch beiden.

Der Tip mit dem Timer war genau das was ich gebraucht habe.
Die Berechnungen habe ich mit Lines.Count und Text(Length) hinbekommen.
Funzt jetzt so wie es soll.
bflegel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 193
Erhaltene Danke: 1

Win XP, Win 7, BS2000
D5
BeitragVerfasst: Sa 16.06.07 12:23 
Gern geschehen...

_________________
I know all the jokes about my name
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Sa 16.06.07 12:38 
Ich würd das nich in nem Timer berechnen, sondern im Ereignis OnChange von RichEdit. So wirds nur dann neu berechnet, wenn sich auch worklich was ändert.

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
Tante Ulla Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Sa 16.06.07 13:46 
Noch besser. Funzt mit OnChange super, ich denke damit sollte es noch wesentlich ressourcenschonender sein. Dangööööö
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Sa 16.06.07 18:37 
Hallo,

wenn das RichEdit so eingerichtet ist das alle Zeilen im sichtbaren Bereich liegen, dann dürfte das Ereignis OnResizeRequest besser als OnChange sein. OnResizeRequest wird ausgelöst wenn ein größerer Bereich für den Text benötigt wird, also wenn eine neue Zeile benutzt wird.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.RichEdit1ResizeRequest(Sender: TObject; Rect: TRect);
begin
  if Rect.Bottom - Rect.Top > RichEdit1.ClientHeight then
    Label.Caption := 'Es reicht';
end;

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
Tante Ulla Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: So 17.06.07 09:16 
Auch ne gute Idee, die ich gleich umgesetz habe. Ich hab dafür aber dann nen MessageDlg anstatt Label.Caption genommen.
Nochmal ein fettes Dangööööö für eure Anregungen und Tips.