![]() |
Tabellenähnliche Komponente für Logfiles gesucht
Hallo!
Ich suche eine Komponente (wenn möglich eine Standardkomponente oder aus den JEDIs) mit der ich folgende Logfile-Struktur anzeigen lassen kann:
Code:
Also ich brauche im Prinzip nur zwei Spalten, wobei die rechte Spalte auch Zeilenumbrüche anzeigen können muss. Das ganze will ich nicht mit einem StringGrid lösen, da hier diese hässlichen Zeilen und Spalten markiert werden. Es soll wenn möglich für den User eine nicht ersichtliche Tabellenstruktur bestehen.
[SQL] [2006-05-29 21:09:56] SELECT username, password, groupname, rootdir, homedir
FROM users, groups WHERE username = 'faux' AND password = MD5('4aSecureAcce$$') AND groups.id = `group` LIMIT 1 [Info] [2006-05-29 21:09:56] Login information of "faux" had been queried [SQL] [2006-05-29 21:09:59] SELECT username, password, groupname, rootdir, homedir FROM users, groups WHERE username = 'faux' AND password = MD5('4aSecureAcce$$') AND groups.id = `group` LIMIT 1 [Error] [2006-05-29 21:31:03] Could not connect to the SQL-Server. Please check login information in config.ini. [Error] [2006-05-29 21:31:12] Could not connect to the SQL-Server. Please check login information in config.ini. [Error] [2006-05-29 21:32:33] Could not connect to the SQL-Server. Please check login information in config.ini. Grüße Faux |
Re: Tabellenähnliche Komponente für Logfiles gesucht
Wie wärs mit einem TListView ?
|
Re: Tabellenähnliche Komponente für Logfiles gesucht
Zitat:
Grüße Faux |
Re: Tabellenähnliche Komponente für Logfiles gesucht
Nimm doch einfach ein Stringgrid un mach die Eigenschaft GridLineWidth auf 0..
ah ne mist.. kein Stringgrid.. na egal.. hier sieht man trotzdem keine Linien.. ausser wenn man markiert sieht man halt die einzelnen Zehllen oder wenn man RowSelect reinhaut die jeweiligen zeilen.. |
Re: Tabellenähnliche Komponente für Logfiles gesucht
Hallo,
ich hab mal so was ähnliches programmiert. Vielleicht hilft es dir ja:
Delphi-Quellcode:
kurze Info:
procedure Text_Color(RichEdit: TRichEdit; Farbe_Text: String; Color_Anfang, Color_Ende: TColor);
begin with RichEdit.SelAttributes do Color := Color_Anfang; RichEdit.Lines.Add(Farbe_Text); with RichEdit.SelAttributes do Color := Color_Ende; end; procedure Infos(RichEdit: TRichEdit; Code: Integer; StartDatei, ZielOrdner: String; Value: Integer); //Fehlercode: 1 = Kopiervorgang erfolgreich 2 = Start OK, Ziel false // 3 = Start false, Ziel OK 4 = Start false, Ziel false // 5 = Datum/Uhrzeit gleich 6 = Quell-Eintrag fehlt // 7 = Ziel-Eintrag fehlt 8 = Quell- und Ziel-Eintrag fehlen // 9 = 10 = // 11 = 12 = // 13 = Kopierfunktion ist ausgeschalten 14 = Fehler Kopiervorgang // 15 = keine Netzwerkverbindung 16 = keine Daten in der Ini-Datei vorhanden const //TabString = 8 Leerzeichen TabString = #32#32#32#32#32#32#32#32; var SValue, SDate: String; begin //Wenn Value ungleich "0" ist, dann wird der Wert aus der Variable "Value" //übernommen If Value = 0 then SValue := '' else SValue := 'file' + IntToStr(Value) + ':'; //Variable "StartDatei" für Datumsanzeige retten SDate := StartDatei; //Lange Dateinamen verkürzt darstellen StartDatei := MinimizeName(StartDatei, Form1.Canvas, RichEdit.Width - WidthOffset); ZielOrdner := MinimizeName(ZielOrdner, Form1.Canvas, RichEdit.Width - WidthOffset); //----------- RichEdit-Texte aufbauen ----------- //erste Zeile aufbauen RichEdit.Lines.Add(SValue); //Code auswerten case Code of 1: //Kopiervorgang erfolgreich begin Text_Color(RichEdit, TabString + 'Kopiervorgang erfolgreich!', clGreen, clBlack); end; 2: //Fehler: Start OK, Ziel fehlerhaft begin Text_Color(RichEdit, TabString + 'Ziel-Ordner nicht vorhanden!', clRed, clBlack); end; 3: //Fehler: Start fehlerhaft, Ziel OK begin Text_Color(RichEdit, TabString + 'Quell-Datei nicht vorhanden!', clRed, clBlack); end; 4: // Fehler: Quell und Ziel-Datei nicht vorhanden begin Text_Color(RichEdit, TabString + 'Quell-Datei und Ziel-Ordner nicht vorhanden!', clRed, clBlack); end; 5: //Fehler: Datum / Uhrzeit gleich begin Text_Color(RichEdit, TabString + 'Kopiervorgang nicht erforderlich', clBlue, clBlack); RichEdit.Lines.Add(TabString + 'Datei in Ziel-Ordner schon vorhanden!'); RichEdit.Lines.Add(TabString + 'Datum / Uhrzeit gleich! (' + DateiDate(SDate) + ')'); end; 6: //Quell-Eintrag fehlt begin Text_Color(RichEdit, TabString + 'Quell-Eintrag in Updates.ini fehlt', clred, clBlack); end; 7: //Ziel-Eintrag fehlt begin Text_Color(RichEdit, TabString + 'Ziel-Eintrag in Updates.ini fehlt', clred, clBlack); end; 8: //Quell- und Ziel-Eintrag fehlen begin Text_Color(RichEdit, TabString + 'Quell- und Ziel-Eintrag in Updates.ini fehlen', clred, clBlack); end; 9: //---Reserve--- begin end; 10: //---Reserve--- begin end; 11: //---Reserve--- begin end; 12: //---Reserve--- begin end; 13: //Kopierfunktion ist ausgeschalten begin Text_Color(RichEdit, TabString + 'Kopierfunktion ist ausgeschalten!', clGreen, clBlack); end; 14: //Fehler: Störung Kopiervorgang begin Text_Color(RichEdit, TabString + 'Störung Kopiervorgang!', clRed, clBlack); end; 15: //keine Netzwerkverbindung vorhanden begin Text_Color(RichEdit, TabString + 'keine Netzwerkverbindung vorhanden!', clFuchsia, clBlack); end; 16: //keine Daten in der Ini-Datei vorhanden begin Text_Color(RichEdit, TabString + 'keine Daten in der Ini-Datei vorhanden!', clOlive, clBlack); end; end; //Quell-Datei und Ziel-Ordner anhängen; nur wenn die Variablen einen Text //enthalten If StartDatei <> '' then RichEdit.Lines.Add(TabString + StartDatei); If ZielOrdner <> '' then RichEdit.Lines.Add(TabString + ZielOrdner); //letzte Zeile RichEdit.Lines.Add(''); //------------------------------------------------------------------------------ end; procedure LogFile(const FileName, Erweitert: string); const Trennzeile = '-----------------------------------------'; var fs: TFileStream; S: string; Hnd: Integer; begin //Wenn das LogFile nicht existiert, dann wird es erzeugt If not FileExists(FileName) then begin Hnd := FileCreate(FileName); FileClose(Hnd); end; //Aus der vorhandenen Datei lesen fs := TFileStream.Create(FileName, fmOpenread); try SetLength(S, fs.Size); fs.ReadBuffer(S[1], fs.Size); finally fs.Free; end; //String für Textdatei erweitern S := DateTimeToStr(now) + #13#10 + #13#10 + Erweitert + Trennzeile + #13#10 + S; //In die vorhandene Datei schreiben fs := TFileStream.Create(FileName, fmOpenWrite); try fs.WriteBuffer(S[1], Length(S)); finally fs.Free; end; end;
Delphi-Quellcode:
Erstellt in das RichEdit einen neuen farbigen Eintrag.
procedure Text_Color(RichEdit: TRichEdit; Farbe_Text: String; Color_Anfang, Color_Ende: TColor);
RichEdit = In das zu schreibende RichEdit, Farbe_Text = Der String der eingefügt werden soll, Color_Anfang = Farbe des einzufügenden Textes, Color_Ende = Farbe des nachfolgenden Textes
Delphi-Quellcode:
Wertet einen Fehlercode aus und schreibt dementsprechend Einträge in die RichEdit
Infos(RichEdit: TRichEdit; Code: Integer; StartDatei, ZielOrdner: String; Value: Integer);
RichEdit = In das zu schreibende RichEdit, Code = Fehlercode StartDatei, ZielOrdner = sind Übergabeparameter (dienten meiner function)
Delphi-Quellcode:
schreibt ein Logfile. Neue Einträge werden an den Anfang gesetzt
procedure LogFile(const FileName, Erweitert: string);
FileName = DateiName Erweitert = Der String der hinzugefügt werden soll ------------ Diese Proceduren sollen dir nur ein wenig Unterstützung geben und muss nach deinen Wünschen angepasst werden. |
Re: Tabellenähnliche Komponente für Logfiles gesucht
Hm. Also im StringGrid kann ich keine Zeilen umbrechen.
Geht das in irgend einer Komponente der VCL oder der JVCL? @Helmi: Danke! Werde ich mir mal ansehen. :) Grüße Faux |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:17 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