Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - 2 Memofelder miteinander vergleich; Zeilen markieren
Roboman - Di 18.07.06 13:24
Titel: 2 Memofelder miteinander vergleich; Zeilen markieren
Hallo Leute,
ich hab mal wieder ein Problem. Ich habe zwei Memofelder die ich miteinander vergleiche und nun sollen die Zeilen die unterschiedlich sind markiert werden nach dem Vergleich. Aber wie? Habt ihr ne Ahnung wie dasgeht?
Gruß aus der Eifel
jasocul - Di 18.07.06 13:26
Mit Memos würde ich das nicht machen.
Nimm zwei Listboxen und nutze die Eigenschaft MultiSelect. Sowas kennt TMemo nämlich nicht.
Roboman - Di 18.07.06 14:44
Hi, danke für den Hinweis,
jetzt hab ich alles mit den Memofeldern gemacht und müsste das komplette Programm ummodulieren, aber danke, fürs nächste Mal weiß ich dann bescheid.
Also, wie ich den Text per Mouse-Click markiere weiß ich, aber jetzt müsste das doch auch gehen, dass wenn beide Memo-Felder miteinander Zeile für Zeile miteinander vergleiche, das die unterschiedlichen Zeilen irgendwie markiert oder in einer andern Farbe sind.
JayEff - Di 18.07.06 15:31
Eine Farmbarkierung geht nicht mit dem Memo. Da wirst du das TRichEdit brauchen. kannst du aber meines wissens ziemlich genau wie ein Memo verwenden, wirst deinen Quelltext also kaum ändern müssen.
Roboman - Di 18.07.06 18:07
Danke für den Hinweis.
Werde alles mal ausprobieren.
Roboman - Mi 19.07.06 10:12
Titel: RichEdit1 und RichEdit2 vergleichen; Unterschied markieren
Hallo Leute,
also, ich sitze immer noch dran, aber irgendwie funzt es nicht. Hab den Titel mal geändert. Also, vielleicht hab ich mich auch nicht korrekt ausgedrückt. Ich vergleiche jetzt zwei RichEdit-Felder miteinander und die Zeilen die unterschiedlich sind sollen in einer anderen Farbe dargestellt werden. Habt ihr ne Ahnung wie ich das realisieren kann?
Hab schon von Memo auf RichEdit umgestellt, war kein großer Akt. Die unterschiedlichen Zeilen werden erkannt aber wie zum Henker kann ich die Farben der unterschiedlichen Zeilen ändern. Kurze Beispiel:
RichEdit1 RichEdit2
P1:=10 P1:=10
P2:=12 P2:=11
P3:=15 P3:=15
P2 ist unterschiedlich und die Zeile sollte in beiden RichEdits dann z. B. rot markiert sein, aber wie? Mensch, schon 30°C und das Thermometer soll noch weiter steigen.
Wünschen allen noch einen schönen Tag und ne Klimaanlage in der Nähe. ;)
Sy- - Mi 19.07.06 10:58
Du musst mit den Zeichen arbeiten, dh: du musst erstmal ausrechenen, wo die zeile anfängt und wo sie enden
Delphi-Quelltext
1: 2: 3:
| rich.SelStart:=0; rich.Sellength:=10; rich.SelAttributes.Color:=clblue; |
ausrechenen kannste es mit hilfe von:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| anfang:=0; ende:=0; for i := 0 to deineZeile do begin if(i=deineZeile)then ende:=length(rich.lines[i]); else anfang:=anfang+length(rich.lines[i]); end; |
Code ist ungetestet
digi_c - Mi 19.07.06 11:00
Da es schon heiß ist mach ichs kurz
RICHEDIT ZEILE FORMATIEREN ;)
Aber checke deinen Algo nochmal durch, das ist nicht so trivial. Du musst immer komplett durchgehen. Ansonsten kann es zu Problemen kommen falls irgendwo mal eine Zeile fehlt oder eine ganz neue drin ist. Besonders lustig wird das ganze natürlich erst bei Baumstrukturen, sowas durfte ich machen, für einen Vergleich von zwei Verzeichnissen, dann geht das Ganze nämlich noch auf rekursives Level :-(
Roboman - Mi 19.07.06 13:44
Servus Leute,
hab hinbekommen, vielen Dank für die Anregungen! Die Lösung ist zwar ein wenig umständlich und für viele wohl die meisten wohl einfach nur grauenhaft!! :oops:
Hier meine Vorgehensweise :
Ich habe insgesamt zigtausend Editfelder (brauche ich auch alle), die sollen alle in eine txt-Datei. Mach ich über zwei Memo-Felder, da ich auch ne Anzeige brauch zum Ausdrucken usw.
Ich lade jetzt je eine txt-Datei in ein Memo hinein und schreibe diese dann Zeile für Zeile in ein RichEdit. Dabei wird direkt verglichen ob sie identisch sind oder nicht und dementsprechend kommt die Formatierung dann dran. Passt, klappt, mehrfach getestet, bin zufrieden (nicht ganz - hätte es gerne eleganter gelöst, aber es funktioniert) Wenn die Zeit gekommen ist, wird dieser Teilbereich überarbeitet.
So, jetzt ab erst mal in nen Biergarten und ne schöne kühle Cola genießen.
Vielen Dank an alle die mich hier beraten haben. :beer:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!