Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi tmemo cursor an erste stelle (https://www.delphipraxis.net/53226-tmemo-cursor-erste-stelle.html)

hardcorehorst 12. Sep 2005 17:55


tmemo cursor an erste stelle
 
ja ich nerve schon wieder

wie zur :twisted: krieg ich den cursor in die erste zeile in einem memo ???

Prob: Memo1 kann 2 Zeilen anzeigen hat aber 3 lines ( 4 inklusive der blöden leeren letzten zeile)
also steht der Cursor in der 4. leren zeile !!!
er soll aber in die erste und die blöde 4. zeile kann auch weg !!!

HILFE !!!!! :wall: :wiejetzt:

marabu 12. Sep 2005 17:58

Re: tmemo cursor an erste stelle
 
quick and dirty:

Delphi-Quellcode:
begin
  memo.SelStart := 0; // anfang der ersten zeile
  memo.SelStart := Length(Memo.Lines[0]); // ende der ersten zeile
end;
Grüße vom marabu

hardcorehorst 12. Sep 2005 18:05

Re: tmemo cursor an erste stelle
 
das klappt so nicht ...
ich meine mein cursor ist hier
Delphi-Quellcode:
Zeile 1
Zeile 2
Zeile 3
Zeile 4 <---
soll aber hier sein:
Delphi-Quellcode:
Zeile 1 <---
Zeile 2
Zeile 3
Zeile 4

Matze 12. Sep 2005 18:11

Re: tmemo cursor an erste stelle
 
Marabus Code geht, doch kommt es drauf an, wie du das aufrufst. Machst du es z.B. über einen Button, musst du den Fokus natürlich wieder auf's Memo setzen:

Delphi-Quellcode:
begin
  Memo1.SelStart := 0;
  Memo1.SelStart := Length(Memo1.Lines[0]);
  Memo1.SetFocus;
end;

Flocke 12. Sep 2005 18:17

Re: tmemo cursor an erste stelle
 
... oder HideSelection auf FALSE setzen (dann sollte das Setzen von SelStart funktionieren).

Matze 12. Sep 2005 18:19

Re: tmemo cursor an erste stelle
 
Zitat:

Zitat von Flocke
... oder HideSelection auf FALSE setzen (dann sollte das Setzen von SelStart funktionieren).

Hm, bei mir geht das nicht.

hardcorehorst 12. Sep 2005 18:24

Re: tmemo cursor an erste stelle
 
also ich hab n leeres form und da das gemacht aber da funzt das auch nich !!!!

ich hab delphi 7

PierreB 12. Sep 2005 18:27

Re: tmemo cursor an erste stelle
 
Zitat:

Zitat von hardcorehorst
also ich hab n leeres form und da das gemacht aber da funzt das auch nich !!!!

ich hab delphi 7

Doch es geht, habe es gerade selber mit D3 getestet.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
 Memo1.SelStart := 0;
 Memo1.SelStart := Length(Memo1.Lines[0]);
 Memo1.SetFocus;
end;

end.

marabu 12. Sep 2005 18:28

Re: tmemo cursor an erste stelle
 
Hi Leute,

der "Cursor" ist das caret und das sieht man ja erst wenn das Memo auch den Focus hat. Vielleicht ist nicht ganz klar gewesen, dass nur eine der beiden Zeilen von mir verwendet werden sollte:

Delphi-Quellcode:
procedure TDemoForm.JumpButtonClick(Sender: TObject);
begin
  with Memo do begin
    SelStart := Length(Lines[0]);
    SetFocus;
  end;
end;
marabu

hardcorehorst 12. Sep 2005 18:28

Re: tmemo cursor an erste stelle
 
mach mal bitte ein screenie vorher und nachher ! :chat:

hardcorehorst 12. Sep 2005 18:36

Re: tmemo cursor an erste stelle
 
Liste der Anhänge anzeigen (Anzahl: 1)
schaut mal bitte

marabu 12. Sep 2005 18:42

Re: tmemo cursor an erste stelle
 
Es wird immer unverständlicher, was du willst.

Wenn du nur per Knopf eine neue Zeile am Anfang vom Memo einfügen willst, dann so:

Delphi-Quellcode:
Memo.Lines.Insert(0, 'NeueZeile');
marabu

TeTSuO 8. Nov 2005 19:23

Re: tmemo cursor an erste stelle
 
Ich glaube ich weis was hier gemeint war ich habe nämlich das gleiche Problem

Mein memo kann nur 3 Zeilen anzeigen
Wenn ich jetzt mehrere Zeilen einfüge
zeigt mein Memo die letzten 3 Zeilen an

ich will aber das der Anwender die ersten 3 Sieht

Den Cursor auf die 1. Position setzen mit

Delphi-Quellcode:
  ...
  Memo.SelStart=0;
  Memo.SetFocus;
funktioniert zwar aber die Scrollbar ist immer noch unten und nicht oben.
Gibt es da noch ne andere Funktion?

TeTSuO 8. Nov 2005 21:08

Re: tmemo cursor an erste stelle
 
Ich habs gefunden wen's interessiert

Dieser Code setzt die Scrollbar nach oben

Delphi-Quellcode:
SendMessage(Memo1.Handle, WM_VSCROLL, SB_TOP, 0);
Ciao

turboPASCAL 8. Nov 2005 22:17

Re: tmemo cursor an erste stelle
 
Man(n) könnte ja auch:

Delphi-Quellcode:
MemoX.Perform(EM_LineScroll, 0, -MemoX.Lines.Count - 1);

Lannes 9. Nov 2005 13:00

Re: tmemo cursor an erste stelle
 
Hallo,
Zitat:

Zitat von hardcorehorst
...( 4 inklusive der blöden leeren letzten zeile)
...die blöde 4. zeile kann auch weg...

wenn es in den Zeilen Deines Memo keine Leerzeichen am Anfang und/oder Ende gibt die erhalten bleiben müssen kannst Du folgendes einbauen:
Zitat:

Zitat von Delphi-Hilfe
Die Funktion Trim entfernt alle am Anfang und Ende eines Strings vorhandenen Leer- und Steuerzeichen.

Delphi-Quellcode:
Memo1.Text := Trim(Memo1.Text);
willst Du eventuelle Leerzeichen erhalten, dann nimm diesen Code:
Delphi-Quellcode:
Memo1.Text := Copy(Memo1.Text,1,Length(Memo1.Text)-2);
Es werden die letzten beiden Steuerzeichen, die diesen "blöden" Zeilenumbruch erzeugen gelöscht.

Diese erste Zeile die Du löschen möchtest, ist in der Eigenschaft Lines deines Memo eingetragen.
Diesen Eintrag kannst Du im Objekt-Inspektor löschen, indem Du hinter der Eigenschaft Lines den Stringlisten-Editor aufrufst und den Eintrag entfernst.

Wenn beide Zeilen, die Erste und Letzte gelöscht sind, brauchst Du auch nichts mehr zum Scrollen. :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz