![]() |
Memo Nummerierung
Hey, kleine Frage.
Möchte immer wenn ich auf MenuItem4Click klicke neue Zeile dazufügen mit Laufender Nummerieung. [DP]procedure TForm1.MenuItem4Click(Sender: TObject); var i : Integer; begin Memo1.Lines.Add( IntToStr(i+1) + chr(9) + Edit9.Text + chr(9) + Edit10.Text + chr(9) + chr(9) + Edit12.Text ) ; end; [/DP] |
AW: Memo Nummerierung
Das wird mit einer lokalen Variablen aber nichts werden, da diese nach Abarbeitung der Methode ungültig ist. Du kannst nun entweder eine globale Variable oder ein privates Feld nehmen oder evtl. einfach auf die Zeilenanzahl des Memos zugreifen, das bleibt Dir überlassen.
|
AW: Memo Nummerierung
Da i nicht initialisiert ist geht das wohl nicht, also was genau willst Du erreichen, worauf bezieht sich die Zeilennummer?
z.B. könnte es so gehen:
Delphi-Quellcode:
Gruß
i:=Memo1.lines.count-1;
Memo1.Lines.Add(IntToStr(i+1) + chr(9) + Edit9.Text + chr(9) + Edit10.Text + chr(9) + chr(9) + Edit12.Text ) ; K-H |
AW: Memo Nummerierung
Ah so ähnlich hatte ich es auch schon mal.
Ein Fehler ist da jetzt noch ... Habe am Anfang überschrieften und Infos drinen ... und so fängt die Nummerierung bei 10 an. (könnte zwar -10 hinschreiben aber das wäre nicht so schön bei Änderungen) @DeddyH: globale Variable: inwiefern muss ich das machen? privates Feld : ka wie das geht. die Zeilenanzahl des Memos zugreifen: Ist ja jetzt bei dem vom p80286 der Fall. Nur halt das es jetzt bei 1 beginnen soll. |
AW: Memo Nummerierung
Unter umständen erkennt man (das Programm) wo die eigentlichen Daten beginnen, dann nimmst Diese Zeilennummer und ziehst sie von
Delphi-Quellcode:
ab?
.Count
Gruß K-H |
AW: Memo Nummerierung
so hab ich es jetzt gemacht ... aber geht es das er das von selber macht? bzw immer von 1 Anfängt? Und nicht nach der Zeile geht in der er sich befindet?
|
AW: Memo Nummerierung
Zitat:
Gruß K-H |
AW: Memo Nummerierung
Delphi-Quellcode:
Aber geht das auch so das er selber weiß ab welcher Zeile es Anfängt.
i:=Memo1.lines.count-11; //Hier jetzt Manuel 11 reingeschrieben
Memo1.Lines.Add(IntToStr(i+1) + chr(9) + Edit9.Text + chr(9) + Edit10.Text + chr(9) + chr(9) + Edit12.Text ) ; |
AW: Memo Nummerierung
Angenommen in Deinem Memo steht folgendes:
Überschrift 1 jetzt kommt ganz viel Text bis derr Speicher überläuft und nun folgen Daten ::: 1)daten 2)daten dann könntest Du folgendes machen:
Delphi-Quellcode:
So als Idee....
....
i:=-1; repeat inc(i,1) until i>Memo1.Lines.count-1 or pos(':::',Memo1.Lines[i])>0; ... Gruß K-H |
AW: Memo Nummerierung
Ja, genau das meine ich nur das er mir jetzt den Fehler schreibt: "boolean" expected "longint"
|
AW: Memo Nummerierung
Das fehlen ja auch Klammern. Muss man denn jede Kleinigkeit vorkauen?
|
AW: Memo Nummerierung
i:=-1;
repeat inc(i,1) until (i>Memo1.Lines.count-1) or (pos(':::',Memo1.Lines[i])>0); ok ... jetzt geht es aber es gebinnt immernoch bei 10 und nicht 1. |
AW: Memo Nummerierung
repeat-until erwartet eine Bool' sche Abbruchbedingung, will man mehrere davon verknüpfen, müssen diese (sofern sie sich aus einem Vergleich ergeben) einzeln eingeklammert werden.
Delphi-Quellcode:
until a = 1 //funktioniert
until a = 1 and b > 2 //funktioniert nicht until (a = 1) and (b > 2) //so funktioniert es wieder |
AW: Memo Nummerierung
Zitat:
Zitat:
Delphi-Quellcode:
Ob da jetzt für die richtige Zählung
i:=Memo1.Lines-i;
Delphi-Quellcode:
oder
+1
Delphi-Quellcode:
von Nöten ist mußt Du bitte selbst heraus finden.
-1
Gruß K-H |
AW: Memo Nummerierung
Man könnte auch das Memo Memo sein lassen und die Daten in einer eigenen Stringliste vorhalten, dann wird zumindest die Nummerierung einfacher. Dafür wird es dann ein wenig komplizierter, bei Änderungen das Memo zu aktualisieren. Letztendlich muss jeder für sich entscheiden, wie es für ihn besser zu handhaben ist.
|
AW: Memo Nummerierung
dann versteh ich jetzt nicht was das " pos(':::',Memo1.Lines[i])>0 " bringt?
Wenn ich es jetzt doch Manuel bei i>Memo1.Lines.count-1 einstellen muss? Und es dann wieder keine Änderungen annimmt? hää:? |
AW: Memo Nummerierung
Vielleicht ist mein Denkansatz von eben tatsächlich einfacher. Nehmen wir mal an, wir haben einen fixen Teil (Überschrift) und einen variablen Teil (eben Deine Daten). Dann könnte man es doch auch so machen (ungetestetes Beispiel):
Delphi-Quellcode:
procedure TDeinForm.ZeigePseudoDaten;
const FIXER_STRING = 'Dies ist die Überschrift' + sLineBreak + 'mit einer zweiten Zeile'; var Daten: TStringlist; i: integer; begin Daten := TStringlist.Create; try for i := 1 to 10 do Daten.Add(IntToStr(i) + '. Datenzeile'); Memo1.Lines.Text := FIXER_STRING + Daten.Text; finally Daten.Free; end; end; |
AW: Memo Nummerierung
Zitat:
![]() Zitat:
Du hast eine Liste mit Strings. (ob Stringlist oder Memo ist jetzt mal egal) Die letzte Zeile Deiner Überschriften/Vorwort/HeaderwasAuchImmer ist markiert, mit ßßß ._.>>>> oder was auch immer. Diese Zeilennummer suchst Du. LetzteZeile:=die Zeile in der der Marker ist Dann ist ZeilenZählungDieAusgegeben wird:=Liste.Count-Letzte Zeile; Hoffentlich hab ich mich jetzt nicht wieder vertan. Gruß K-H @DeddyH Ich vermute der Text ist schon vor dem Einfügen vorhanden...... |
AW: Memo Nummerierung
geht das auch wenn es in einer anderen Procedure ist?
|
AW: Memo Nummerierung
Was geht in einer anderen Procedure?
|
AW: Memo Nummerierung
Argh... hab es jetzt doch ganz einfach hinbekommen ... mit globale Variable.
Danke für eure Mühe. Werde das mit dem Position aber nochmal versuchen um es zu verstehen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:32 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-2025 by Thomas Breitkreuz