Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
30.10.2001, 17:35
Retro



Huhu allerseits...
Ich hab nen mehr oder weniger kleines Delphi-Problem.

In meinen Prog habe ich ein RichEdit (RichEdit1) welches als Protokollfenster dienen soll. Es werden also dauerhaft Daten hinengeschrieben.Quellcode:procedure AddProtLine(Text: String)
begin
  RichEdit1.Lines.Add(Text);
end
(Das steht natürlich net alleine in der Funktion, aber um es zu erklären reichts ;)

So, AddProtLine wird nun jede 10sec. von nem Timer aufgerufen, und schreibt nen paar Variablen ins RichEdit. Bestimmte Events können AddProtLine auch aufrufen.

Das worauf ich hinauswill ist, das RichEdit soll mitscrollen. Wenn jetzt eine Linie dazu geschrieben wird, bleibt es bei der aktuellen Position stehen - nur der Scrollbalken wird länger. Ich möchte jedoch, das der neuste Wert immer unten drangehängt wird (also das soll so bleiben), er allerdings immer fokusiert ist.

Hab leider nichts gefunden wie man das realisieren könnte.. vielleicht hat hier jemand ne Idee? Naja.. auf jedenfall schonmal Thx! :)

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */

zum Seitenanfang zum Seitenende Profil || Suche
001
30.10.2001, 18:09
Hessie J.



KA ob's funzt, aber kannst Du dem Control nicht per SendMessage die Taste Ctrl-End schicken?

--

zum Seitenanfang zum Seitenende Profil || Suche
002
30.10.2001, 18:10
Retro



Joa... dürfte gehen, aber das ist ne ziemlich unfeine Methode! =(

Außerdem gibts bestimmt Probleme wenn das RichEdit nicht Fokussiert ist.

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */

zum Seitenanfang zum Seitenende Profil || Suche
003
30.10.2001, 18:56
TheTinySteini



Dann musst du halt vorher ein SetFocus auf das RichEdit machen.

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
004
30.10.2001, 20:38
Retro



Tztztz... grad von dir hätt ich das nicht gedacht TTT >;)

Sowas ist schmuddelig, ich möcht eigentlich nicht das dauerhaft nen Tastendruck simuliert wird, noch dazu nen SetFocus dauerhaft ein Objekt anvisiert. Denn da sind noch nen paar andre Objekte die auch mal im Mittelpunkt stehen möchten :)

Außerdem will ich mir nicht die Hände schmutzig machen. hehe
Aber vielleicht noch ne andere Idee?

Trotzdem Thx, obwohl ich nicht genau weiss, ob die Tipps nett oder zerstörerisch gemeint waren! *fg*

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */


Dieser Beitrag wurde am 30.10.2001 um 20:38 von Retro bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
005
30.10.2001, 20:40
Ferdi



Caret-Position auf Länge des Textes stellen....

hmm Delphi ... schon lange her....

in VB Syntax:

RichEdit1.SelStart = Len(RichEdit1.Text)

zwar auch nicht grad dass beste...aber immerhin

--


Dieser Beitrag wurde am 30.10.2001 um 20:45 von Ferdi bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
006
30.10.2001, 20:46
Kriz



In Java wäre Ferdis Idee brauchbar: Man ermittelt die Länge des Textes und setzt die Caretposition ans Ende. Wenn das RichEdit in Delphi schlau genug ist (in Java ist es das jedenfalls), scrollt es dann automatisch bis ans Ende des Textes =)

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
007
30.10.2001, 20:54
Retro



Nene, Richy ist zu dumm! =)

Es liefert sogar nen Programmfehler inc. Absturz lol

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */

zum Seitenanfang zum Seitenende Profil || Suche
008
31.10.2001, 10:20
Hessie J.



Anspruchsvoll isser auch noch! :) Dann versuch's mal mit folgendem (ungetestet und nach Delphi musst Du es selbst 'portieren')
Quellcode:int minPos, maxPos;
GetScrollRange(hWnd, SB_VERT, &minPos, &maxPos);
SetScrollPos(hWnd, SB_VERT, maxPos, TRUE);

[edit]
STOP! Ich hab' ganz übersehen, dass man das heutzutage mit Get/SetScrollInfo machen soll ...
[/edit]

--


Dieser Beitrag wurde am 31.10.2001 um 10:36 von Hessie J. bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
009
31.10.2001, 13:09
TheTinySteini



Retro? Ich hab das eben ausprobiert in Delphi 6, da scrollt Lines.Add() automatisch mit nach unten! Und wenn ich dann RichEdit1.SelStart := 0 eingebe, ist er wieder ganz oben.
Naja, probier nochma dies hier:
RichEdit1.SelStart := RichEdit1.GetTextLen; (oder so ähnlich, mit dem GetTextLen bin ich mir nicht ganz sicher).

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
010
31.10.2001, 16:53
Retro



Hmm, also ich hab Delphi 6 Professionell, und bei mir scrollt es nicht =(

Was jetzt aber wirklich merkwürdig ist, ist dass meine RichEdit-Komponente garnicht auf >>RichEdit1.SelStart := 0;<< reagiert!

Das hab ich jetzt nochmal schnell in nem "extra" Programm getestet, aber nichts ist, es bewegt sich kein Stück.

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */

zum Seitenanfang zum Seitenende Profil || Suche
011
31.10.2001, 20:20
TheTinySteini



Ähh?? Pretty strange, eh?

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
012
31.10.2001, 20:54
Retro



Jo, very strange..

Aber ich habs jetzt gelöst, sogar mit ner sehr feinen Variante! =)
Quellcode:procedure TForm1.RichEdit1Change(Sender: TObject);
begin
  with RichEdit1 do
  begin
    Perform(WM_VSCROLL, SB_BOTTOM, 0);
    Perform(WM_VSCROLL, SB_LINEUP, 0);
    Perform(WM_VSCROLL, SB_LINEUP, 0);
    Perform(WM_VSCROLL, SB_LINEUP, 0);
    Perform(WM_VSCROLL, SB_LINEUP, 0);
    Perform(WM_VSCROLL, SB_LINEUP, 0);
    Perform(WM_VSCROLL, SB_LINEUP, 0);
    Perform(WM_VSCROLL, SB_LINEUP, 0);
    Perform(WM_VSCROLL, SB_LINEUP, 0);
    Perform(WM_VSCROLL, SB_LINEUP, 0);
    Perform(WM_VSCROLL, SB_LINEUP, 0);
    Perform(WM_VSCROLL, SB_LINEUP, 0);
  end;
end;
Perform mag ich echt immer lieber ;)

Zuerst geht es nach ganz unten "SB_BOTTOM" und dann Linienweise nen Stück nach oben, bis soviele Linien zu sehen sind wie ich möchte :)

Also.. Problem gelöst, aber Thx für die Bemühungen!

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */

zum Seitenanfang zum Seitenende Profil || Suche
013
31.10.2001, 23:05
TheTinySteini



Najaaaa....
Also Pfusch ist das ja schon, würde ich mal so meinen.

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
014
01.11.2001, 00:49
Retro



Naaa... wenn man angeben könnte, wieviele Linien nach obe gescrollt werden sollen, währe es perfekt! Aber geht leider net..

Und wiso Pfusch? Es geht ja net besser... >>SelStart<< währe noch viel schlimmer, denn das scrollen zu aktuellen cursorposition ist ja eigentlich nur nen beiläufiger Effekt! *fg*
Es gibt noch >>ScrollBy<< das währe wohl perfekt, aber nen bissel umständlich weil man die X/Y Position anbegen muss.

Aber wie würdest dus besser machen als mit Perform? Schade das sich die Scrollbars nicht direkt ansprechen lassen.

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */

zum Seitenanfang zum Seitenende Profil || Suche
015
01.11.2001, 17:36
Another1



RichEdit1.SelStart := -1 is in normalem windows aufs letzte element scrollen, versuch das mal

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche
016
01.11.2001, 23:51
Retro



Nope, tut sich nichts... wirklich nen bissel merkwürdig =\

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */

zum Seitenanfang zum Seitenende Profil || Suche