![]() |
Textdatei in Stringgrid
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo !
Ich möchte eine Textdatei in ein Stringgrid einlesen, soweit kein Problem. Aber wie kann ich nach eigenem Ermessen festlegen, welcher Textbaustein in welche Zelle gehören soll ? Es gibt in Excel die Möglichkeit, Daten zu Importieren, nun kann man im Assistenten die Spalten(-breite) selbst festlegen (siehe Bild im Anhang). Wenn ich die Länge der Zeichen habe, ist dies ja kein Problem, nur wie lege ich die Spaltenbreite fest ? Gibt es eine Komponente (Listbox o. ä.) wie im Bild, in der man die Anzahl der Zeichen anzeigen und dann per Klick festlegt, bis hierhin ist Spalte1, bis hierhin ist Spalte2 usw. ? Es gibt diese TxtDatasetDemo die genau so einen Assistenten darstellt, nur leider fehlt hierzu die nötige Komponente. Kann mir jemand weiter helfen ? Gruß Matthias |
Re: Textdatei in Stringgrid
Hi,
Delphi-Quellcode:
gibt dir die Länge des Textes in Pixeln zurück. Wenn du nun eine Festbreitenschrift verwendest(solltest du ;) ), kannst du damit die einzelnen Breiten herausfiltern und passend setzen.
Canvas.TextWidth()
Gruß |
Re: Textdatei in Stringgrid
Hallo,
danke für die Antwort ! Aber wenn ich das richtig sehe, gibt mir Canvas.TextWidth() die gesamte Länge des Strings in Pixeln zurück, ich möchte aber die Länge bis zu dem Punkt, den ich anklicke ? Gruß Matthias |
Re: Textdatei in Stringgrid
ja, das stimmt. Aber wenn du eine Festbrewtien.-Schrift verwendest (zB Courier New) , dann sind ja alle Buchstaben gleichbreit und du kannst dir somit die anzahl der Buchstaben errechnen.
Gruß |
Re: Textdatei in Stringgrid
Ok, ich hab mich gerade ein wenig mit CaretPos beschäftigt und festgestellt, das dies wahrscheinlich eine sinnvolle Lösung ist, um die Spaltenlänge auszulesen.
Nun würde ich aber gern, genauso wie im angehängten Screen, das über dem Richedit eine Leiste vorhanden ist, die mir die Anzahl der Zeichen anzeigt, gibt es hierfür eine Komponente ? |
Re: Textdatei in Stringgrid
Moin,
das hilft dir zwar nicht wirklich weiter, aber ich würde es gut finden, wenn du die Bilder etc, als .jpg oder so anhängt, nen halbes MB BMP als Anhang macht leider wenig spass wenn man nicht die mega Leitung hat :-) Eine Komponente die ein Lineal oder ähnlich anzeigt fällt mir gerade net, ein schau sonst mal bei Torry... |
Re: Textdatei in Stringgrid
Moin f.siebler,
sorry, war mir gar nicht aufgefallen, das das Bild so groß ist, hab es nun als .gif angehangen :zwinker: danke für den Tipp, werd gleich mal nachschauen.... |
Re: Textdatei in Stringgrid
Zitat:
|
Re: Textdatei in Stringgrid
Hallo Hansa,
Zitat:
Gruß Matthias |
Re: Textdatei in Stringgrid
Dieses Lineal ist ja zumindest schon halbwegs im Stringgrid eingebaut. Verändern der Spaltenbreiten durch ziehen in der Überschriftszeile. Oder geht das nur zur Designzeit ? K.A., brauche das sowieso nicht. Solange nicht geklärt ist, was eine Textdatei in einem Stringgrid zu suchen hat, kommt wohl sowieso keine brauchbare Antwort.
Will ich in der 2. Spalte Strings unterbringen mit max. 25 Zeichen, dann geht das so :
Delphi-Quellcode:
Wie gesagt : die Schriftart interessiert nicht ! Egal welche, 25 Zeichen werden immer da rein passen, ohne was abzuschneiden.
sg.ColWidths [2] := 25 * (Font.Size + 1);
|
Re: Textdatei in Stringgrid
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,
im DF gab es vor kurzen auch eine Nachfrage nach so einer Komponente: ![]() |
Re: Textdatei in Stringgrid
Hallo Lannes,
danke, das ist schon fast genau das was ich suche. Du schreibst dort: Zitat:
Gruß Matthias |
Re: Textdatei in Stringgrid
Hallo,
was da genau zu ändern ist kann ich nicht hier auflisten, denn das Demo wurde nicht aus einem fertigen Projekt extrahiert. Es war dazu gedacht einen Ansatz aufzuzeigen. Aber mal so im Groben: Ich habe das StringGrid gewählt damit es direkt zur Vorschau, der durch den Anwender gewählten Trennung, dienen kann. Das DemoGrid besteht nur aus einer Spalte. Hat man nun Text der breiter als diese eine Spalte ist, muß man ihn über mehrere Spalten ausgeben, um scrollen zu können. Das StringGrid kann leider nur spaltenweise scrollen. --> Änderung 1, und nicht so einfach wie man zuerst denkt, den die Textausgabe beginnt im negativen Bereich und muss für jede Zelle in der Zeile ausgeführt werden, sobald eine Zelle neu gezeichnet werden muss/wird. Bei Mausklick wird der Abstand zum linken Rand gespeichert und ein Trennpfeil an der Stelle gezeichnet. Scrollt man nun, muss der nach links verschobene Bereich in den zu speichernden Abstand mit eingerechnenet werden, aber nicht bei der grafischen Ausgabe des Trennpfeils, denn die bezieht sich auf den Rand des StringGrids. --> Änderung 2 Bei Mausklick auf einen vorhandenen Trennpfeil, der Mauscklick löst ein Neuzeichen der Zelle aus, wird dieser Pfeil entfernt(besser gesagt, nicht neu gezeichnet) und an der Stelle das 1-pixelbreite Panel eingeblendet, damit man die Trennung per Maus optisch verschieben oder entfernen kann(aus dem Grid rausziehen). --> Änderung 3, denn auch hierbei Berücksichtigung der aus dem Blickfeld gescrollten Spalte(n) bei der Berechnung der Abstände/Koordinaten. Dann fehlt noch die eigentliche Trennung des Textes und die Übergabe an das Zielgrid. Das sind so die wesentlichen Änderungen die mir einfallen, aber wie das immer so ist, so manche Änderung erzeugt neuen Änderungsbedarf. :roll: Eventuell lohnt es sich auch mal über eine Realisierung mittels PaintBox und Scrollbox nachzudenken. Ich hoffe den Aufwand annähernd richtig beschreiben zu haben und es einigermaßen verständlich ist. :? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:40 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