![]() |
AW: Rundenzähler für mehrere Läufer (Delphi 7 Prof)
@Blackfin:
Danke für den Link und deinen Tipp, habe aber wahrscheinlich eine bessere Lösung gefunden: ![]() Ich würde gerne die Liste (TListView) als Excel-Tabelle exportieren Kann man das wie in dem oberen Link beschrieben machen??? Könnte mir jemand kurz schreiben welche Variablen ich in der procedure ersetzten muss?!:
Delphi-Quellcode:
SOll ich unter (T)FileName den Namen der Excel-Tabelle inkl. Pfad angeben??
procedure SaveFile(const FileName: TFileName;
const content: string); begin with TFileStream.Create(FileName, fmCreate) do try Write(Pointer(content)^, Length(content)); finally Free; end; Ist TFileStream := TListView??? Gruß JIP |
AW: Rundenzähler für mehrere Läufer (Delphi 7 Prof)
Nee, also so einfach kannst du ein Excel-Format (XLS) nicht schreiben, das kann Delphi nicht "out of the box" :)
Willst du XLS schreiben, brauchst du entweder eine Komponente, die das kann (kostet meist was), oder du schreibst dir das selbst (sehr aufwändig und ziemlich komplex). Alternativ-Vorschlag: Ich würde die Reihen und Spalten des TListView mit einem TFileStream in eine CSV-Datei schreiben, die kannst du dann ganz leicht ins Excel importieren. Dazu gehst du einfach Zeile für Zeile durch und schreibst den Inhalt der Zellen einfach raus. Wie eine CSV-Datei aufgebaut ist, findest du hier ![]() Zitat:
Die haben erstmal nichts gemeinsam.... |
AW: Rundenzähler für mehrere Läufer (Delphi 7 Prof)
Delphi-Quellcode:
so erzeuge ich jetzt meine Liste....
procedure TForm1.LEditKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if (key = 13) then begin Stream:= TFileStream.Create('.\Liste.csv', fmCreate); try Stream.WriteComponent(EventView); finally Stream.Free; end; end; end; Nun hab ich aber das Problem, dass ich nicht nur die Tabelle, sondern auch die Eigenschaften etc. dadrin stehen habe Gibt es da noch ne elegantere und genauso einfache Lösung? P.S.: Zitat:
Leider ist mir die Geschichte mit der Excel-Anwendung im Hintergrund etwas zu kompliziert. |
AW: Rundenzähler für mehrere Läufer (Delphi 7 Prof)
Guten Abend,
wenn Du "nur" die Captions der ListView abspeichern willst. Würde ich das mit einer StringList erledigen.
Delphi-Quellcode:
Grüße
procedure TForm1.Button1Click(Sender: TObject);
var sl : TStringList; i: Byte; begin sl := TStringList.Create; try for i:=0 to listView1.Items.Count -1 do sl.add(listView1.Items[i].caption); sl.SaveToFile('.\Liste.csv'); finally sl.free; end; end; Klaus |
AW: Rundenzähler für mehrere Läufer (Delphi 7 Prof)
Liste der Anhänge anzeigen (Anzahl: 1)
Guten Morgen,
Mhh irgendwas stimmt da bei mir noch nicht. Also soweit ich das beurteile kann ist das ganze an sich nicht schlecht, würd es den bei mir funktionieren :) Werd noch ein bissen rumprobieren, vielleicht find ich ja noch die Lösung. Gruß JIP |
AW: Rundenzähler für mehrere Läufer (Delphi 7 Prof)
Problem teils gelöst:
i kann nicht als Byte sondern nur als Integer gesetzt werden Nun habe ich aber noch das Problem, das zwar die Läufernummer, aber nicht die Rundenzahl in die Datei geschrieben wird :cry: Die Caption sollte wenn möglich als Tabelle gespeichert werden. Nochmal Gruß J!P |
AW: Rundenzähler für mehrere Läufer (Delphi 7 Prof)
Hallo J!P,
wie ist denn Deine EventView aufgaut? LäuferNr Rundenzahl Grüße Klaus |
AW: Rundenzähler für mehrere Läufer (Delphi 7 Prof)
Zitat:
Gruß J!P |
AW: Rundenzähler für mehrere Läufer (Delphi 7 Prof)
Hi J!P,
hat etwas länger gedauert... Grüße Klaus
Delphi-Quellcode:
// befüllen des ListView
procedure TForm1.Button1Click(Sender: TObject); var item:TListItem; i: Byte; begin ListView1.Columns[0].Caption:='Läufer'; ListView1.Columns[1].Caption:='Runde'; for i:=0 to 5 do begin item := ListView1.Items.Add; item.Caption:='Alice'+IntTostr(i);; item.SubItems.Add(intToStr(i)); end; ListView1.Items[0].SubItems[0]:='123'; end; //auslesen des ListView procedure TForm1.Button2Click(Sender: TObject); var i,j: Byte; sl : TStringList; s : AnsiString; begin sl := TStringList.Create; try for i:= 0 to ListView1.Items.count -1 do begin s:= ListView1.Items[i].Caption; for j:= 0 to ListView1.Items[i].SubItems.Count -1 do s:= s+' ; '+ ListView1.Items[i].SubItems[j]; sl.add(s); end; //Anzeigen des ListView Inhalt in einem TMemo Memo1.lines.Assign(sl); finally sl.free; end; end; end. |
AW: Rundenzähler für mehrere Läufer (Delphi 7 Prof)
Moment.... das ist doch nicht zum abspeichern der Tabelle, sondern zum erstellen eines TListView.
Dass habe ich ja schon. Hier mal der komplette Code:
Delphi-Quellcode:
nun habe ich aber das Problem, das der Code den du mir zuvor geschrieben hast nicht beide Spalten in die Datei schreibt.....
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, ExtCtrls; type TForm1 = class(TForm) EventView: TListView; Label1: TLabel; LEdit: TEdit; procedure LEditKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure InsertOrUpdateRunner(RunnerNumber: string) ; procedure LEditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; Stream: TFileStream; sl : TStringList; i: Integer; o: Integer; Laeuferfeld: Record Laeufernummer, Runde: Integer; end; implementation {$R *.dfm} procedure TForm1.InsertOrUpdateRunner(RunnerNumber: string) ; var i: Integer ; FFound : boolean ; FNewround : Integer ; begin FFound := false ; for i := 0 to (EventView.Items.Count -1) do begin if(EventView.Items[i].Caption = RunnerNumber) then begin FNewround := StrToInt(EventView.Items[i].SubItems[0]) + 1 ; EventView.Items[i].SubItems[0] := IntToStr(FNewround) ; FFound := true; break ; end; end; if (not FFound) then begin with EventView.Items.Add do begin Caption := RunnerNumber ; Subitems.Add('1') ; end; end; end; procedure TForm1.LEditKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if(Key = 13) then begin InsertOrUpdateRunner(LEdit.Text); LEdit.Text:=' '; end; end; procedure TForm1.LEditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (key = 13) then begin sl := TStringList.Create; try for i:=0 to EventView.Items.Count -1 do sl.add(EventView.Items[i].caption); sl.SaveToFile('.\Liste.csv'); finally sl.free; end; end; end; end. Gibt es da noch eine Möglickeit das zu verbessern? Gruß J!P |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:06 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